CSS | 青训营笔记

66 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的第一天

CSS 是如何工作的

image.png

选择器 Selector

  • 找出页面中的元素,以便给他们设置样式
  • 使用多种方式选择元素
    • 按照标签名、类名或id·按照属性
    • 按照DOM树中的位置

通配选择器

* {样式}

标签选择器

label {样式}

id选择器

#id {样式}

类选择器

.class {样式}

属性选择器

[key = value] {样式}  
= 完全匹配
*= 包含
^= 开头
$= 结尾

伪类 (pseudo-classes)

  • 不基于标签和属性定位元素

  • 几种伪类

    • 状态伪类
    • 结构性伪类

image.png

选择器组

body, h1, h2, h3, h4, h5, h6, ul, ol, li {
  margin: 0;
  padding: 0;
}

[type="checkbox"], [type="radio"] {
  box-sizing: border-box;
  padding: 0;
}

颜色 - HSLA

Hue

色相(H)是色彩的基本属性, 如红色、黄色等; 取值范围是0-360。

Saturation

饱和度(S)是指色彩的鲜艳程度,越高约鲜艳;取值范围0-100%。

Lightness

亮度(L)指颜色的明亮程度;越高颜色越亮;取值范围是0-100%。

alpha 透明度

font-family使用建议

  • 字体列表最后写上通用字体族
  • 英文字体放在中文字体前面

CSS生效规则

CSS生效取决于选择器的特异度(Specificity)

image.png

CSS继承

某些属性会自动继承其父元素的计算值,除非显式指定一个值


<style>
  body {
    font-size: 20px;
  }
  p {
    color: blue;
  }
  em {
    color: red;
  }
</style>

输出结果:

image.png

显式继承

* {
  box-sizing: inherit;
}

html {
  box-sizing: border-box;
}

.some-widget {
  box-sizing: content-box;
}

块级元素 行内元素对比

块级元素行级元素
生成块级盒子- 生成行级盒子 - 内容分散在多个行盒 (line box) 中
body、article、div、main、section、h1-6、p、ul、li 等span、em、strong、cite、code 等
display: blockdisplay: inline

行级排版上下文

  • Inline Formatting Context (IFC)

  • 只包含行级盒子的容器会创建一个IFC

  • IFC 内的排版规则

    • 盒子在一行内水平摆放
    • 一行放不下时,换行显示
    • text-align 决定一行内盒子的水平对齐
    • vertical-align 决定一个盒子在行内的垂直对齐
    • 避开浮动(float)元素*

块级排版上下文

  • Block Formatting Context (BFC)

  • 某些容器会创建一个BFC

    • 根元素
    • 浮动、绝对定位、inline-block
    • Flex子项和Grid子项
    • overflow 值不是 visible 的块盒
    • display: flow-root;

BFC 内的排版规则

  • 盒子从上到下摆放
  • 垂直 margin 合并
  • BFC 内盒子的 margin 不会与外面的合并
  • BFC 不会和浮动元素重叠
<span>
  This is a text and
  <div>block</div>
  and other text.
</span>

<style>
  span {
    line-height: 3;
    border: 2px solid red;
    background: coral;
  }

  div {
    line-height: 1.5;
    background: lime;
  }
</style>

输出结果:

image.png

Flex Box

  • 一种新的排版上下文

  • 它可以控制子级盒子的:

    • 摆放的流向 ( →  ←  ↑  ↓ )
    • 摆放顺序
    • 盒子宽度和高度
    • 水平和垂直方向的对齐
    • 是否允许折行