CSS :not 选择器不起作用

CSS :not selector doesn't work

这可能是一个非常愚蠢的问题,但我无法让 :not 选择器在 css 中工作。我想为页面中的所有文本着色,除非它有一个名为 "nocolor" 的 class。这是代码,我没有看到问题:

*:not(.nocolor) {
    color: #f00;
}
<h2>Hello</h2>
<h2 class="nocolor">Hello</h2>

我对这种行为感到惊讶,但是 * 选择器适用于 所有东西 所以你还必须注意对父元素的应用(比如 body 和 html标记自己)。

您可以通过将 body 添加到选择器来修复它,如下所示:

body *:not(.nocolor) {
   color: red;
}

你的select或者应该这样写:

:not(.nocolor) {
    color: #f00;
}

删除“*”,这将 select 页面上的所有内容

在此处查看文档:MDN

这是因为 * 应用于每个元素,包括 body,它没有 .nocolor class.