Вот официальная документация для псевдо-класса CSS3 :not():
http://www.w3.org/TR/css3-selectors/#negation
и предлагаемые улучшения CSS Selectors Level 4:
http://dev.w3.org/csswg/selectors4/#negation
Я искал реализацию и поддержку браузера для :not(), но единственные примеры, которые я нашел, были с одним элементом или с прямым дочерним элементом элемента, например:
div *:not(p) { color: red; }
Приведенный выше пример работает, когда <p> является прямым дочерним элементом <div>, но он не работает, когда <p> является более отдаленным потомком <div>.
div :not(p) {
color: red;
}
<div>
<ul>
<li>This is red</li>
</ul>
<p>This is NOT</p>
<blockquote><p>This is red but is not supposed to be!</p></blockquote>
</div>