🟦

CSSにおけるBEMで二重アンダースコア(__)を使用する理由

2024/10/11に公開

BEMで要素名を表す際に二重アンダースコア(__)を使用する理由は以下の通りです:

  1. 明確な区別:
    二重アンダースコアを使用することで、ブロック名と要素名を明確に区別できます。これにより、クラス名の可読性が向上します。

  2. 単一アンダースコアとの混同を防ぐ:
    ブロック名に単一アンダースコアが使用されている場合(例:main_nav)、要素名との区別が難しくなります。二重アンダースコアを使用することで、この問題を解決できます。

  3. 修飾子との区別:
    BEMでは、修飾子を表すために単一アンダースコア(_)を使用することがあります。二重アンダースコアを要素に使用することで、修飾子との混同を避けられます。

  4. 命名規則の一貫性:
    BEMの公式ドキュメントでは、要素名をブロック名から分離するために二重アンダースコアを使用することが推奨されています。これにより、BEMを使用するプロジェクト間で一貫性が保たれます。

  5. 深い階層の表現を避ける:
    BEMでは要素の要素を作成することは推奨されていません。二重アンダースコアを使用することで、不必要に深い階層を表現することを避けられます。

例えば:

.main-nav__list /* 正しい */
.main-nav_list /* 避けるべき */

.main-nav__link--active /* 正しい */
.main-nav_link-active /* 避けるべき */

これらの理由により、BEMでは要素名を表す際に二重アンダースコア(__)を使用することが一般的です。この規則を採用することで、クラス名の意味がより明確になり、コードの可読性と保守性が向上します。

Discussion