HTMLとCSSのコーディングを効率化する「BEM命名規則」とは?

目次

はじめに

ウェブ開発において、CSSの命名規則は非常に重要です。命名が適切でないと、コードの可読性が低下し、メンテナンス性が著しく低下してしまいます。そこで登場したのがBEM(Block Element Modifier)という命名規則です。BEMはHTMLとCSSの両方に適用でき、構造化されたコーディングを実現します。本記事では、BEMの概要や利点、具体的な命名規則などを詳しく解説していきます。

BEMとは

BEMはBlock、Element、Modifierの頭文字を取ったもので、HTMLとCSSのコンポーネント化を実現する命名規則です。コンポーネントは再利用可能なモジュールとして扱われ、他のコンポーネントと干渉することなく個別に管理できます。

Block

Blockとは、機能的に独立した再利用可能なモジュールのことです。ヘッダー、フッター、メインコンテンツなどのWebサイト上の主要な構成要素がBlockに当たります。Blockは単独で使用することも、他のBlockの中に入れ子構造で配置することもできます。

Blockの命名には制約はありませんが、短くて分かりやすい名前を付けることが推奨されています。例えば「header」や「menu」、「article」などといった名前が適切でしょう。

Element

Elementは、Blockを構成する部品のことを指します。Elementは単独では意味を成さず、必ずBlockに依存する形で存在します。例えば「header」というBlockの中にある「logo」や「nav」などの要素がElementに該当します。

Elementの命名規則は「block__element」という形式で、Blockの名前と区切り文字「__」(アンダースコア2つ)を使って命名します。例えば「header__logo」や「menu__item」などです。

Modifier

ModifierはBlockやElementの状態や外観を変更するためのものです。例えば、ボタンのサイズやカラーの変更、アクティブ状態の切り替えなどを行う場合にModifierを使います。

Modifierの命名規則は「block–modifier」または「block__element–modifier」という形式で、ハイフン2つ「–」を区切り文字として使います。例えば「button–large」や「menu__item–active」などです。

BEMの利点

BEMには以下のような利点があります。

可読性が高い

BEMの命名規則に従えば、コードを見るだけで要素の役割や構造を把握しやすくなります。コンポーネントの範囲が明確になり、他者によるコード理解も容易になります。

また、命名規則が一貫しているため、混乱を招くことなくスタイルを記述できます。コードの可読性が高まれば、保守性やメンテナンス性の向上にもつながります。

スタイルの詳細度が下がる

BEMではクラスセレクタのみを使用するため、IDセレクタやその他の高詳細度のセレクタを使わずに済みます。セレクタの詳細度が下がれば、スタイルの優先順位によるバトルがなくなり、意図しないスタイルの上書きを防げます。

コンポーネントの再利用性が高い

Blockという概念があるため、コンポーネントを自由に移動させたり、別のプロジェクトで再利用したりできます。コンポーネントの範囲が明確になっているので、他のコンポーネントに影響を与えずにスタイリングできます。

コンポーネント指向のCSSを実現できるため、大規模なプロジェクトでも効率的に作業できるでしょう。

BEMの具体例

ここでは、実際のHTMLとCSSコードを使ってBEMの命名規則を確認していきましょう。

HTMLの構造

html

<div class="menu">
  <div class="menu__brand">Brand Logo</div>
  <nav class="menu__nav">
    <ul class="menu__list">
      <li class="menu__nav-item menu__nav-item--active"><a href="#">Home</a></li>
      <li class="menu__nav-item"><a href="#">About</a></li>
      <li class="menu__nav-item"><a href="#">Services</a></li>
      <li class="menu__nav-item"><a href="#">Contact</a></li>
    </ul>
  </nav>
</div>

上記のHTMLコードでは、「menu」というBlockの中に「brand」と「nav」というElementが存在しています。さらに「nav-item」というElementの中に「active」というModifierが使われています。

CSSのスタイリング

css

.menu {
  background-color: #333;
}
.menu__brand {
  padding: 10px;
  color: white;
  font-size: 24px;
}
.menu__list {
  display: flex;
}
.menu__nav-item a {
  padding: 10px;
  color: #ccc;
  text-decoration: none;
}
.menu__nav-item--active a {
  color: white;
  font-weight: bold;
}

CSSではBlock、Element、Modifierごとにスタイルを記述しています。これにより、コンポーネントの範囲が明確になり、他のコンポーネントに影響を与えずにスタイリングできます。

まとめ

BEMは、コンポーネント指向のCSSを実現する命名規則として注目されています。Block、Element、Modifierの概念を取り入れることで、コードの可読性とメンテナンス性が大幅に向上します。大規模なプロジェクトではもちろん、小規模のプロジェクトでもBEMを採用することでコーディングがスムーズになるでしょう。

本記事でBEMの基礎を学んだので、実際のプロジェクトで活用してみてはいかがでしょうか。最初は戸惑うかもしれませんが、命名規則に慣れれば生産性が格段に上がるはずです。ウェブ開発の現場では、BEMをはじめとするコンポーネント指向のCSSがすっかり定着しつつあります。BEMを習得することで、モダンなコーディングスタイルに対応できるでしょう。

よくある質問

BEMとはどのようなものですか?

BEMは、Block、Element、Modifierの頭文字を取った命名規則です。HTMLとCSSのコンポーネント化を実現し、再利用可能なモジュールを構築できます。Blockは独立したモジュール、Elementはそのモジュールを構成する部品、Modifierはモジュールの状態や外観を変更するものです。

BEMの利点はどのようなものですか?

BEMを使うと、コードの可読性が高まり、コンポーネントの範囲が明確になるため、保守性とメンテナンス性が向上します。また、セレクタの詳細度が下がるため、意図しないスタイルの上書きを防ぐことができます。さらに、コンポーネントの再利用性が高まり、大規模なプロジェクトでも効率的に作業できるでしょう。

BEMの具体的な命名規則は何ですか?

Blockの命名には制約はありませんが、短くて分かりやすい名前が推奨されています。Elementの命名は「block__element」、Modifierの命名は「block–modifier」または「block__element–modifier」という形式です。

BEMはどのようなプロジェクトで活用できますか?

BEMは大規模なプロジェクトだけでなく、小規模なプロジェクトでも活用できます。命名規則に慣れればコーディングがスムーズになり、生産性が格段に上がるでしょう。ウェブ開発の現場では、BEMをはじめとするコンポーネント指向のCSSが定着しつつあるため、BEMを習得することで、モダンなコーディングスタイルに対応できるでしょう。

この記事はAIを元にした記事となっております。

※このサイトはアフィリエイトプログラムを利用しております
※AIが書いた記事があります

目次