BEM は、Web 開発に対するコンポーネントベースのアプローチです。ユーザー インターフェイスを独立したブロックに分割し、複雑な UI インターフェイスをより簡単かつ迅速に開発し、コピー アンド ペーストせずに既存のコードを再利用できるようにするというアイデアです。 BEM は、ブロック、要素、および修飾子で構成されます。セレクターでは、関係を拡張するために次のコネクタが使用されます。
例: ブロック名_修飾子名 ブロック名__要素名--修飾子名 ブロック名_修飾子名--修飾子値 ブロック名__要素名--修飾子名--修飾子値 基本概念 ブロック コード スニペットは再利用でき、このコードは他のコンポーネントに依存しません。つまり、ブロックを使用できます。ブロックは任意の深さまで相互にネストできます。
要素 要素はブロックの一部であり、独立して存在しません。任意の要素は意味的にブロックにバインドされます。 特徴:
修飾子 修飾子は、ブロックまたは要素上のタグです。これらを使用して、スタイル、動作、または状態を変更します。ブロックまたは要素のコネクタは '--' です。 応用 ブロックを他のブロックに対して相対的に配置 最善のアプローチは、ブロックと要素を組み合わせて使用することです。ブロック上で余白と位置を設定できない問題を解決します。 例: <body class="page"> <!-- ヘッダーとナビゲーション--> <header class="header page__header">...</header> <!-- フッター --> <footer class="footer page__footer">...</footer> </本文> .page__header { パディング: 20px; } .page__footer { パディング: 50px; } ブロック内の要素の配置 ネスト化は、ブロックの追加の子要素を作成することによって実現されます。 例: <body class="page"> <div class="page__inner"> <!-- ヘッダーとナビゲーション--> <header class="header">...</header> <!-- フッター --> <footer class="footer">...</footer> </div> </本文> .page__inner { 右マージン: 自動; 左マージン: 自動; 幅: 960ピクセル; } 命名について セレクター名は、それが表す BEM エンティティを完全に正確に記述する必要があります。 例: 。ボタン {} .ボタン__アイコン {} .ボタン__テキスト {} .button_theme_islands {} ブロック要素を扱っていることを直接指示できます。 html では次のように使用します: <button class="button button_theme_islands"> <span class="button__icon"></span> <span class="button__text">...</span> </ボタン> 次の CSS では、同じ判断を下すのが困難になります。 。ボタン {} .アイコン {} 。文章 {} .theme_islands {} 私は自分の git プロジェクト miniui で BEM 仕様を採用し、sass を使用して BEM を実装しました。ご興味がございましたら、こちらをご覧ください: https://github.com/banyaner/miniui 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 |
<<: Docker を使用した Alibaba Cloud Server のインストールと、仮想マシンへのインストールで遭遇する落とし穴 (問題のまとめ)
効果は以下のとおりです。参考プログラム: <!DOCTYPE html> <htm...
Deepin 2014 のダウンロードとインストールDeepin 2014 のダウンロードとインスト...
ステップ1: Stowをインストールするこの例では CentOS を使用しているため、拡張 EPEL...
Mysql の追加、削除、変更、クエリステートメントのシンプルな実装追加されたレコード: テーブル名...
序文私が必要としているのは、構文の強調表示、関数プロンプト、自動行折り返し、およびコードの折りたたみ...
<br />昨日、W3C で新しいHTML 5 ドラフト (ワーキング ドラフト) が ...
トラブル発生が突然で、業務も迫っていたため、現場のスクリーンショットを撮る時間がありませんでしたので...
効果: GROUP_CONCAT関数は、フィールド値を文字列に連結することができます。デフォルトの区...
理由: MySQL 5.7.5 以降では機能依存関係の検出が実装されています。 only_full_...
バージョン 0.6 あたりで、Docker に privileged が導入されました。このパラメー...
序文ページの HTML 構造にネストされたボックスが多数含まれている場合、ページに複数の垂直スクロー...
スクリプトの要件: MySQL データベースを毎日バックアップし、スクリプトを 7 日間保存します。...
<br />関連記事: Web コンテンツ ページ作成に関する 9 つの実用的な提案、W...
メタ属性には、name と http-equiv の 2 つがあります。 name 属性は主に、We...
1. Javaプロジェクトをjarパッケージにパッケージ化するここではMavenツールを使用します...