如何select“A”类而不是“B”类的div?

我有一些divs:

<div class="A">"Target"</div> <div class="AB">"NotMyTarget"</div> <div class="AC">"NotMyTarget"</div> <div class="AD">"NotMyTarget"</div> <div class="AE">"NotMyTarget"</div> 

有没有一个CSSselect器,会让我包含Target的div,而不是包含NotMyTarget的div?

解决scheme必须在IE7,IE8,Safari,Chrome和Firefox上运行

编辑:到目前为止尼克是最接近的。 这是笨拙的,我不喜欢的解决scheme,但至less它的作品:

 .A { /* style that all divs will take */ } div.B { /* style that will override style .A */ } 

您可以使用属性select器来匹配只有一个类的div

 div[class=A] { background: 1px solid #0f0; } 

如果你想select另一个具有多个类的div ,使用引号:

 div[class="AC"] { background: 1px solid #00f; } 

某些浏览器不支持属性select器语法。 像往常一样,“一些浏览器”是IE 6及以上的委婉说法。

另见: http : //www.quirksmode.org/css/selector_attribute.html

完整的例子:

 <!DOCTYPE html> <html> <head> <style> .A { font-size:22px; } .B { font-weight: bold; border: 1px solid blue; } .C { color: green; } div[class="A"] { border: 1px solid red; } div[class="AB"] { border: 3px solid green; } </style> </head> <body> <div class="A">"Target"</div> <div class="AB">"NotMyTarget"</div> <div class="AC">"NotMyTarget"</div> <div class="AD">"NotMyTarget"</div> <div class="AE">"NotMyTarget"</div> </body> </html> 

编辑2014-02-21:四年后, :not现在广泛可用,虽然在这种具体情况下冗长:

 .A:not(.B):not(.C):not(.D):not(.E) { border: 1px solid red; } 

不幸的是,这个问题在IE7-8中不起作用: http : //caniuse.com/#search= :not

 .A:not(.B) {} 

但是猜猜谁不支持…确实,IE <= 8。

我认为你可以做的最好的(直到CSS 3)在这种情况下覆盖样式,你不需要从A类的AB类,像这样:

 .AB { /* Styles */ } .A { /* Reverse any styling you don't want */ }