クラスとIDの適切な設計を“本質から”理解する
クラス(.)とID(#)は、CSSの中でも特に「設計の質」が出る部分です。
初心者のうちにここをしっかり押さえておくと、後々のCSSが劇的に書きやすくなります。
ここでは、Webデザイナー兼CSS講師として、実務レベルの考え方をかみ砕いて解説します。
Tailwind CSS版も並べて紹介するので、両者の違いも自然に理解できます。
クラスとIDの基本的な違い
クラス(class)とは何か
クラスは「複数の要素に共通のデザインを適用するためのラベル」です。
.card {
padding: 16px;
background: #f5f5f5;
border-radius: 8px;
}
CSS<div class="card">商品A</div>
<div class="card">商品B</div>
HTML同じ見た目を何度でも使い回せるのが最大のメリットです。
Tailwindでは、クラスを自分で定義せず、ユーティリティクラスを組み合わせて同じことを実現します。
<div class="p-4 bg-gray-100 rounded-lg">商品A</div>
<div class="p-4 bg-gray-100 rounded-lg">商品B</div>
HTMLID(id)とは何か
IDは「ページに1つだけ存在する特別な要素」に使います。
#main-visual {
height: 400px;
background-size: cover;
}
CSS<section id="main-visual"></section>
HTMLIDは1ページに1回しか使えないため、
“唯一の存在”にだけ使うのが正しい設計です。
Tailwindでは、IDはデザイン目的ではなく「JavaScriptの操作」や「ページ内リンク」に使うことが多いです。
<section id="main-visual" class="h-[400px] bg-cover bg-center"></section>
HTMLクラスとIDの使い分けの本質
深掘り:なぜIDをデザインに使うべきではないのか
IDはCSSの優先度が非常に強いため、後からスタイルを上書きしづらくなります。
#title {
color: red;
}
CSSこのように書くと、後から .title { color: blue; } と書いても負けてしまいます。
結果として「!important」を多用する悪循環に陥りがちです。
結論:デザインはクラスで行い、IDは構造やJS用に使う。
TailwindではそもそもIDでデザインしないため、この問題が起きません。
クラス設計の基本パターン
パターン1:役割ごとにクラスを作る
.btn {
display: inline-block;
padding: 10px 16px;
border-radius: 6px;
font-weight: bold;
}
.btn-primary {
background: royalblue;
color: white;
}
.btn-secondary {
background: #eee;
color: #333;
}
CSS<a class="btn btn-primary">購入する</a>
<a class="btn btn-secondary">詳細を見る</a>
HTMLTailwind版
<a class="inline-block px-4 py-2 rounded font-bold bg-blue-600 text-white">
購入する
</a>
<a class="inline-block px-4 py-2 rounded font-bold bg-gray-200 text-gray-700">
詳細を見る
</a>
HTMLTailwindでは「btn」という共通クラスを作らず、ユーティリティを組み合わせて表現します。
パターン2:コンポーネント単位でクラスを作る
.product-card {
padding: 20px;
border: 1px solid #ddd;
border-radius: 8px;
}
.product-card .title {
font-size: 18px;
font-weight: bold;
}
.product-card .price {
color: #e53935;
font-size: 16px;
}
CSS<div class="product-card">
<p class="title">商品名</p>
<p class="price">¥2,980</p>
</div>
HTMLTailwind版
<div class="p-5 border border-gray-300 rounded-lg">
<p class="text-lg font-bold">商品名</p>
<p class="text-red-600 text-base">¥2,980</p>
</div>
HTMLTailwindでは「コンポーネントクラス」を作らず、HTML側で組み立てるスタイルです。
よくある失敗と改善例
失敗例1:IDでデザインしてしまう
#header {
background: black;
color: white;
}
CSS<header id="header">ヘッダー</header>
HTMLこれは後から変更しづらくなる典型例です。
改善版(クラスを使う)
.header {
background: black;
color: white;
}
CSS<header class="header">ヘッダー</header>
HTMLTailwind版
<header class="bg-black text-white">ヘッダー</header>
HTML失敗例2:クラス名が抽象的すぎる
<div class="box"></div>
<div class="box2"></div>
HTMLこれは後から見たときに意味が分かりません。
改善版(役割が分かる名前にする)
<div class="feature-card"></div>
<div class="news-card"></div>
HTMLTailwind版では、そもそもクラス名を作らないため問題が起きにくいです。
例題で理解を深める
例題:プロフィールカードを作る
CSS版
.profile-card {
padding: 20px;
border-radius: 10px;
background: #fafafa;
text-align: center;
}
.profile-card .name {
font-size: 20px;
font-weight: bold;
}
.profile-card .job {
color: #666;
margin-top: 4px;
}
CSS<div class="profile-card">
<p class="name">山田 太郎</p>
<p class="job">Webデザイナー</p>
</div>
HTMLTailwind版
<div class="p-5 rounded-xl bg-gray-50 text-center">
<p class="text-xl font-bold">山田 太郎</p>
<p class="text-gray-600 mt-1">Webデザイナー</p>
</div>
HTMLまとめ:クラスとIDの設計は“CSSの設計力”そのもの
クラスとIDの使い分けは、CSS設計の基礎でありながら奥が深い部分です。
重要ポイントの総まとめ
- IDは1ページ1回だけ。デザインには使わない。
- クラスは「役割」や「用途」で名前をつける。
- 再利用できるデザインはクラス化する。
- Tailwindではクラスを作らず、ユーティリティを組み合わせる。
- 抽象的なクラス名(box, wrap, main)は避ける。
この考え方を身につけると、CSSが驚くほど整理され、
Tailwindを使うときも迷いがなくなります。


