css属性层叠的时候考虑3点:继承,特殊性和来源。这里只看特殊性:
内联样式:1,0,0,0
id选择器:0,1,0,0
class选择器,属性选择器,伪类:0,0,1,0
元素选择器,伪元素:0,0,0,1
通配选择器:0,0,0,0
继承值:无特殊性
计算时特殊性就是简单的把各位上的数字相加,然后从第一位开始比较。只有前一位比较不出时才会比较下一位,换言之,0,1,0,0特殊性高于0,0,10,100。
通配选择器(*)的0,0,0,0特殊性高于无特殊性的继承值。
!important其实和特殊性无关,它属于重要声明。css层叠时,所有的重要声明和非重要声明会分开进行层叠。如果重要声明和非重要声明冲突,会应用重要声明的样式。