使用属性集设置样式的样式很简单:E[attr]
。
有没有办法根据缺少属性来使用CSS2设置元素样式,如E[!attr]
? (JavaScript解决方案不是一种选择)。
例如,有几个类规则后跟id规则:
.abc {padding:1em;}
.def {padding:2em;}
#n a {padding:0;}
html代码是:
<div id="n"><a href="" class="abc">.</a><a href="" class="def">.</a></div>
类abc
和def
对id-ed规则具有较低的优先级,因此a
都有填充0.我无法更改上面的规则序列,但我可以更改id -ed规则添加我自己的规则。我想避免为每个班级编写像#n a.abc
这样的规则(有很多)。相反,我需要像#n a[!class]
这样的内容来保持所有类a
的完整性。
答案 0 :(得分:3)
可悲的是,不是在CSS2中。您可以做的最好是级联您的声明:
E {color: red}
E[attr] {color: blue}
但即使这样也不能真正依赖,因为IE6不尊重属性选择器。
在CSS3中,有一个可爱的“:not”伪选择器(http://www.w3.org/TR/css3-selectors/#negation)。
修改
感谢您的澄清。怎么样:
.abc {padding:1em; !important} .def{padding:2em; !important}
#n a{padding: 1em}
答案 1 :(得分:0)
我不认为这可以在CSS2中完成。在CSS3中,您使用"not" syntax:
input:not([type="file"])