CSS IDセレクター (#id) — ユニークな要素のターゲット

id属性で単一のユニークな要素をターゲットするCSS IDセレクターを理解します。詳細度への影響とIDとクラスの使い分けについて学びます。

Basic Selectors

詳細な説明

CSS IDセレクター

IDセレクターはハッシュ(#)プレフィックスを使用して、ユニークなid属性で要素をターゲットします。IDはドキュメント内で一意でなければならないため、このセレクターは常に最大1つの要素にマッチします。

構文

#header {
  /* id="header"の要素に適用されるスタイル */
}

詳細度への影響

IDセレクターの詳細度は**(1, 0, 0)**で、クラスセレクター(0, 1, 0)よりも大幅に高くなります。つまり、IDベースのルールはスタイルシート内の順序に関係なくクラスベースのルールをオーバーライドします。

.nav { color: blue; }      /* 詳細度: (0, 1, 0) */
#main-nav { color: red; }  /* 詳細度: (1, 0, 0) — 優先 */

IDとクラスの使い分け

特徴 ID クラス
一意性 ページごとに一意 再利用可能
詳細度 高 (1, 0, 0) 中 (0, 1, 0)
JavaScript getElementById() getElementsByClassName()
URLアンカー 可能 (#section) 不可
スタイリングに推奨 まれ はい

よくある落とし穴

  • IDの多用!importantなしではスタイルのオーバーライドを困難にする
  • IDはCSSとHTML構造間の密結合を生み出す
  • IDがスタイルシート全体に散在している場合、リファクタリングが困難になる
  • 現代のCSS手法(BEM、SMACSS)ではスタイリングにIDセレクターの使用を推奨していない

ユースケース

IDセレクターは主にJavaScriptフック(getElementById)、URLフラグメントナビゲーション(#sectionアンカー)、アクセシビリティランドマーク(aria-labelledby)に使用されます。スタイリングにも使用できますが、IDの高い詳細度のため、ほとんどのCSS手法ではクラスを推奨しています。フォーム要素ではfor属性によるラベル関連付けのためにIDがよく使用されます。

試してみる — CSS Selector Tester

フルツールを開く