这是我参与「第四届青训营」笔记创作活动的的第3天
CSS的权重
当我们都选择了一个节点来渲染,但使用不同的选择器时,我们就需要根据选择器的权重来决定到底使用哪个样式。
简单来说规则有三条:
- !Importtant > 行内样式 > ID选择器 > 类选择器 > 标签 > 通配符 > 继承 > 浏览器默认属性
- 组合选择器则分别计算选择器权重的和进行比较
- 若权重相等,则使用更后面代码的样式
具体大家可以看推荐文章css选择器有哪些?优先级?哪些属性可以继承
CSS的继承
在CSS中,子元素会自动继承父元素的一些CSS效果,与父元素保持一致。
具体大家可以看推荐文章css中可继承和不可继承属性
CSS的初始值
CSS的求值过程
- 浏览器拿到HTML后解析生成DOM树,解析到CSS样式集合到一起叫样式规则
- filtering 对样式规则进行筛选,筛选到对应的元素节点,找到声明值
- cascading 对CSS优先级进行排序,选择出优先级最高的为层叠值
- defaulting 当层叠值为空,也就是没有设置样式时,继承父元素样式,若父元素也没有,则设置为初始值,形成不为空的指定值
-
resolving 将一些相对值进行转换,图片地址相对路径转为绝对,em转为px等,形成计算值
-
formatting 在resoving阶段百分比关键字不转换,在formatting进行转换,结合计算值形成真正的使用值
-
constraining 将小数等一些不能用的数值进行转换,转换为整数生成实际使用的值
-
这就是CSS求值的整个过程