思無邪 (@Clarke.L)0x1:层叠、优先级和继承 【CSS in Depth】 中发帖

废话不多说,正式开读。 
层叠

CSS本质上就是声明规则,即在各种条件下,我们希望产生特定的效果。

当元素有这个类时,我们使用其中一个规则;当有多个类时,如何选择使用哪个规则?
层叠指的就是这一系列规则。它决定了如何解决冲突,是CSS语言的基础。

当声明冲突时,层叠会依据三种条件解决冲突:

样式表来源
选择器优先级
源码出现的顺序


1. 样式表来源

作者样式表:即你写的样式表
用户代理样式表:浏览器默认样式

其中作者样式表的优先级会高于用户代理样式表,因此你写的样式会覆盖掉默认样式。
在此之外,还有一个特别的 !important 声明。标记了!important的声明会被当作更高优先级的来源,因此它会高于作者样式表中其它规则。
2. 优先级

如果无法用来源解决冲突声明,浏览器会尝试检查它们的优先级。

通常浏览器会将优先级分为两部分:

行内样式
选...