p
BEM の概念の 1 つは、再利用可能なコンポーネントを作成することです。これに反するような要素を使用します。
なんで?
指定するp
ことで、コンポーネントを使用できる方法を制限しています。正しく表示するには、p
タグを使用する必要があります。たとえば、次のマークアップはコンポーネントでは機能しません。
<div class="section-hi main-section">
<h2 class="main-section_header">Blah</h2>
<span>Generated from the CMS</span> <!-- this will not pick up the styles -->
</div>
特異性
もう 1 つの重要なポイントは、BEM が単一のクラス名を使用して、特異性を最小限に抑えることを目指していることです。p
特異性を高めたスタイルを作成します。
.main-section p
単一のクラスよりも特異性が高いため、このスタイルをユーティリティ クラスでオーバーライドすることは今では困難です。
CSS の詳細について
ソリューション
代わりに、クラス名を使用して要素を説明するという考え方です。そうすれば、好きなマークアップを使用することを選択でき、コンポーネントは期待どおりに表示されます。例えば
<div class="section-hi main-section">
<h2 class="main-section_header">Blah</h2>
<h3 class="main-section_subHeader>Generated from the CMS</h3> <!-- This will work -->
</div>
常にクラス名を使用する必要がありますか?
要素のスタイルを作成し、クラス名を使用しないことが問題ない、または必要な場合があります。たとえば、特定のマークアップでのみ使用したいコンポーネントがあるとします。そうすることは完全に有効です。
概要
原則として、そうしない正当な理由がない限り、常に単一クラスのルールを守るようにしてください。そうしないと、後でつまずきます。
BEM の詳細については、この投稿をお勧めします http://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem-syntax/