CODING

BEMを意識しよう

投稿日:2019年10月30日 更新日:


どうも、べ〜やんです。

今回は、代表的なCSSの設定規則のBEMの基礎を紹介します。

HTML、CSSに慣れてきた方やクラス名で迷ってしまう方、チームでプロジェクトを進めたい方におすすめです。





BEMとは

BEM(ベム)とは、Block(ブロック)・Element(エレメント)・Modifier(モディファイア)の略で代表的なCSSの設定規則です。

クラス名の命名のルールやCSSの記述のルールを決めているものです。


使い方

命名の規則はblock__element–modifierが基本の形です。


セパレーター

基本的なセパレーターの使い方を紹介します。

BlockとElementの間はアンダースコア( _ )2つで繋ぐ。

ElementとModifierの間はハイフン( – )2つで繋ぐ。

複数の単語を繋げてBlock名やElement名をつける場合はハイフン( – )1つで繋ぐ。

複数の単語を繋ぐ場合はキャメルケースを使用してもOK、個人的にはこっちが好きです。main-content → mainContentなど。

上記以外でも以下の3つが区別できていればOKです。

  1. BlockとElementとの区切り
  2. BlockまたはElementとModifierとの区切り
  3. 複数の単語を繋ぐ区切り

Block

Blockはページを構成する大きな括りのことです。

ページはたくさんのBlockできている。

例:ヘッダー、フッター、ナビゲーション、商品説明など。

ページ全体のヘッダーを1つのBlockとしてpage-headerというクラスを与えるなど。

<div class="page-header">
  
</div>

Element

ElementはBlockを構成する要素です。BlockのないElementは禁止されています。

BlockはたくさんのElementからできている。

例:ヘッダーの中のロゴ、ナビゲーションの中のメニュー、商品説明の中の商品名など。

ヘッダーの中のロゴにpage-header__logoというクラス名を与えるなど。

<div class="page-header">
  <h1 class="page-header__logo">
     <img src="">
  </h1>
</div>

Modifier

ModifierはBlockやElementの状態を表すもの。

例:メニューの1つだけ色を変えるなど。

複数のメニューの中で1つだけ青にするのにheader-menu__item–blueというクラス名を与えるなど。

またModifierはBlock_key_valueやElement_key_valueのようにkey(名前)とvalue(値)とアンダースコア( _ )を使い同時に複数使用する事もできます。

例:list_type_check、list_type_discなど。

<ul class="list list_type_check">
  <li class="list__item">リスト1</li>
  <li class="list__item list__item--blue">リスト2</li>
</ul>
<ul class="list list_type_disc">
  <li class="list__item">リスト1</li>
  <li class="list__item list__item--blue">リスト2</li>
</ul>

メリット

  • チームでの開発がしやすい。
  • メンテナンスがしやすい。
  • クラス名だけでどの部分を指定しているのか理解できる。
  • コードの再利用性が高い。

デメリット

  • クラス名が長くなる。

おわりに


今回は、代表的なCSSの設定規則のBEMの基礎を紹介しました。

他の細かいルールもありますので、また別の機会に紹介します。



-CODING
-

執筆者:


comment

関連記事

[CSS] linear-gradient()グラデーション

どうも、べ〜やんです。 今回は、グラデーションを指定するlinear-gradient()を紹介します。 linear-gradient()とは linear-gradient()は背景色をグラデーシ …

アイコンを簡単に表示できる!Icongram

どうも、べ〜やんです。 今回は、簡単にアイコンを表示できるサービス『Icongram』を紹介します。 Icongramとは 引用元:Icongram Icongramは9つのアイコンライブラリからAP …

HTMLの改行方法

どうも、べ〜やんです。 今回はHTML5で改行する方法を紹介します。 タグが必要 HTML5で改行するためには普段文章を書いている感覚と同じようにEnterで改行はできません。 <p>HT …

[CSS] 変形transformの使い方

どうも、べ〜やんです。 今回は、デザインを変形させるtransformを紹介します。 transformとは transformは変形を指定するプロパティで、transitionとセットで使用すること …

[HTML] 特殊文字で空白スペース

どうも、べ〜やんです。 今回は、特殊文字を使って空白スペースを挿入する方法を紹介します。 空白スペース htmlではひとつの半角スペースは空白スペースとして使用できますが、連続した半角スペースはひとつ …