深入CSS | 青训营

101 阅读2分钟

深入CSS

1. CSS 选择器的特异度

CSS选择器的特异度:选择器特殊的程度。特异度值越高,优先级越高。

选择器按照特异度从高到底分为: !important(∞) > style=""行内样式(1000) > #id选择器(100) > .类(伪类、属性)选择器(10) > 标签选择器(1) > *通配符选择器(0)

组合选择器时,选择器的特异度就多个选择器的相加,例如div .app的特异度就是1+10=11。 **注:特异度比较是从高位比到低位,不会产生进位。**有11个标签选择器和一个类选择器的组合,他的特异度是10+11=1-11而不是21。

如果一个元素设置了多个特异度相同的样式,根据就近原则,会优先使用离元素最近的样式(一般是最后一个样式)

2. CSS 继承

某些属性会自动继承其父元素的计算值,除非显式指定一个值。一般和文字相关的属性都可以继承(例如:color),与盒模型相关的一些属性都是不可继承的(例如:width)。

出现样式继承时,继承下来的特异度为0,如果该元素没有直接选中,不管父元素特异度多高,子元素得到的特异度都是0。

显式继承

设置属性值为inherit关键字使得元素获取其父元素的计算值,实现继承。它可以应用于任何 CSS 属性,包括 CSS 简写。

*{
    box-sizing: inherit;
}

3. CSS 求值过程解析

初始值

  • CSS中,每个属性都有一个初始值
    • background-color的初始值为transparent
    • margin-left的初始值为0
  • 可以使用initial关键字显式重置为初始值
    • background-color:initial

image-20230729151337882.png

image-20230729151441467.png

image-20230729151503439.png

4. CSS 布局方式及相关技术

布局(Layout))是什么?

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

布局相关技术

  • 常规流
    • 行级
    • 块级
    • 表格布局
    • FlexBox
    • Grid布局
  • 浮动
  • 绝对定位