2013-10-23 94 views
14

我只想選擇元素,如果它有一個類,該類是'foobar'。如何選擇僅包含「foobar」類的元素,請不要選擇它是否包含任何其他類?

<style> 
.foobar { 
    /* only apply to an element if the element has a class and the only class is 'foobar'. */ 
    background: black; 
    color: white; 
} 
</style> 

<div class="foobar">i should be selected</div> 

<div class="foobar ipsum">i should not be selected</div> 

我知道我可以添加一個風格.foobar.ipsum選擇它{做一件事}和{.foobar別的東西},但我沒有在其他類的控制。基本上,當元素只有foobar類時,我知道它是我的元素,來自其他地方。這是CSS庫世界碰撞時發生的情況。我知道這裏有更深層次的問題需要解決,但現在我正在困擾着我。

回答

21

純CSS最簡單的方法是使用屬性選擇:

[class="foobar"] { 
    /* only apply to an element if the element has a class and the only class is 'foobar'. */ 
    background: black; 
    color: white; 
} 

您可能沒有在其他元素的控制,但如果你可以控制你的,你可以修改它的class屬性,mayabelle makes a good point關於爲你的元素分配自己的特殊類,然後選擇這個類。這樣,你明確地說明哪個元素是你的,而不是假設沒有額外的類意味着它是你的。

+0

這個工程。謝謝並感謝提供解決方案的其他人。我同意@mayabelle的解決方案,但現在找到代碼庫中的所有當前元素將是一場噩夢(這是一團糟*嘆息*),所以此解決方案現在最適合。 – teewuane

+0

@teewuane:對,那也沒關係。 – BoltClock

2

如果它是 「你的元素」,你可以把附加類呢?那麼你可以選擇使用:

<style> 
.foobar.yourClass { 
    /* your css */ 
} 
</style> 

<div class="foobar yourClass">i should be selected</div> 
<div class="foobar ipsum">i should not be selected</div> 
+0

我同意你的意見。在這一點上,代碼基礎是一團糟,將這個額外的類添加到這些元素將是一場噩夢。我會解釋,但它需要一段時間哈哈。所以我會在上面的答案中使用屬性選擇器來解決我手邊的問題,而不用擔心舊版本的IE。謝謝! – teewuane

相關問題