CSS の 2 つのクラスが同じ派生クラスを持つ場合、CSS はどのように適切なクラスを解決しますか?
例えば:
.ClassA.Left {}
.ClassB.Left {}
.Left {}
クラス 'Left' は任意のオブジェクトに適用できるため、それが必要なものであることをどのように保証できますか? 「左」をバインドするために使用される優先度は?
特異性
コンセプト
特異性とは、ブラウザがどのプロパティ値が要素に最も関連性があり、適用されるかを判断する手段です。特異性は、さまざまな種類のセレクターで構成される一致ルールのみに基づいています。
どのように計算されますか?
特異性は、各セレクタ タイプのカウントを連結して計算されます。対応する一致式に適用される重みではありません。
特定性が等しい場合、CSS で見つかった最新の宣言が要素に適用されます。
注: ドキュメント ツリー内の要素の近接性は、特異性には影響しません。
特異性の三日月順
次のセレクターのリストは、特異性を高めることによるものです。
- ユニバーサルセレクター
- タイプセレクター
- クラスセレクター
- 属性セレクター
- 疑似クラス
- ID セレクター
- インライン スタイル
重要な例外
スタイル宣言で !important ルールが使用されている場合、この宣言は、宣言リストにある場所に関係なく、CSS で作成された他の宣言をオーバーライドします。ただし、!important は具体性とは関係ありません。
:not 例外
否定疑似クラス :not は、特異性の計算では疑似クラスとは見なされません。ただし、否定疑似クラスに配置されたセレクターは、通常のセレクターとしてカウントされます。
ソース: https://developer.mozilla.org/en-US/docs/Web/CSS/Specificity
同様に、要素に 3 つのクラス (ClassA、ClassB、および Left) がすべて含まれている場合、CSS シートにクラスがリストされている順序が重要になります。
.ClassA.Left はカスケード内で .ClassB.Left の方が低いため、.ClassB.Left (共通プロパティの場合) によって打ち負かされます。
単一のクラス セレクターは複数のクラス セレクターよりも優先されるため、.ClassA.Left は .ClassA よりも優れています
HTML 内のクラスのソース順序は重要ではありません。