2009-12-16 43 views
0

使用屬性設置樣式元素很簡單:E[attr]未設置attr時使用CSS2設計樣式

是否有任何方式基於缺少屬性來設置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完好無損。

回答

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} 
+0

@graphicdivine謝謝。道歉,我沒有明確表達自己的位置。請看看更新後的帖子。上面的技巧很好,但對我來說不起作用。 – Alex 2009-12-16 16:04:47

+0

@graphicdivine謝謝!完全忘了這個 - 完美的工作! – Alex 2009-12-27 12:55:27

0

我不認爲這可以在CSS2中完成。在CSS3中,您將使用"not" syntax

input:not([type="file"]) 
+0

@jvenema謝謝,但我目前無法使用CSS3。 – Alex 2009-12-16 16:05:21