CSSのセレクタの優先順位

CSSのセレクタの優先順位

CSSのセレクタの優先順位は、スタイルの適用に関する重要な概念で、複数のスタイルルールが同じ要素に対して適用される場合にどのルールが優先されるかを決定します。
優先順位は、通常「特異性(specificity)」という概念で表され、以下のような順序で決まります。

1. インラインスタイル(Inline Styles):

  • HTML要素に直接設定されたスタイルは、最も高い優先順位を持ちます。

例: div

2. IDセレクタ:

  • IDセレクタは、特異性の値が高く、同じ要素に複数のIDセレクタが適用される場合は最も優先されます。

例: #test-id

3. クラス、属性、および擬似クラスセレクタ:

  • クラスセレクタ(例: .test-class)、属性セレクタ(例: [type="text"])、および擬似クラスセレクタ(例: :hover)は、IDセレクタよりも特異性が低いです。

4. 要素および擬似要素セレクタ:

  • 要素セレクタ(例: div)や擬似要素セレクタ(例: ::before)は、最も特異性が低いです。

特異性の計算は、以下のルールに基づいて行われます:

  • インラインスタイルは常に最優先です。
  • セレクタの特異性は、IDセレクタ、クラスセレクタ、要素セレクタの順で加算されます。

特異性は数値で表現され、例えば、#test-idは特異性の値が「1,0,0,0」になります。
クラスセレクタ .test-class は「0,1,0,0」、要素セレクタ div は「0,0,1,0」となります。

特異性の値を計算する方法:
1. セレクタの各部分の特異性を数値で表現します(インラインスタイルは特異性「1,0,0,0」)。
2. IDセレクタの数が多いほど、特異性の値は高くなります。
3. クラスセレクタの数が多いほど、次に高い特異性の値が設定されます。
4. 要素セレクタの数が多いほど、最も低い特異性の値が設定されます。

例を通して理解すると、以下のCSSがあるとします:

#header {
  color: blue;
}

.header {
  color: green;
}

div {
  color: red;
}

ここで、HTMLが次のように設定されているとします:

<div id="header" class="header">Hello</div>

この場合、要素に適用される色は青になります。
なぜなら、IDセレクタ(#header)がクラスセレクタ(.header)や要素セレクタ(div)よりも特異性が高いためです。

セレクタの優先順位を理解して、複雑なスタイリングルールを適切に管理することは、CSSを効果的に活用するために非常に重要です。