思無邪 (@Clarke.L) 在 0x1:层叠、优先级和继承 【CSS in Depth】 中发帖
废话不多说,正式开读。
层叠
CSS本质上就是声明规则,即在各种条件下,我们希望产生特定的效果。
当元素有这个类时,我们使用其中一个规则;当有多个类时,如何选择使用哪个规则?
层叠指的就是这一系列规则。它决定了如何解决冲突,是CSS语言的基础。
当声明冲突时,层叠会依据三种条件解决冲突:
样式表来源
选择器优先级
源码出现的顺序
1. 样式表来源
作者样式表:即你写的样式表
用户代理样式表:浏览器默认样式
其中作者样式表的优先级会高于用户代理样式表,因此你写的样式会覆盖掉默认样式。
在此之外,还有一个特别的 !important 声明。标记了!important的声明会被当作更高优先级的来源,因此它会高于作者样式表中其它规则。
2. 优先级
如果无法用来源解决冲突声明,浏览器会尝试检查它们的优先级。
通常浏览器会将优先级分为两部分:
行内样式
选...