@altkov

БЭМ: Может ли блок быть собственным элементом?

Скажем, у нас есть какой-то блок, в котором элементы идут в строчку.

<div class="card">
    <div class="card__elem1">...</div>
    <div class="card__elem2">...</div>
</div>


Однако, что если нам понадобиться добавить элемент снизу, но при этом оставить его в рамках текущего блока? Делаем подобную верстку.

<div class="card">
    <div class="card__row">
        ...
    </div>
    <div class="card__bottom">...</div>
</div>


Однако теперь нам придется изменить и верстку всех старых блоков, которые без элемента снизу:

<div class="card">
    <div class="card__row">
        ...
    </div>
</div>


Старые блоки переусложнены, внутренний контейнер здесь не нужен.

Вот и вопрос: а что если мы скомбинируем блок и его элемент на одном html-элементе?

<div class="card card__row">
    ...
</div>


Теперь блок сам себе элемент.

Вполне себе лаконично.
С сайта бэм: (Элемент) "Составная часть блока, которая не может использоваться в отрыве от него."
Условие выполнено. Мы и правда не используем элемент в отрыве от блока.
Вот и вопрос бред это или можно практиковать.
  • Вопрос задан
  • 134 просмотра
Пригласить эксперта
Ответы на вопрос 2
@altkov Автор вопроса
На самом деле проблема решается модификатором.

<div class="card card_is-row">
    ...
</div>


(card_is-row вместо card_row для того чтобы избежать путаницы с элементом card__row)
Однако, все равно хочется узнать, можно ли по БЭМ делать блок собственным элементом.
Ответ написан
Комментировать
Get-Web
@Get-Web
Front-End Developer
Нет, так нельзя. Для блоков есть модификаторы, а элементы блока являются его содержимым. Ваш пример без контекста проблемы не понятен, тем не менее смысл БЭМ не только в переиспользовании, но и в возможности модифицировать, дорабатывать и обновлять согласовано с методологией. И да, если вам нужна внутренняя обертка, а её нет, то придется её добавить во всех блоках, либо придумать способ модифицировать блок под конкретную задачу в конкретном месте.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы