これら2つのセレクターの違いは何ですか?
.classA.classB {
border: 1px solid;
}
.classA .classB {
border: 1px solid;
}
.classA.classB
は、クラスAとBの両方を持つ要素を参照します(class="classA classB"
);一方、.classA .classB
は、class="classB"
を持つ要素から派生したclass="classA"
を持つ要素を指します。
編集:参照用の仕様: 属性セレクター (セクション5.8.3クラスセレクターを参照)
このようなスタイルははるかに一般的であり、クラス「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要素に複数のクラスがある場合、それらはスペースで区切られることに注意してください。)
正式には「子孫コンビネーター」として知られています。
それについて [〜#〜] mdn [〜#〜] または CSS仕様 で読んでください
.classA.classB
は、両方のクラス名を持つ要素が選択されることを意味しますが、.classA .classB
は、classB
内のクラス名classA
の要素のみが選択されることを意味します。