CSS进阶 | 青训营笔记

80 阅读2分钟

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

CSS的权重

当我们都选择了一个节点来渲染,但使用不同的选择器时,我们就需要根据选择器的权重来决定到底使用哪个样式。
简单来说规则有三条:

  1. !Importtant > 行内样式 > ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性
  2. 组合选择器则分别计算选择器权重的和进行比较
  3. 若权重相等,则使用更后面代码的样式

具体大家可以看推荐文章css选择器有哪些?优先级?哪些属性可以继承

CSS的继承

在CSS中,子元素会自动继承父元素的一些CSS效果,与父元素保持一致。
具体大家可以看推荐文章css中可继承和不可继承属性

CSS的初始值

image.png

CSS的求值过程

  • 浏览器拿到HTML后解析生成DOM树,解析到CSS样式集合到一起叫样式规则
  • filtering 对样式规则进行筛选,筛选到对应的元素节点,找到声明值
  • cascading 对CSS优先级进行排序,选择出优先级最高的为层叠值
  • defaulting 当层叠值为空,也就是没有设置样式时,继承父元素样式,若父元素也没有,则设置为初始值,形成不为空的指定值

image.png

  • resolving 将一些相对值进行转换,图片地址相对路径转为绝对,em转为px等,形成计算值

  • formatting 在resoving阶段百分比关键字不转换,在formatting进行转换,结合计算值形成真正的使用值 image.png

  • constraining 将小数等一些不能用的数值进行转换,转换为整数生成实际使用的值

  • 这就是CSS求值的整个过程

image.png