层叠
声明冲突:同一个样式,多次同时应用到同一元素
层叠:解决声明冲突的过程,浏览器自动处理(权重计算)
1. 比较重要性
重要性从高到底:
作者样式表:开发者书写的样式
- 作者样式表中的!important样式(不要用,因为后面再修改样式时,很难覆盖了)
- 作者样式表中的普通样式
- 浏览器默认样式表中的样式
2. 比较特殊性
看选择器
总体规则:选择器选中的范围越窄,越特殊。
具体规则:通过选择器,计算出一个4位数 (x x x x)
- 千位:如果是内联样式记作:1,否则记作:0
- 百位:等于选择器中所有id选择器的数量
- 十位:等于选择器中所有类选择器、属性选择器、伪类选择器的数量
- 个位:等于选择器中所有元素选择器、伪元素选择器的数量
不用管进位问题,有人测试了不是10进位,是256进位,一般没有这个大的数字,所以只要按位比较即可,先比较千位,再比较百位,然后是十位,最后是个位
3. 比较源次序
代码书写靠后的胜出
应用
- 重置样式表
书写一些作者样式,覆盖浏览器的默认样式
重置样式表 -> 覆盖浏览器的默认样式
常见的重置样式表:normalize.css、reset.css、meyer.css
- 爱恨法则
link > visited > hover > active