CSSのBEM仕様学習ノート

2824 ワード

ブロック(Block)

/*      BEM     */
.list   

要素(Element)


ブロック内のサブエレメントはブロックのサブエレメントであり、サブエレメントのサブエレメントはbemでもブロックの直接サブエレメントとされている.1つのブロック内の要素のクラス名には、親ブロックの名前を接頭辞として使用する必要があります.上の例のようにli.itemはリストのサブ要素です
/*      */
.list{}
.list .item{}

/* BEM   */
.list{}
.list__item{}

修飾子(modifier)


「修飾子」は、ブロックの特定の状態、例えば
  • 複数色のボタン
    .btn-list{}
    .btn-list .btn_red{}
    .btn-list .btn_green{}
    
    .btn-list{}
    .btn-list__btn_red{}
    .btn-list__btn_green{}
  • アクティブ化リスト項目
    .list{}
    .list.select{}
    .list .item{}
    .list .item.active{}
    
    .list{}
    .list_select{}
    .list__item{}
    .list__item_active{}
  • 書く原則.

  • 原則として2 セレクタネスト
  • は現れない.

    推薦の書き方

    .xxx{}
    .xxx__item{}
    .xxx__item_hightlight{}
    .xxx__product-name{}
    .xxx__link{}
    .xxx__ming-zi-ke-yi-hen-chang{}
    
    //     
    .xxx__item_current{
        .xxx__link{}
    }

    意味のない_


    新しい要素を新しいブロックで保存


    もっと意味がある

    ネーミングスペース

  • .l-:レイアウト
  • .o-:オブジェクト(objects)
  • .c-:コンポーネント
  • .js:jsのフック(JavaScript hooks)
  • .is-|.has-:ステータスクラス
  • .t1|.s1:レイアウトサイズ(typography sizes)
  • .u-:実用クラス
  • リファレンスドキュメント

  • フロントエンドcss、less、sass符号化仕様---BEM
  • BEM公式文書