✅ CSS設計とは?
Webサイトが大きくなると、「CSSがぐちゃぐちゃになって管理できない!」 という問題が発生します。
- どのクラスがどこで使われているかわからない
- 修正すると別の場所に影響する
- クラス名がバラバラでチーム開発が大変
👉 こうした課題を解決するために考えられたのが CSS設計 です。
CSS設計とは、「CSSを整理して保守しやすくするためのルールや考え方」 のこと。
代表的な手法が BEM・OOCSS・SMACSS です。
📌 1. BEM(Block, Element, Modifier)
🔹 基本ルール
BEMは 「ブロック」「要素」「修飾子」 で構成される命名規則。
- Block(ブロック) → コンポーネントの単位
- Element(要素) → ブロックの中のパーツ
- Modifier(修飾子) → 状態やバリエーション
🔹 例:ボタン
<button class="btn btn--large">送信</button>
/* Block */
.btn {
background: #3498db;
color: #fff;
}
/* Modifier */
.btn--large {
padding: 20px 40px;
}
👉 規則的な命名により、クラス名を見ただけで役割がわかる のがメリット。
📌 2. OOCSS(Object Oriented CSS)
🔹 考え方
OOCSSは 「オブジェクト指向CSS」 の略。
「見た目」と「構造」を分けて考え、再利用可能な部品としてCSSを書く 手法。
🔹 例:カードレイアウト
<div class="card">
<img class="card__img" src="image.jpg" alt="">
<p class="card__text">説明文</p>
</div>
/* 共通オブジェクト */
.card {
border: 1px solid #ccc;
padding: 10px;
}
.card__img {
max-width: 100%;
}
.card__text {
font-size: 14px;
}
👉 デザインが変わっても「共通オブジェクト」を流用できるのが強み。
📌 3. SMACSS(Scalable and Modular Architecture for CSS)
🔹 考え方
SMACSSは「拡張性」と「モジュール化」を重視した設計。
CSSを5つのカテゴリに分けて整理します。
- Base → 基本スタイル(
html, body, a
など) - Layout → ページ全体のレイアウト(
header, footer, sidebar
) - Module → コンポーネント単位(ナビゲーション、カードなど)
- State → 状態の変化(
.is-active
など) - Theme → 色やデザインのバリエーション
🔹 例
/* State */
.is-active {
display: block;
}
👉 大規模サイトに向いており、チームでの開発に適した設計方法。
📌 それぞれの比較
設計手法 | 特徴 | 向いているケース |
---|---|---|
BEM | 命名規則が明確、読みやすい | 中小〜大規模プロジェクト |
OOCSS | 再利用性が高い、部品化しやすい | コンポーネントが多いサイト |
SMACSS | カテゴリ分けで管理しやすい | 大規模開発、チーム開発 |
👉 実務では BEM+OOCSSの考え方 を組み合わせるケースが多いです。
🎯 初心者がまず学ぶべきCSS設計は?
- BEMから始める → 命名規則がシンプルで理解しやすい
- OOCSSを取り入れる → 再利用性を意識する
- SMACSSを知っておく → 大規模開発で活かせる
👉 最初から完璧を目指さず、BEMでクラス名を整理すること が第一歩です。
📌 まとめ
- CSS設計は「管理しやすいCSSを書くための考え方」
- BEM → 命名規則で管理を楽に
- OOCSS → 再利用性を高める
- SMACSS → 規模の大きなサイトでも整理しやすい
👉 初心者はまず BEM を実践してみるのがおすすめです!