这就是我的意思:
body.class1 div.class1 {
color: blue;
}
div.class1.class2 {
color: red;
}
<body class="class1">
<div class="class1 class2">
Hello
</div>
</body>
div.className.className2
具有最具体的元素,所以我认为这将优先考虑。但事实证明,添加父选择器优先于其他类名。
有人能指出我解释这种情况的规则吗?我似乎无法在网上轻松找到它。
答案 0 :(得分:3)
您似乎认为只有规则中最深层元素的成分才会计入特异性。这不正确,选择器中的每个元素/修饰符都会计算在内。
最具体的规则是body.class1 div.class1
,它有两个标记名称和两个类名。
div.class1.class2
也有两个类名(一个平局),但只有一个标签名称
div.class1.class2.class3
会赢,因为它有三个类名,类名总是比无数个标签名更有价值。