我很困惑为什么这个例子不起作用:
CSS:
p {
color: red;
}
div:not(.exclude) p {
color: green;
}
Run Code Online (Sandbox Code Playgroud)
HTML:
<div>
<div class="exclude">
<p>I should be red</p>
</div>
<div>
<p>I should be green</p>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
最终的结果是两者<p>都是绿色的,但我预计第一个是红色的.这是一个JSFiddle.
有趣的是,我找到了三种不同的方法来使它工作:
另一个奇怪的方法来打破它:
<div>围绕<section>此选择器仅适用于一个元素; 你不能用它来排除所有的祖先.例如,
body :not(table) a仍将应用于表内的链接,因为<tr>它将与:not()选择器的部分匹配.
这是有道理的,但我认为这不会发生在这里.由于它<div class="exclude">和它的直接子之间没有任何东西<p>,它应该触发规则而不管它嵌套在里面.我错过了什么?如果有人能帮助我理解这一点,我真的很感激.