CSS セレクタの優先順位 (!important)

目次

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.すべて同じなら、より下に記述されている方が勝つ。

関連の記事

CSS ボックスモデルの構造
CSS 長さの単位(px/em/rem/%/vw/vh)

△上に戻る