ホームページ >ウェブフロントエンド >CSSチュートリアル >CSS Architecture Block-Element-Modifier(BEM)-SitePoint
BEM(ブロックエレメントモジファー)は、フロントエンド開発方法論、命名規則、および関連するツールのセットです。 Yandexを産み、大規模なチームによる効率的な開発のために設計されています。この説明は、コアコンセプトと命名システムに焦点を当てています。
BEMは、再利用可能なコンポーネントブロックのコレクションとしてWebサイトを宣伝し、組み合わせてインターフェイスを構築できます。 ブロックは、図2.3に示すように、ウェブサイトセクション(ヘッダー、フッター、サイドバーなど)です。 ここの「ブロック」とは、HTMLページセグメントを指します
図2.3。 ホームページには、ヘッダー、メイン、フッターブロックが含まれる場合があります
ブロックはネストできます。たとえば、ヘッダーブロックには、ロゴ、ナビゲーション、およびフォームブロックの検索が含まれる場合があります(図2.4)。 フッターにはサイトマップブロックが含まれている場合があります。
図2.4。ロゴ、ナビゲーション、および検索ブロックを含むヘッダーブロック
要素はブロックよりも粒状です。 BEMのドキュメントには、「要素は特定の関数を実行するブロックの一部です。要素はコンテキスト依存です。親ブロック内でのみ意味があります。」 たとえば、検索フォームブロックには、テキスト入力要素と送信ボタン要素が含まれています(図2.5)。 ここで、「要素」とは、HTML要素ではなく、要素を設計することを指します
図2.6。ウェブサイトの記事のプロモーションブロック
ブロックと要素は、Bemの命名規則の中核を形成します:
ブロックのバリエーション(例:暗い検索ボックス)クラス名で修飾子を使用します。
ブロックと要素名は、2つのアンダースコア()で区切られています。 修飾子は、2つのハイフンによってブロック/要素の名前から分離されています(
暗いテーマのバージョン:
<code class="language-html"><div class="search"> <div class="search__wrapper"> <label for="s" class="search__label">Search for:</label> <input type="text" id="s" class="search__input"> <input type="submit" class="search__submit" value="Search"> </div> </div></code>マークアップおよびCSSでは、
およびsearch--inverse
がsearch__label--inverse
に追加されています。クラスは交換ではありません。 クラスセレクターのみが使用されます。子および子孫のセレクターは許可されていますが、クラスもターゲットにする必要があります。要素とIDセレクターは回避されます。これにより、セレクターの特異性が低くなり、副作用を防ぎ、マークアップパターンとは無関係にCSSを作成します。 一意のブロックと要素名は、命令の競合を防ぎます。 利点は次のとおりです
新しいチームメンバーのコードの読みやすさと理解の向上。
以上がCSS Architecture Block-Element-Modifier(BEM)-SitePointの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。