特殊性
1. 元素选择器、伪类及伪元素:优先级积分为1
2. 类选择器、属性选择符:优先级积分为10
3. ID选择器:优先级积分为100
4. style属性:优先级积分为1000
5. 其他,如通配选择器:优先级积分为0
重要性
!important关键字声明的属性是最高的
继承
想要了解继承如何工作,最简单方法是查看文档的树图。属性值会沿着树向下传播到后代元素,直到没有更多的后代元素继承这个值为止。元素不会把值向上传递到其祖先。一般的大多数框模型属性(margin,padding,background和border)都不能继承。继承的值没有特殊性,及没有优先级,甚至连0特殊性都没有。
对于通配选择符(*)的使用,由于继承没有特殊性,所以不加区分的使用通配选择器可能会存在短路继承的问题。
*{color:red;}
body{color:yellow;}
<body>
<p>body是p父元素,由于继承,所以文字是黄色,但是由于继承无特殊性,使用通配选择器,文字是红色的</p>
</body>
层叠
通过结合继承和特殊性将样式层叠在一起,CSS2.1的层叠规则:
1. 找出所有相关的规则,这些规则包含与一个给定元素匹配的的选择器。
2. 按显示权重对应到该元素的所有声明排序。标志!important的规则的权重高于没有!important标志的规则。按来源对应到给定的元素的所有声明排序。共有3种来源:创作人员,读者和用户代理。
按权重和来源排序
1) 读者的重要声明
2) 创作人员的重要声明
3) 创作人员的正常声明
4) 读者的正常声明
5) 用户代理声明
3. 按特殊性对应给定元素的所声明排序。
4. 按出出现顺序对应用到给定元素的所有声明排序。一个声明在样式表或文档中越后出现,它的权重就越大。如果样式表中有导入样式表,一般认为出现在导入样式表中的声明在前,主样式表中的声明在后。