浏览器通过优先级(也称为特殊性)来判断哪一些属性值与一个元素最为相关,从而在该元素上应用这些属性值。优先级是基于不同种类选择器组成的匹配规则。
选择符优先级:
!important
选择符 | 权重值 |
---|---|
行内样式 | [1,0,0,0] A |
ID 选择符 | [0,1,0,0] B |
类选择符、伪类选择符和属性选择符 | [0,0,1,0] C |
标签选择符和伪类对象选择符 | [0,0,0,1] D |
通配符、关系选择符和否定选择符 | [0,0,0,0] E |
继承样式 | 无权重值 |
[1,0,0,0] > [0,99,99,99]
从左往右逐个等级比较,前一个等级相等才往后比较;行内样式 > 内联样式表 > 外链样式表
。之所以有这样的错觉,是因为确实行间样式为第一等的权重,所以它的权重是最高的。而内联样式可能一般写在了外链样式引用了之后,所以覆盖掉了之前的;!important
当在一个样式生命中使用 !import
规则时,此声明将覆盖任何其他声明。
注意:使用 !important
是一个坏习惯,应该尽量避免,因为这破坏了样式表中的固有的级联规则 使得调试找 BUG 变得更加困难了。当两条相互冲突的带有 !important
规则的声明被应用到相同的元素上时,拥有更大优先级的声明将会被采用。
经验法则:
!important
!important
!import
!import