未设置attr时使用CSS2设置样式

时间:2009-12-16 15:23:33

标签: css css-selectors

使用属性集设置样​​式的样式很简单: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>

abcdef对id-ed规则具有较低的优先级,因此a都有填充0.我无法更改上面的规则序列,但我可以更改id -ed规则添加我自己的规则。我想避免为每个班级编写像#n a.abc这样的规则(有很多)。相反,我需要像#n a[!class]这样的内容来保持所有类a的完整性。

2 个答案:

答案 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"])