CSS3中的否定伪类不适用于孩子的

时间:2014-05-18 14:24:34

标签: css css3 css-selectors

我正在尝试:不是伪类选择器,我希望页面上的所有内容都有蓝色,除了div = child>“pag”的孩子,所以我写道:

:not(.pag > p){
    color:blue;
}

<div class="pag">
                    <p>First</p>
                    <p>Second</p>
                    <p>Thirt</p>
                    <article>Blah blah blah</article>
 </div>

但它似乎无法奏效。有人能解释我为什么吗?

http://jsfiddle.net/Rc9pT/

1 个答案:

答案 0 :(得分:2)

如果简化选择器,它可以正常工作:

.pag > :not(p){
    color:blue;
}

JS Fiddle demo

虽然这个&#39;工作正常&#39;只有警告你必须使用这种方法为每个父子关系指定一个选择器;这可能会变得很麻烦。

我怀疑它的简单性需要:

  

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

A&#39;简单选择器&#39;定义为:

  

类型选择器,通用选择器,属性选择器,类选择器,ID选择器或伪类。

这似乎意味着任何包含组合器的选择器(例如空白区域,>+~等)都不简单&#39; ,不幸的是。

参考文献: