CSS Selector不是元素类型的子元素?

bev*_*qua 65 css css-selectors css3

我想设置code不在a标签内的元素.

实现这一目标的最佳方法是什么?

code:not(a code)似乎根本不起作用,至少在Chrome上,尽管看起来应该如此

我也无法从控制台上工作.

我可以使用其他任何css方法吗?

Jos*_*ber 94

:not 不支持组合子选择器.

如果我们谈论其直接父母:

:not(a) > code
Run Code Online (Sandbox Code Playgroud)

否则在CSS中无法做到这一点.你必须覆盖它:

code {
    /* some styles */
}

a code {
    /* override previous styles */
}
Run Code Online (Sandbox Code Playgroud)

  • @Nico - 因为`:not(a)code`查找*不是'a`的任何祖先*,这总是正确的.`:not(a)> code`只查看直接父级. (29认同)
  • 出于好奇:我不知道为什么,但是`:不是(a)>代码`工作,而`:不是(a)代码`没有,任何想法为什么?(还是镀铬) (8认同)

Mag*_*ern 33

实际上,您应该能够使用您的代码,或者您可以使用通配符来选择所有不被选择的元素

code:not(a *) {
  font-weight: bold;
}
Run Code Online (Sandbox Code Playgroud)

代码笔

  • 例如,如果我想防止在某些容器内应用 CSS 重置,这实际上是可行的,也是最好的解决方案。谢谢! (3认同)
  • @MaciejKozieja `code` 匹配所有 `<code>` 元素,但是 `:not` 过滤掉与选择器 `a *` 匹配的所有元素,将它们从列表中排除。其余的,例如 `<p><code>` 将被设置样式。 (3认同)
  • 这绝对应该是选定的答案! (3认同)