【CSS第2回】セレクタの種類と優先順位
特定の要素だけにスタイルを当てるための「セレクタ」の極意を学びます。クラスとIDの使い分け、さらに同じ要素にスタイルが競合したときの優先順位ルール(詳細度)をマスターしましょう。
1. 代表的な3つの基本セレクタ
CSSでデザインを指定する際、最も頻繁に使用する「ターゲットの指定方法(セレクタ)」は以下の3つです。
① 要素セレクタ(タグ名で直接指定)
p や h1 などのHTMLタグ名を直接指定します。ページ内のその要素すべてに一律でスタイルが適用されます。
② クラスセレクタ(ドット . を使用)
HTMLで指定した class="example" に対して、CSS側では頭に .example と記述します。ページ内に何回でも繰り返し使え、複数の要素を共通グループ化するのに最も適しています。
③ IDセレクタ(シャープ # を使用)
HTMLの id="header" に対して、CSS側では頭に #header と記述します。IDは**「ページ内に1回しか使えない」**というルールがあるため、ヘッダーやフッターなど、唯一無二の特定エリアを指定するのに使用します。
2. セレクタが競合したときの優先順位(詳細度)
もし同じHTML要素に対して、要素セレクタ・クラスセレクタ・IDセレクタから別々のスタイルが指定された場合、ブラウザは**「詳細度(強さ)が高いルール」**を優先的に採用します。
この詳細度は以下の計算式(強さのランキング)で定義されています。
👑 スタイルの強さ(詳細度)ランキング
- インライン指定 (style属性) : 強さ【1000点】
- IDセレクタ (#id) : 強さ【100点】
- クラスセレクタ (.class) / 属性・擬似クラス : 強さ【10点】
- 要素セレクタ (tags) : 強さ【1点】
- ブラウザデフォルト : 最も弱い
例えば、p { color: red; } (1点) と .text-green { color: green; } (10点) が同じ段落要素に衝突した場合、強さ「10点」のクラスセレクタが勝ち、テキストは緑色(green)になります。
3. セレクタを組み合わせて複雑な条件を作る
複数のセレクタを組み合わせることで、「〇〇の中にある✕✕だけ」といった条件付きスタイルを指定できます。
- 子孫セレクタ(半角スペースで繋ぐ): 例:
.card pは、「cardクラスの要素の内側にあるすべてのp要素」を指します。 - 複数セレクタ(カンマで繋ぐ): 例:
h1, h2は、「h1要素とh2要素のどちらにも」同じスタイルを適用します。
4. 詳細度の競合を体験してみよう
以下のCSSでは、`h1`要素セレクタと、`#title`IDセレクタ、`.main-header`クラスセレクタが競合しています。この場合、ID(100点)が勝利し、テキストは青色になります。
h1 { color: red; /* 1点: 最も弱い */ } .main-header { color: green; /* 10点 */ } #title { color: blue; /* 100点: このスタイルが勝利する */ }
クラスセレクタ(.my-class)と要素セレクタ(p)の2つが同じHTML要素で競合した場合、詳細度(優先順位点)が高いのはどちらのセレクタでしょうか?
※この問題の解答と解説は、ページ最下部(まとめの前)に掲載しています。
5. まとめと次回予告
第2回の講義はお疲れ様でした!今回の重要ポイントを振り返りましょう。
- クラスセレクタは `.` を頭につけ、ページ内で何回でも使用可能。
- IDセレクタは `#` を頭につけ、ページ内で唯一の要素に1回だけ使用可能。
- 競合時は詳細度(点数)で比較され、ID(100点)>クラス(10点)>要素(1点)の順で優先される。
次回(第3回)は、ウェブ制作の要となる「カラーとテキストの装飾」をテーマに、フォントサイズの美しい設定方法や色表現のバリエーション、行間による視認性向上の技術を学びます。お楽しみに!
📖 CSSの基礎を全10回でマスターする
🔑 第2回 理解度チェックの解答と解説
【解説】
正解は **クラスセレクタ(.my-class)** です。要素セレクタの詳細度(強さ)は1点であるのに対し、クラスセレクタの詳細度は10点となります。したがって、同時に別の指定が重なった場合にはクラスセレクタのスタイルが優先されます。この優先順位を理解しておくことは、CSSのデバッグ(記述通りに反映されない原因の特定)において非常に重要です。
