目次
CSSのセレクタの優先順位とは
どのCSSが最終的に適用されるかを決めるルールです。
以下の表は、上から順に優先度が高い(強い)設定です。
| 名称 | 例 | 詳細度 | 優先度 |
|---|---|---|---|
| !important | - | - | 強い |
| インラインスタイル | style="..."; | 1-0-0-0 | |
| IDセレクタ | #p1 | 0-1-0-0 | |
| クラス/属性/擬似クラス | .p1 / [type="text"] / :link | 0-0-1-0 | |
| 要素/疑似要素 | div / ::before | 0-0-0-1 | |
| 全称セレクタ | * | 0-0-0-0 | 弱い |
CSSのセレクタには、どのスタイルを適用するかを決定するための詳細度(Specificity)という優先順位のルールがあります。
同じ要素に対して複数のスタイルが指定された場合、ブラウザはこの詳細度を計算し、より高いスコアを持つルールを採用します。
以下は、MDNの詳細度の概念のリンクです。
https://developer.mozilla.org/ja/docs/Web/CSS/Specificity
同じ優先順位の場合
CSSで後に記述されたものが適用されます(後勝ち)。
.box { color: red; }
.box { color: blue; } /* 勝つ */
セレクタを組み合わせた場合
組み合わせて詳細度が上がる場合、優先度が高くなります。
#content .box p { }
#content → IDセレクタの1
.box → classの1
p → 要素の1
あわせると→0-1-1-1
!importantがある場合
優先度を無視して!importantがある箇所の優先度が一番強くなります。
p { color: red !important; }
important同士では優先順位比較が復活し後勝ちになります。
優先順位のチェックフロー
1.!importantがついていないか?
2.インラインスタイルで書いていないか?
3.詳細度(ID数>クラス数>要素数)はどちらが高いか?
4.すべて同じなら、より下に記述されている方が勝つ。
関連の記事
