CSS

詳細度

初級

読み方:しょうさいど|英語:Specificity

セレクタの優先順位を決める仕組みで、id > class > タグ名 の順に強いよ。いつ使う? 「CSSを書いたのに効かない!」というとき、詳細度を理解していると原因がわかるよ。開発者ツールで打ち消し線が入っているスタイルは、より詳細度の高いセレクタに負けているよ。間違いやすいポイント: IDセレクタ(#id)はクラスセレクタ(.class)より圧倒的に強いから、IDでスタイルを書くと後から上書きしにくくなるよ。基本はクラスだけでスタイリングしよう。

やさしい説明

詳細度(しょうさいど)とは、CSSセレクタの優先順位を決める「重み」の数値です。英語では Specificity(スペシフィシティ)と言います。

じゃんけんに例えると、IDセレクタはグー、クラスセレクタはチョキ、要素セレクタはパーのようなものです。IDが一番強く、要素が一番弱いです。

詳細度は「ID数 - クラス数 - 要素数」の3桁で計算します。数値が大きいセレクタのスタイルが優先されます。

図解:詳細度の重み

要素セレクタ(0-0-1) < クラスセレクタ(0-1-0) < IDセレクタ(1-0-0)

具体例・使い方

/* 詳細度: 0-0-1(要素1つ) */
p { color: black; }

/* 詳細度: 0-1-0(クラス1つ)→ pより強い */
.highlight { color: red; }

/* 詳細度: 0-1-1(クラス1つ + 要素1つ) */
p.highlight { color: blue; }

/* 詳細度: 1-0-0(ID1つ)→ 最強 */
#title { color: green; }

いつ使う?

「CSSが効かない!」と思ったとき、原因の多くは詳細度です。開発者ツールで打ち消し線が引かれているスタイルを見つけたら、詳細度を確認しましょう。

間違いやすいポイント

❌ IDセレクタでスタイルを書きすぎる

IDは詳細度が高すぎて、後から上書きしにくくなります。スタイルにはクラスセレクタを使うのが基本です。

❌ セレクタを長くしすぎる

div.container ul li a.link のように長いセレクタは詳細度が高くなりすぎます。シンプルなクラス名で書きましょう。

よくある疑問

Q: スタイルが効かないときは?

A: 開発者ツールで打ち消し線が入っているスタイルを確認しましょう。より詳細度の高いセレクタに上書きされている可能性があります。

Q: 詳細度の計算方法は?

A: IDの数×100 + クラスの数×10 + 要素名の数×1 で計算します。例: #nav .link a は 100+10+1=111。.menu .link は 10+10=20。111の方が勝ちます。

Q: 詳細度を上げずにスタイルを効かせるには?

A: CSSの記述順を変える(後に書く)か、:where()セレクタを使うと詳細度0で書けます。!importantは最終手段です。

関連用語

📖 関連レッスン

レッスンを見る →

関連ブログ記事

⚠️ 関連するエラー

❓ 関連するQ&A