Задать вопрос
@VL5438

Могут ли одни и те же блоки БЭМ использоваться на одной или разных страницах без некоторых своих элементов?

Известно, что элементы блока БЭМ не могут использоваться в отрыве от блока, а могут ли одни и те же блоки на разных страницах или в пределах одной страницы использоваться без некоторых своих элементов, либо вложенных блоков ИЛИ с изменённой последовательностью этих самых элементов ИЛИ например вложенный блок в одном месте является так же и элементом (микс), а в другом месте только вложенным блоком (то есть по сути опять отсутствие элемента)?

Пример:

На главной странице мы имеем блок header (шапку), который содержит два других блока (header-top и header-bottom), которые так же являются его элементами:

<header class="header">
	<div class="header-top header__header-top">
		<a class="logo header-top__logo" href="#">
			<img class="logo__img" src="#" alt="Логотип">
		</a>
		<!-- ... -->
	</div>
	<div class="header-bottom header__header-bottom">
		<nav class="header-bottom__menu">
			<ul class="header-bottom__menu-items">
				<li class="header-bottom__menu-item"><a href="#" class="header-bottom__menu-link">...</a></li>
				<li class="header-bottom__menu-item"><a href="#" class="header-bottom__menu-link">...</a></li>
				<li class="header-bottom__menu-item"><a href="#" class="header-bottom__menu-link">...</a></li>
			</ul>
		</nav>
		<!-- ... -->
	</div>
</header>


А на всех остальных страницах мы используем тот же самый БЭМ блок header, но в нём уже отсутствует вложенный блок header-bottom (который так же являлся элементом блока header):

<header class="header">
	<div class="header-top header__header-top">
		<a class="logo header-top__logo" href="#">
			<img class="logo__img" src="#" alt="Логотип">
		</a>
		<!-- ... -->
	</div>
</header>


А так же в именах классов по БЭМ в данном примере ошибок нет?

UPD: Меня интересует именно строгое соответствие методологии БЭМ, чтобы знать их требования.
  • Вопрос задан
  • 488 просмотров
Подписаться 1 Простой 10 комментариев
Решения вопроса 1
Get-Web
@Get-Web
Front-End Developer
использоваться без некоторых своих элементов,

Конечно, блок может быть вообще без элементов

ИЛИ с изменённой последовательностью этих самых элементов

Конечно можно, а если невозможно изменить что-либо не нарушив стандартное поведение, применяется модификатор или микс.

например вложенный блок в одном месте является так же и элементом (микс)

Да, любой блок может быть миксом другого блока или элемента.

В данном примере я использовал названия блоков "header-top" и "header-bottom", является ли это ошибкой?

Тут конечно нужно изучать в контексте, но header-1 и header-2 будет значительно практичнее. Если поменять местами header-top и header-bottom, что по сути должно быть возможным хотя бы в теории, то из-за таких названий будет полный диссонанс, в то время как абстрактные имена header-1 и header-2 ни к чему нас не обязывают и ни чем не ограничивают.

Еще можно использовать префикс например t-header b-header, интуитивно мы можем себе представить что это top и bottom, но по факту это всего лишь абстрактное название header
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@BigSmoke
> а могут ли
Могут.

> в данном примере ошибок нет?
Нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы
28 дек. 2024, в 19:01
1500 руб./за проект
28 дек. 2024, в 18:56
1500 руб./за проект
28 дек. 2024, в 18:50
1200 руб./в час