【问题标题】:CSS :not selector doesn't workCSS :not 选择器不起作用
【发布时间】:2015-11-11 20:55:53
【问题描述】:

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

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

【问题讨论】:

  • 我真的很想知道为什么会这样。我测试过的每个浏览器都有相同的行为。我想它必须在规范中的某个地方。

标签: css selector


【解决方案1】:

我对这种行为感到惊讶,但 * 选择器适用于 所有内容,因此您还必须注意是否适用于父元素(如 body 和 html 标签本身)。

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

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

【讨论】:

  • *:not() 选择器之前添加* { color: #000; /* or whatever */ } 也可以。
  • 是否可以将 not 选择器应用于其中的所有子项?如果我想使用 nocolor 类更改 div 中的 p 标签的颜色,它不起作用
  • 使用@JosephMarikle 的评论
【解决方案2】:

你的选择器应该这样写:

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

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

在此处查看文档:MDN

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2012-01-28
      • 1970-01-01
      • 2016-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-19
      • 2012-07-11
      • 2012-01-12
      相关资源
      最近更新 更多