2つのクラスを持つ要素に適用されるCSSセレクター


472

2つの特定のクラスに設定されているクラス属性の値に基づいてCSSで要素を選択する方法はありますか?たとえば、3つのdivがあるとします。

<div class="foo">Hello Foo</div>
<div class="foo bar">Hello World</div>
<div class="bar">Hello Bar</div>

fooとbarクラスの両方のメンバーであるという事実に基づいて、リストの2番目の要素のみを選択するためにどのCSSを記述できますか?

回答:


735

両方のクラスセレクターをチェーンします(間にスペースを入れません):

.foo.bar {
    /* Styles for element(s) with foo AND bar classes */
}

IE6のような古いブラウザーに対処する必要がある場合は、チェーンされたクラスセレクターを正しく読み取らないことに注意してください。リストされている他のクラスに関係なく、代わりに最後のクラスセレクター(.barこの場合)のみが読み取られます。

他のブラウザとIE6がこれをどのように解釈するかを説明するために、次のCSSを検討してください。

* {
    color: black;
}

.foo.bar {
    color: red;
}

サポートされているブラウザでの出力は次のとおりです。

<div class="foo">Hello Foo</div>       <!-- Not selected, black text [1] -->
<div class="foo bar">Hello World</div> <!-- Selected, red text [2] -->
<div class="bar">Hello Bar</div>       <!-- Not selected, black text [3] -->

IE6での出力は次のとおりです。

<div class="foo">Hello Foo</div>       <!-- Not selected, black text [1] -->
<div class="foo bar">Hello World</div> <!-- Selected, red text [2] -->
<div class="bar">Hello Bar</div>       <!-- Selected, red text [2] -->

脚注:

  • サポートされているブラウザー:
    1. この要素にはクラスしかないため、選択されていませんfoo
    2. この要素にはクラスfooとの両方があるため、選択されていますbar
    3. この要素にはクラスしかないため、選択されていませんbar

  • IE6:
    1. この要素にはクラスがないため、選択されていませんbar
    2. barリストされている他のクラスに関係なく、この要素にはclassがあるため、選択されています。

3
入れた順番は関係ありますか?
アダム

3
それは問題ではありません。(IE6では、サポートする必要があると想定して解釈するため)
BoltClock

6
それらの間にスペースがないことが重要ですか?
CodyBugstein 2015

26
@Imray:はい、スペースは子孫セレクターを表します。これにより、各クラスセレクターは異なる要素を表します。しかし、ここでは単一の要素について話しています。
BoltClock

2
@David Brossard:はい。
BoltClock
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.