Ich verwende einen BEM-Ansatz zum Schreiben von HTML + CSS. Mit dieser Syntax:Benennung von BEM-Unterblöcken
- Blocks: block_name
- Elements: block_name__element_name
- Modifikatoren: block_name__element_name - Modifikator
ich verwirrt, wenn ich einen Block in einem anderen Block haben. Zum Beispiel möchte ich in einem Header, dass der Header ein Block ist, den ich referenzieren kann, und das Nav und das Logo als Blöcke. Ich möchte diese Nav- und Logoblöcke als die innerhalb des site_headers verweisen. Aber wie würde ich das schreiben? Das Verketten von Blöcken wie block_name__sub_block_name erscheint ziemlich lang.
Hat jemand eine typische Art, wie sie dieses Beispiel schreiben würden?
<div class="site_header__logo">
<a class="site_header__logo__link">
<img class="site_header__logo__image">
</a>
</div>
<nav class="site_header__main_nav">
<ul>
<li class="site_header__main_nav__item">
<a class="site_header__main_nav__link">Home</a>
</li>
<li class="site_header__main_nav__item">
<a class="site_header__main_nav__link">About Us</a>
</li>
<li class="site_header__main_nav__item">
<a class="site_header__main_nav__link">Contact Us</a>
</li>
</ul>
</nav>
<div class="site_header__phone">
<p class="site_header__phone__number">
555.555.5555
</p>
</div>
.site_header .logo ist, was ich suche. Aber wie würde das auf BEM Styling übertragen? Ist es in Ordnung, einen Modifikator wie .logo - site_header oder seinen eigenen Namen .site_header_logo zu verwenden, oder sollte er wie .site_header__logo angekettet sein? – jeremyhoover
Unter diesen drei verwenden Sie einen Modifikator wie '.logo - site_header'. Wenn Sie können, wählen Sie Ihren Modifier-Namen basierend auf dem Stilunterschied, den Modifier bringt. Sowohl '.site_header_logo' als auch' .site_header__logo' legen eine enge Kopplung nahe, und dies steht im Gegensatz zur unabhängigen Natur von BEM-Blöcken. – katranci
danke! Ich verstehe BEM jetzt besser. – jeremyhoover