idとclassの使い分け

css

idとclassの違い

スタイルを適用させる範囲の指定によくidやclassを使います。 しかしidとclassのどちらを使うのが適正かは中々難しい問題です。 まずは両者の違いから考えてみましょう。

idはページに一つ、classはいくつでも可

idはページ内に一つしか記述できません。
対してclassはいくつでも記述することができます。

ただしページに1つしか出てこないからといって、idを使わなければいけない訳ではありません。 idの使用に制約があるだけです。

idとclassでスタイルが競合した場合、idが優先される

以下のスタイルの競合を例に見てみましょう。

HTML

<p id="red" class="blue">idとclass競合時の文字色</p>

CSS

#red{color:red;}
.blue{color:blue;}

表示結果

id-class-difference01

文字色をidは赤、クラスは青を指定して競合した結果、idが優先されて赤くなりました。idはclassよりも強いのです。

idに対してページ内ジャンプができる

idに対してリンクを貼れば、該当のid位置にジャンプすることができます。

<a name="#アンカー名">idへジャンプ</a> 
<!-- ~略~ -->

これを利用してページ先頭にジャンプ機能を設置する手法がよく使われています。

idを使うべきところ

まず大前提として、classの使用に制約はありませんがidにはあります。 率直に言ってしまうと、idを全く使わずにclassで記述してしまっても問題ありませんし、そうすることも多いです。 なので使い分けをどうするか考えるより、どこにidを使うべきかを考えましょう。

idを使う箇所は「一意にする必要がある」もしくは「一意にした方がいい」箇所です。

ページ内ジャンプ機能を付けたい場合

ページ内ジャンプ機能を使う場合、classでは実現できないのでidを使います。

一意に設定できる箇所に使う

ヘッダー、コンテンツ、サイドバー、フッターなどのページセクションは基本的にページ内に一つしかありません。 こういったものはidを振ってやった方が分かりやすくなります。

共通部をクラスでまとめ、idでスタイルを上書きする

idがclassよりも優先されるCSSの仕様を利用した手法です。

ウェブページはページによってある程度レイアウトに幅がありますが、しかし似通っている部分が多いです。 基準スタイルをclassで書いて、各ページの特徴となる部分はidで書いてやればCSSを圧縮することができます。

セレクタのマッチング処理はidの方が早い

jQueryなどでセレクタのマッチング処理を行う場合、idを指定した方が速度が速くなります。 これはid指定であればページ内で見つかればそこで処理が終わるのに対し、class指定だと最後まで走査しなければならないためです。

HTMLとCSSのみで構築する場合はあまり関係ありませんが、これも頭の隅に入れておきましょう。

アマルウェブ HOME