同じ要素に対して複数のスタイルが指定されたとき、ブラウザは「点数(詳細度)」を計算し、最も点数が高いものを採用します。
上にあるものほど優先されます。
| 優先度 | 指定方法 | 具体例 |
|---|---|---|
| 最強 | !important |
color: red !important; |
| 高 | インラインスタイル | <p style="color: blue;"> |
| 中 | IDセレクタ | #main-title { ... } |
| 低 | クラス / 属性 / 擬似クラス | .button { ... } / :hover |
| 最低 | 要素(タグ名) / 擬似要素 | p { ... } / h1 { ... } |
優先度(点数)が全く同じ場合は、スタイルシートの下の方に書いた記述が上書きして適用されます。
セレクタを細かく指定するほど点数が高くなります。
p (要素のみ:1点).container p (クラス1つ + 要素1つ:11点).container .main p (クラス2つ + 要素1つ:21点)→ 3番目の指定が一番具体的(詳細)なので、最も優先されます。
!importantどんな優先順位も無視して強制的に適用させるのが !important です。
多用は厳禁!
これを使うと後から修正するのが非常に困難になります。CSS設計(BEMなど)をしっかり行い、点数計算で解決するのがプロのやり方です。
!important がどこかで暴走していないか?