`body.className div.className`如何优先于`div.className.className2`?

时间:2017-01-10 19:34:17

标签: css css-specificity

这就是我的意思:

body.class1 div.class1 {
  color: blue;
}
div.class1.class2 {
  color: red;
}
<body class="class1">
  <div class="class1 class2">
    Hello
  </div>
</body>

div.className.className2具有最具体的元素,所以我认为这将优先考虑。但事实证明,添加父选择器优先于其他类名。

有人能指出我解释这种情况的规则吗?我似乎无法在网上轻松找到它。

1 个答案:

答案 0 :(得分:3)

您似乎认为只有规则中最深层元素的成分才会计入特异性。这不正确,选择器中的每个元素/修饰符都会计算在内。

  • 最具体的规则是body.class1 div.class1,它有两个标记名称和两个类名。

  • div.class1.class2也有两个类名(一个平局),但只有一个标签名称

  • div.class1.class2.class3会赢,因为它有三个类名,类名总是比无数个标签名更有价值。

https://specificity.keegan.st/

处试试