如何计算CSS中的规则特异性?我知道基本的东西(1000代表风格,100代表id,10代表att / class等)然而,我仍然被简单的事情困住了太多次,例如:
这会是多少?
<div class="wrapper">
<div class="inner"></div>
</div>
.wrapper > div /* ??? */
.inner /* 10 */
显然应用了第一条规则。但它有多少?
答案 0 :(得分:2)
基本上,就像这样:
!important
样式始终覆盖所有其他样式,但在!important
样式中,特殊规则适用*
和继承的样式没有特异性点。此外,this site可能对您有用。它进一步解释了它。
在testing these rules for myself之后,我注意到这不完全正确。应用特异性的顺序仍然适用,但是通过这个测试,它实际上与这个点系统一起工作并不像我所知道的大多数站点一样。似乎更准确的是将样式放在“盒子”中。它仍将使用我上面列出的“盒子”的顺序,而是计算每个“盒子”,如果该组中有相同数量的选择器,请检查下一个。它会像这样工作:
!important
样式位于方框1中。这些样式会覆盖所有其他样式。如果有多个具有!important
规则的相同样式的声明,则会查看下一个最高框中的样式。所以基本上,如果我们在样式表的顶部有一个带有1个id选择器的样式,并且在具有10个以上类选择器的样式下面,那么带有id选择器的样式仍将适用。具有id选择器的样式在框3中“赢得了战斗”,因此忽略了更多的框。 specificity calculatorFabrícioMatté与之相关联的说明非常好。
PS:使用+
或>
或~
或任何其他运算符都不会影响特异性。这些样式具有完全相同的特异性(因此后者将适用):
div > span {color:red;}
div span {color:blue;}