我正在尝试使用规范中定义的CSS3:not伪类。根据{{3}}:
否定伪类,:不是(X),是 一个简单的功能表示法 选择器(不包括否定 伪类本身)作为一个论点。 它代表了一个不是的元素 由其论点
表示
所以我希望能够做到这样的事情:
p:not(.class1, .class2)
但它似乎不适用于Safari或Firefox,它们应该完全支持这个选择器。
当参数是单个选择器时,它确实有效,例如:
以下是显示问题的示例:spec
p:not(.class1)
根据jsFiddle Example博文,该作者建议您应该能够指定多个选择器作为参数。
同样根据此this,Firefox,Safari和Chrome完全支持:not selector。
我是否误解了规范,或者浏览器实际上只对该选择器有部分支持吗?
答案 0 :(得分:10)
在CSS中,逗号(,
)分隔选择器。它不是选择器本身,因此不能在选择器内使用。因此,取决于您是否要将规则应用于
.class1
,段落不是.class2
,.class1
也没有class2
或.class1
和 .class2
它的
p:not(.class1), p:not(.class2) {
}
或
p:not(.class1):not(.class2) {
}
或
p:not(.class1.class2) {
}
:not
,例如,在这种情况下,有一个适用于所有p
的一般规则(具有您想要在{中设置的属性) {1}}规则)和适用于类的规则,并在必要时覆盖第一个规则的属性。
答案 1 :(得分:3)
答案 2 :(得分:3)
小心:
p:not(.class1), p:not(.class2) {
}
因为,它与调用p {}
相同(当你用“,”分隔时,它意味着联合)。第一个受影响的标签集(没有class1
类的p标签)联合第二个受影响的标签集(p标签没有class2
类)。