如何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 */ }