複数のクラスに基づいて要素を選択します


360

2つのクラスがあるタグに適用するスタイルルールがあります。JavaScriptなしでこれを実行する方法はありますか?言い換えると:

<li class='left ui-class-selector'>

とクラスの両方が適用されている場合にのみ、スタイルルールを適用します。li.left.ui-class-selector


css-tricks.com/multiple-class-id-selectors -ダブルクラスセレクタを参照してください
firstpostcommenter

回答:


595

あなたは2つのクラスを意味しますか?セレクターを「チェーン」する(間にスペースを入れない):

.class1.class2 {
    /* style here */
}

これによりclass1、も持つすべての要素が選択されますclass2

あなたの場合:

li.left.ui-class-selector {

}

公式ドキュメント:CSS2クラスセレクター


akamike:あなたはこれを読みたいかもしれないのInternet Explorer 6で、この方法の問題点を指摘IE6のCSSでの使用のダブルのクラス?


6
IE6はクラスのチェーンを読み取らないので、これらは好きではないことに注意してください。チェーンの最後のクラスのみを調べます。
akamike

16
それはそうではありません:)すべての主要なWebサイトが削除されたか、削除されたか、近い将来IE6のサポートを停止する予定です。同じことをしてください!
Thomas Bonini、

@Andreas Bonini:そうだね。正直に言うと、私は長い間IE6を気にしていません。(この問題に関する他の質問を見つけたので、以前のコメントを削除しました。)
Felix Kling 2010年

ええ、IE6でそれらを使用することはできません。要素をスタイルするために長いルートを使用するだけです。たとえば、各クラスを個別にスタイル設定し、適切なCSS固有性を使用して、できる限り最適にオーバーライドします。
10

2
IE6のお墓で踊ったのが好きです。今年もIE10をサポートする必要はありませんでした。IEを完全に削除することも間近に迫っています。私は未来が大好きです。☺
マイケルScheper

22

チェーンセレクターはクラスだけに限定されず、クラスとIDの両方に対して実行できます。

クラス

.classA.classB {
/*style here*/
}

クラスID

.classA#idB {
/*style here*/
}

やった

#idA#idB {
/*style here*/
}

IE 6を除くすべての優れた現在のブラウザーはこれをサポートしています。リストの最後のセレクターに基づいて選択します。したがって、「。classA.classB」は「.classB」だけに基づいて選択します。

あなたの場合

li.left.ui-class-selector {
/*style here*/
}

または

.left.ui-class-selector {
/*style here*/
}

9
Id&Idは、概念的に奇妙なセレクターです。
フェリックス・ガニオン-グルニエ

0

これらのソリューションを使用できます:

CSSルールは、次の2つのクラスを持つすべてのタグに適用されます。

.left.ui-class-selector {
    /*style here*/
}

CSSルールは<li>、次の2つのクラスを持つすべてのタグに適用されます。

li.left.ui-class-selector {
   /*style here*/
}

jQueryソリューション:

$("li.left.ui-class-selector").css("color", "red");

JavaScriptソリューション:

document.querySelector("li.left.ui-class-selector").style.color = "red";
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.