检查下面的代码:
.aaa :not(.bbb) .ccc {
font-size: 20px;
color: #FF0000;
}
<div class="aaa">
<div>
<div>
<div class="bbb">
<div>
<div>
<div class="ccc">AQUI</div>
</div>
</div>
</div>
</div>
</div>
</div>
我希望匹配.aaa
的子元素但不是.bbb
的子元素的所有.ccc
元素。这意味着上面的代码不应该让AQUI单词变成红色,但无论如何它都会变成红色。我做错了什么?
发布于 2018-09-24 22:04:03
not(.bbb)
将匹配任何没有.bbb
类的div,在.aaa
和.ccc
之间有很多这样的类,这就是为什么文本是红色的。要做你想做的事情,你需要考虑两个选择器
.aaa .ccc {
font-size: 20px;
color: #FF0000;
}
/*we reset the style if children of .bbb*/
.bbb .ccc {
color: initial;
font-size:initial;
}
<div class="aaa">
<div>
<div>
<div class="bbb">
<div>
<div>
<div class="ccc">AQUI</div>
</div>
</div>
</div>
</div>
</div>
</div>
发布于 2018-09-24 22:02:49
实际上有一些元素不是.bbb
的-在本例中是.bbb
之前和之后的两个div。为了让它起作用,你需要更具体。您可以添加另一个类(本例中为zzz
),如果该类未与.bbb
组合,则将应用该规则。
.aaa .zzz:not(.bbb) .ccc {
font-size: 20px;
color: #FF0000;
}
<div class="aaa">
<div>
<div>
<div class="zzz bbb">
<div>
<div>
<div class="ccc">AQUI</div>
</div>
</div>
</div>
</div>
</div>
</div>
https://stackoverflow.com/questions/52481037
复制相似问题