「フロックス(FLOCSS)」と「BEM」は、CSSの設計・管理をシンプルかつ効果的に行うための手法です。それぞれの特徴をまとめます。
1. フロックス(FLOCSS)
FLOCSS(“Function, Layer, Object, Component, Scope Styles”)は、CSSのコードをカテゴリに分けて整理する設計手法です。FLOCSSでは、CSSを以下の3つのレイヤーに分類します。
• Foundation(基礎): リセットや基本の色設定、グリッドなど、プロジェクト全体で共通する基本スタイルを定義します。
• Layout(レイアウト): ページのレイアウトやエリア(ヘッダー、サイドバー、フッターなど)に関するスタイルを指定します。
• Component(コンポーネント): 実際のUIパーツ(ボタン、カード、モーダルなど)ごとにスタイルを定義し、再利用性のあるモジュールとして管理します。
この構造により、CSSをコンポーネント単位で管理しやすくなり、コードの再利用性が高まります。
特徴
• 各レイヤーごとに役割が明確で、特定の用途に応じたスタイルが整理されているため、メンテナンス性が高い。
• コンポーネント単位のスタイル定義で、UI変更や追加が容易に行える。
2. BEM(Block Element Modifier)
BEM(“Block Element Modifier”)は、CSSクラス命名規則の一つで、CSSの構造を分かりやすくし、スタイルの競合を減らすことを目的としています。BEMでは、CSSクラス名を次の3つの概念で管理します。
• Block(ブロック): 独立したコンポーネント(例:card、button)。
• Element(要素): ブロックの一部を構成する要素(例:card__title、button__icon)。
• Modifier(修飾子): 特定のバリエーションを表すスタイル(例:card--primary、button--large)。
BEMの命名例
<div class="card card--primary">
<h2 class="card__title">Title</h2>
<p class="card__content">Content goes here</p>
</div>
特徴
• 各クラス名が機能や構造を明示するため、HTML構造が理解しやすい。
• ブロックごとに独立しているため、スタイルの競合が発生しにくく、メンテナンスが容易。
FLOCSSとBEMの組み合わせ
FLOCSSとBEMは相性が良く、組み合わせて使用することが多いです。たとえば、FLOCSSでレイヤーを定義し、BEMでコンポーネント内部のクラスを命名することで、柔軟で拡張性の高いCSS設計が可能になります。