Atitit.css は、bem プロジェクトにおける CSS の構成と管理を指定します
1 BEM とは何ですか? 1
1.1. ブロック 2
1.2. 要素 2
1.3. BEM ツリー (DOM ツリーと同様)。 31.4. Modifier (修飾子) 3
2. ブロックの独立性 4
3. 独立した CSS クラスの名前付け 5
4.
5. OOCSS6
6. ACSS6
7. CSS の編成と管理 まとめ attilax のまとめ 7
8. Atibem7
8.1. 修飾子は bem メソッドを使用しません。ステータス 7
8.2 を表現するには、よく書く .current .active を使用します。 Block のネーミングは良いですね。 7
8.3. 要素の名前付け8
9. SASS や LESS などの CSS 前処理言語を使用して記述されていますか? ? ? 8
10. 参考資料 8
1.
BEM とは何ですか?
BEM は、ブロック、エレメント、モディファイアーの略です。これらの用語の意味については、この記事で詳しく説明します。
プログラミング方法論の最も一般的な例の 1 つは、オブジェクト指向プログラミング (OOP) です。このプログラミング パラダイムは多くの言語で見られます。 BEM と OOP はある程度似ています。これは、コードと一連のパターンを使用して現実の状況を記述する方法であり、使用されるプログラミング言語に関係なく、プログラム エンティティのみを考慮します。Yandex は、BEM 手法を使用してサービスを開発する (ロシアの) 大企業です。
BEM は、Yandex Company が提案するフロントエンド プロジェクト開発手法です。 BEM という名前は、方法論の 3 つのコンポーネント、つまりブロック、要素、修飾子の英語の頭字語に由来しています。これら 3 つの異なるコンポーネントは BEM エンティティと呼ばれます。
著者:: ★(attilax)>>> ニックネーム: Laowa’s Claw (フルネーム:: Attilax Akbar Al Rapanui) 中国語名: Ailong、電子メール:1466519819@qq.com
1.1。ブロック
ブロックは、アプリケーションの「ビルディング ブロック」と同様に、独立したエンティティです。ブロックは、単純または複合 (他のブロックを含む) のいずれかになります。
ブロック
ブロックは、Web アプリケーション開発では一般にコンポーネントまたはモジュールと呼ばれます。各ブロックは論理的および機能的に互いに独立しています。コンポーネント関連の JavaScript、CSS コード、HTML テンプレートはブロック内にカプセル化されます。ブロックが独立しているため、アプリケーション開発で再利用できるため、コードの重複が減り、開発効率が向上します。ブロックはページ上のどこにでも配置でき、ブロック同士を入れ子にすることもできます。同じブロックの複数のインスタンスがページ上に存在できます。ブロックの異なるインスタンスは同様の構造を持っています。ブロックの典型的な例はメニューです。プロジェクト内には、同様の構造とスタイルを持つ複数の異なるメニューが存在する場合があります。
Elements
Elements はブロックの構成要素です。要素はブロックの外で使用できません。 BEM では、要素を他の要素内にネストすることはお勧めしません。メニュー ブロックでは、各メニュー項目はブロック内の要素です。
1.2.
要素
要素はブロックの一部であり、特定の機能を持ちます。要素はコンテキストに依存します。要素は、それらが属すると想定されているブロックのコンテキスト内でのみ意味を持ちます。
したがって、BEM は最大でも B+E+M レベル 3 しか持つことができず、B+E+ を持つことは不可能ですE+..+E+M 超長 クラス名では、E が同じ名前を持つことはできません
1.3.
BEM ツリー (DOM ツリーと同様)。
モディファイアの
既存のブロックとほんの少しだけ異なる別のブロックの開発を避けるために、モディファイアの概念を導入します。
2.
ブロックの独立性プロジェクトが発展するにつれて、ページ上のいくつかのブロックを追加、削除、または移動することがよくあります。たとえば、ロゴ ブロックと認証ブロックを交換したり、メニューを検索ブロックの下に配置したりすることができます。
このプロセスを容易にするために、ブロックは独立している必要があります。
独立したブロックは、他のブロック内にネストする場合も含め、ページ上のどこにでも配置できます。
3.
独立したCSSCSSの観点から:
BEM ではタグ セレクターの使用が許可されていないため、最初は受け入れるのが困難です... .menu li でできることは、li ごとに .menu-item を記述する必要があります
· ブロック (または要素) には一意の「名前」(CSS クラス)は CSS ルールで使用できます。
· ID セレクターは使用しないでください: 非固有のニーズを満たすことができるのはクラス セレクターのみです
·
· HTML 要素は、完全にコンテキストフリーではないため、CSS セレクター (.menu td など) として使用できません。
· カスケード セレクター (注釈: .menu .item など) の使用は避けてください。
考えられる CSS クラスの命名スキームは次のとおりです:
ブロックの CSS クラス名はブロックの名前 (ブロック名) です。
要素の CSS クラス名は、ブロック名と要素名をいくつかの記号で区切って組み合わせたものです。