嵌套在css:not()选择器中

Jen*_*ift 12 css css-selectors css3

是否可以在:not selector中包含嵌套值?例如:

:not(div > div)
Run Code Online (Sandbox Code Playgroud)

每当我尝试它,它似乎不起作用.也许你需要以另一种我没想过的方式使用它?到目前为止,在我看到的所有示例中,您只能在此选择器中使用一个值.

Bol*_*ock 16

:not()一次只接受一个简单的选择器; 这在选择器3规范中提到:

否定伪类:not(X)是一个函数符号,它将一个简单的选择器(不包括否定伪类本身)作为参数.它表示一个未由其参数表示的元素.

示例中的简单选择器将是div您拥有的两个令牌.其他简单的选择器包括类选择器,ID选择器,属性选择器和伪类.它不接受多个简单的选择器,也不接受类似>或空间的组合器.

根据您尝试精确选择的元素,可能无法排除div > div:

如果你想单独使用这个否定,选择所有其他元素,那么就没有办法只使用选择器.

我能想到的CSS中唯一可行的解​​决方法是在没有:not()表达式的情况下将样式应用于所需的元素,然后撤消它们div > div.这适用于您尝试定位的任何元素集; 缺点是并非所有属性都可以轻松重置.

另外,如果你使用jQuery,它不支持:not(div > div) 不同的CSS版本,您可以将选择在脚本中和,例如,已经jQuery的应用类名的那些元素,然后针对你的CSS类.

  • 如果可以在选择器中使用逗号,则 `:not(div), :not(div) > div` 可能会选择与 `div > div` 不匹配的所有内容。 (2认同)