【问题标题】:Do CSS combinators add specificity to a CSS selector?CSS 组合器是否为 CSS 选择器添加了特异性?
【发布时间】:2018-12-10 01:08:51
【问题描述】:

mdn article about CSS specificity 声明:

通用选择器(*)、组合符(+、>、~、'')和否定伪类(:not())对特异性没有影响。 (但是,在 :not() 中声明的选择器可以。)

但是我的经验是组合器确实有效果,请看这个例子:

div > p {
  color: red;
}

p {
  color: green;
}
<div>
  <p>First Paragraph</p>
  <p>Second Paragraph</p>
</div>

所以上面的引用声称,CSS 组合器对特异性没有影响。如果该引用是正确的,那么它是什么意思,正如我的代码示例显示的相反?

【问题讨论】:

标签: html css css-selectors css-specificity


【解决方案1】:

您的 sn-p 中的问题是您在第一条规则中有两个选择器(div &gt; p),而在第二条规则中只有一个选择器(p),因此第一条规则更具体,所以文章是正确的。

请参阅下面的 sn-p 使用相同的 2 个选择器,但第一个具有组合器 &gt;,因为它们具有相同的特异性,后者将由于级联而适用。

div > p {
  color: red;
}

div p {
  color: green;
}
<div>
  <p>First Paragraph</p>
  <p>Second Paragraph</p>
</div>

您可以在下面查看div pdiv &gt; pp 的特异性

【讨论】:

  • 假设“CSS 选择器”和“CSS 规则”完全相同,您的回答可能会带来一些混乱。但是,知道上述规则/选择器的特殊性实际上是通过计算“简单选择器”的数量来定义的,这对理解有很大帮助。所以组合器只是不计入特异性声明数。您的回答给出了关键提示,引导我进入有用的 W3C 页面:w3.org/TR/2018/CR-selectors-3-20180130/#specificity
  • CSS 规则与 CSS 选择器不同。CSS 选择器是您选择的样式。CSS 规则是您的样式(包括选择器)-选择器和属性
猜你喜欢
  • 2011-05-03
  • 2013-01-14
  • 2013-09-26
  • 1970-01-01
  • 2010-12-28
  • 2016-03-29
相关资源
最近更新 更多