使用CSS,我如何选择除特定类及其后代之外的所有元素?
例如,我想在下面的代码中选择除.my-class
及其后代之外的所有元素。我试过:not(.my-class *)
,但它不起作用。
在我的项目中,有许多复杂的全局样式,很难解决所有问题。所以我无法编辑所有这些样式,因为@Michael_B已经回答了。我只是不想在.my-class
及其后代中应用这些样式而不进行大的更改。
<div>
<span>a</span>
<div>
<span>b</span>
</div>
<div class="my-class">
<span>c</span>
<div>
<span>d</span>
<div>
<span>e</span>
</div>
</div>
</div>
</div>
答案 0 :(得分:1)
单独使用CSS,在浏览器实现Selectors Level 4之前,我会说你需要多个选择器:
*:not(.my-class) {
color: red;
font-weight: bold;
}
.my-class * {
color: initial;
font-weight: normal;
}
&#13;
<div>
<span>a</span>
<div>
<span>b</span>
</div>
<div class="my-class">
<span>c</span>
<div>
<span>d</span>
<div>
<span>e</span>
</div>
</div>
</div>
</div>
&#13;
答案 1 :(得分:0)
您可以通过css将类显示修改为无。如果您想再次显示它们,请将显示更改为阻止。
<style>
.my-class{
display: none;
}
</style>
答案 2 :(得分:0)
*{/*styles that will be for all elements except the class and its descendents*/}
.class, .class *{/*reversing styles applied before*/}