The negation CSS pseudo-class, :not(X)
, is a functional notation taking a simple selector X as an argument. It matches an element that is not represented by the argument. X must not contain another negation selector.
:not(*)
matches any element which is not any element, so the rule will never be applied.foo:not(bar)
will match the same element as the simpler foo
. Nevertheless the specificity of the first one is higher.:not(foo){}
will match anything that isn't foo
, including <html>
and <body>
.
body :not(table) a
will still apply to links inside of a table, since <tr>
will match with the :not()
part of the selector.:not( <selector># ) { style properties }
p:not(.classy) { color: red; } body *:not(p) { color: green; }
Given the above CSS and the HTML below...
<p>Some text.</p> <p class="classy">Some other text.</p> <span>One more text<span>
You get output like this:
Specification | Status | Comment |
---|---|---|
Selectors Level 4 The definition of ':not()' in that specification. | Working Draft | Extends its argument to allow some non-simple selectors. |
Selectors Level 3 The definition of ':not()' in that specification. | Recommendation | Initial definition. |
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Basic support | 1.0 | 1.0 (1.7 or earlier) | 9.0 | 9.5 | 3.2 |
Extended arguments | No support | No support | No support | No support | No support |
Feature | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Basic support | 2.1 | 1.0 (1) | 9.0 | 10.0 | 3.2 |
Extended arguments | No support | No support | No support | No support | No support |
© 2005–2017 Mozilla Developer Network and individual contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/:not