2013-10-23 68 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

相关问题