まずは前提となる知識のおさらい
CSSでは、HTMLのid属性とclass属性の値をセレクタとして使用できます。あらかじめ予約されている要素の名前とは違って、任意の名称を作り出せるため柔軟な運用が可能となります。
idセレクタとclassセレクタは、どちらも制限なくCSSに記述できますが、これら二つの運用方法には明確な違いがあります。本ページでは、idとclassの特徴から、二つの使い分け方まで具体的に解説します。
まず初めに、CSSでidとclassを使うための基本的な知識をおさらいしておきましょう。
- CSSの
idとclassはセレクタである。 idとclassは、特定の要素にスタイルを適用するために用いる。idセレクタは、id属性の値の先頭に#を置き、完全一致の文字列で定義する。classセレクタは、class属性の値の先頭に.を置き、完全一致の文字列で定義する。- HTMLの
id属性は、ひとつのページで重複する値を使用してはならない。これはある特定の要素が持つ識別子である。 - HTMLの
class属性は、ひとつのページに同一の値が何度登場しても構わない。これはある条件のまとまりを示すグループ名である。 idはclassよりも詳細度が高い。
idセレクタの基本
#id_name {
/* ここにスタイルを記載します */
}
idは、大量に書かれた文字の中から、たったひとつの要素を特定するためのセレクタです。そのため、ページの中で何度も登場するパーツや、汎用的なスタイルを指定するための運用には向いていません。
HTMLのルール上でも、id属性の値はページの中で固有のものとして扱われます。例えば、ページ内リンクを扱う場合に、ジャンプ先を特定する識別名が重複していた場合に、不具合の原因になります。
idの基本は、とにかくページの中で固有のもの、特別なスタイル、絶対に重複しない要素を想定することです。これらが曖昧な限り、classを使用した方が安全です。
また、idセレクタはclassセレクタよりも優先度が高くなります。これは詳細度を計算するポイントの仕様に基づきます。例えば、同じ要素に別のスタイルを適用した場合、カスケードの原則により後に書かれた内容が優先されます。しかし、同じ条件下であればidで適用されたスタイルは、後から上書きしようとするclassのスタイルを打ち消します。
classセレクタの基本
.class_name {
/* ここにスタイルを記載します */
}
classは、大量に書かれた文字の中から、共通のスタイルや条件を持つまとまりを示すセレクタです。そのため、ウェブサイト全体の中で一度しか登場しない要素や、共通項のないスタイルの運用には向いていません。
HTMLのルール上では、class属性の値はページの中で何度重複しても構いません。例えば、複数のclassセレクタを用意して、それを組み合わせてスタイルを完成させることもできます。
classの基本は、とにかくページの中で何度も登場するパーツ、汎用的なスタイル、重複する内容を想定することです。これに反して、何か特別な扱いをしなければならない要素に対しては、idの使用を検討すべきです。
また、classセレクタはidセレクタよりも優先度が低くなります。これは詳細度を計算するポイントの仕様に基づきます。同じ条件下で、idで適用したスタイルを後からclassで上書きしようとした時に、これが効かないという現象につながります。
idセレクタを使う場面
idを使う場面としてまず考えられるのが、サイト全体のレイアウトの設計です。以下の例では、グリッド・レイアウトのコンテナに、エリア分けしたアイテムを配置しています。この時、idは各ボックスの固有名を表しておりサイト全体を通して変更されないスタイルです。
