Именование класса элементов-оболочек при использовании BEM
Я понимаю, что при использовании BEM имена классов не должны напрямую отражать структуру HTML, но как должен быть назван элемент-оболочка? Пожалуйста, игнорируйте мой конкретный синтаксис(вблизи костюм); он все еще следует за BEM, только с другим способом дифференцирования элементов.
например:
<div class="?">
<footer class="PageFooter">
<h4 class="PageFooter-brand>…</h4>
<ul class="PageFooter-contactDetails">…</ul>
</footer>
<div>
в настоящее время я бы классифицировал обертку в этом экземпляре как PageFooterWrapper
, но это кажется неуклюжим, потому что обертка не независимый-он существует исключительно для PageFooter
. Очевидно, что префикс все с PageFooter-
- Это смешно, так что остается только рассматривать оболочку как часть PageFooter
: PageFooter-wrapper
. Это раздражает меня, поскольку есть подразумеваемое предложение, применяемое этим.
Итак, каким должен быть класс обертки?
2 ответов
то, как я всегда обращался с ним, - это обертка всегда должна быть блоком так:
<div class="PageFooter">
<footer class="PageFooter-inner">
<h4 class="PageFooter-brand">...</h4>
<ul class="PageFooter-contactDetails">...</ul>
</footer>
</div>
на Bблокировки содержит Elements так вместо того, чтобы что-то вокруг моего Bзамок я просто следовал вместе с Eпринцип lement и начал использовать inner
's вместо контейнеров
Я на самом деле успешно применяются два класса, мой шаблон выглядит следующим образом:
<div class='page-section bem-block'>
<div class='bem-block__element'>
<!-- etc etc -->
</div>
</div>
эффективно используя служебный класс для выполнения определенных функций оболочки. УСБ вероятно, будет похож на этот:
.page-section {
width: 100%;
}
@media screen and (min-width: 1200px) {
margin: 0 auto;
width: 1200px;
}
Я нашел это хорошо работает на практике. Это также было бы возможно для .bem-block
и это современники, чтобы наследовать от .page-section
.
это решение дополняет решение Дэна Гэмбла.