2013-10-23 18 views
14

1つのクラスしかなく、そのクラスが '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