CSSセレクターでスペースは何を意味しますか?つまり、.classA.classBと.classA .classBの違いは何ですか?


104

これら2つのセレクターの違いは何ですか?

.classA.classB {
  border: 1px solid;
}

.classA .classB {
  border: 1px solid;
}

回答:


103

.classA.classBクラスAとB(class="classA classB")の両方を持つ要素を指します。一方.classA .classB、はの要素class="classB"から派生した要素を指しclass="classA"ます。

編集:参照用の仕様:属性セレクター(セクション5.8.3クラスセレクターを参照)


42

このようなスタイルははるかに一般的であり、クラス「classA」の任意のタイプのエレメント内にネストされているクラス「classB」の任意のタイプのエレメントをターゲットにします。

.classA .classB {
  border: 1px solid; }

たとえば、次のように機能します。

<div class="classA">
  <p class="classB">asdf</p>
</div>

ただし、これは、クラス「classA」とクラス「classB」の両方であるすべてのタイプの要素を対象としています。このタイプのスタイルはあまり見られませんが、状況によってはまだ役立ちます。

.classA.classB {
  border: 1px solid; }

これはこの例に適用されます:

<p class="classA classB">asdf</p>

ただし、次のものには影響しません。

<p class="classA">fail</p>
<p class="classB">fail</p>

(HTML要素に複数のクラスがある場合、それらはスペースで区切られることに注意してください。)


1
失敗したケースを表示すると役立ちます。
Hal50000 2016年

-1

.classA.classBこれは、両方のクラス名を持つ要素が選択されることを.classA .classB意味しますが、classB内部のクラス名を持つ要素classAのみが選択されることを意味します。


2
これは正しいですが、質問は10年前にすでに正しく回答されています。本当に新しい答えは必要ありませんでした。
ブリリアント、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.