Jul. 26th 笔记 - 理解CSS (2)| 青训营笔记

Jul. 26th 笔记 - 理解CSS (2)

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

选择器的特异度(Specificity)

如果一个元素使用了多个选择器,那么这个元素会由哪一个选择器来控制便成了一个问题,所以,我们需要指定选择器优先级参数来确定相关因素。

  • 内联:1000
  • id: 100
  • 类、伪类: 10
  • 元素、伪元素:1
  • 通配:0
    举一个栗子:

第一个例子的特异度为100+2*10+2*1=122,第二个例子的特异度为2*10+2*1=22。

继承 & 初始值

某些属性会自动继承父元素的计算值,除非显性指定一个值。(类似于OOP)
相似的,每一个属性也都具有一个初始值,可以使用inital来恢复初始值。

CSS的求值流程

image.png

参考:juejin.cn/post/712467…

布局

image.png

  • 确定内容大小和位置的算法
  • 根据元素、容器 、兄弟节点和内容来计算

相关技术:

  • 常规流
    1. 行级
    2. 块级
    3. 表格布局
    4. FlexBox
    5. Grid
  • 浮动
  • 绝对定位

块级元素

image.png

  • 独占一行
  • 相关参数: width, height, margin(外边距,相对容器宽度), padding(内边框,顺时针,相对容器宽度)
  • 例:div, p, h, ul, ol 等

行级元素

  • 可以与其他行级共处一行或拆行
  • width,height不适用
  • 例: span, em, syrong, cite, code 等
  • inline-box 不会被拆成多行

常规流

常规流,即根元素、浮动、绝对定位之外的元素参加的流。

行级排版 - Inline Formatting Context (IFC)

只包含行级元素的容器会创建一个IFC。IFC排版规则:

  • 盒子在一行内水平摆放
  • 一行放不下,换行
  • 避开浮动元素

块级排版 - Block Formatting Context (BFC)

  • 根元素、浮动、绝对定位、inline-block
  • Flex、Grid 子项
  • overflow 非 visible
  • display: flow-root

Flex

  • CSS Flexible 布局允许容器内的响应式元素根据屏幕或设备大小自动排列
  • 可以控制各种属性:流向、顺序等

image.png

image.png

image.png

image.png

Grid

  • CSS Grid可以更轻松、更一致地跨浏览器创建复杂的响应式网页设计网格布局

image.png