我尝试只选择父元素没有某个类的元素。
所以给出:
<ul class="foo">
<li class="one">one..</li>
<li class="two">two</li>
<li class="three">three</li>
</ul>
<ul>
<li class="one">one..</li>
<li class="two">two</li>
<li class="three">three</li>
</ul>
和css:
:not(.foo) .one {
color: red;
}
我希望只有一个'one'元素为红色。但两者都是。这是小提琴:http://jsfiddle.net/633fnovy/2/
答案 0 :(得分:2)
您正在使用一个涉及嵌套子级的空间分隔符。
如果您考虑一下,所有.one
元素都是body
的子元素,例如,:not(.foo)
应用更多特异性
ul:not(.foo) .one {
color: red;
}
&#13;
<ul class="foo">
<li class="one">one..</li>
<li class="two">two</li>
<li class="three">three</li>
</ul>
<ul>
<li class="one">one..</li>
<li class="two">two</li>
<li class="three">three</li>
</ul>
&#13;
答案 1 :(得分:1)
尝试添加直接后代选择器>
:
:not(.foo) > .one {
color: red;
}
&#13;
<ul class="foo">
<li class="one">one..</li>
<li class="two">two</li>
<li class="three">three</li>
</ul>
<ul>
<li class="one">one..</li>
<li class="two">two</li>
<li class="three">three</li>
</ul>
&#13;
答案 2 :(得分:0)
您的使用方式:
:not(.foo) .one {
color: red;
}
类似:
*:not(.foo) .one {
color: red;
}
您必须指定内容:
ul:not(.foo) .one {
color: red;
}
<ul class="foo">
<li class="one">one..</li>
<li class="two">two</li>
<li class="three">three</li>
</ul>
<ul>
<li class="one">one..</li>
<li class="two">two</li>
<li class="three">three</li>
</ul>