Эта группа содержит интерфейсные шаблоны, в которых один и тот же HTML-элемент одновременно будет и элементом вышестоящего блока и самостоятельным блоком. Как известно, в этой ситуации мы используем миксование.
Случай 1
Этот интерфейсный шаблон напоминает случай 2 из группы блоки и элементы. Отличием будет то, что вложенный блок будет ещё и элементом вышестоящего блока.
К примеру, форма с отзывом о покупке. Поле для ввода — это элемент формы и самостоятельный блок. Аналогично, кнопка Отправить — это и элемент формы и отдельный самостоятельный блок со своей структурой.
Пример для случая 1
Явно покажем блоки и элементы:
Блоки и элементы для формы с отзывом о покупке
Напишем разметку:
Случай 2
На практике часто миксуются не только блок и элемент, но и два-три-четыре блока. Каждый блок отвечает за что-то одно, один — за сетку, другой — за выравнивание, третий — за отступы и так далее. В идеале выходит, что один блок отвечает за одну функцию.
Один HTML-элемент — это два блока, допустим, бизнес-сущность и сеточный блок.
Примерная разметка:
Схема для случая 2
Например, раздел сайта с типовой двухколоночной сеткой, один блок отвечает за тему блока (services), второй за сетку (card).
Пример для случая 2
Выделим блоки:
Бизнесовый и сеточный блоки для раздела сайта
Разметим интерфейсный элемент:
Случай 3
Блок — это элемент вышестоящего БЭМ-блока и микс двух других блоков, а элементы вложенных блоков миксуются как элементы одновременно первого и второго вложенного блока.
Примерная разметка:
Схема для случая 3
К примеру, боковая панель в личном кабинете пользователя. Во-первых, панель — это элемент страницы, во-вторых, это ещё и меню. А первый и последний пункт меню — это шапочный и подвальный элемент панели, как элементы с особым оформлением.
Пример для случая 3
Добавим выделение для блоков и элементов:
Блоки и элементы для боковой панели в личном кабинете пользователя
<section class="services card">
<h3 class="services__title">Поможем вам найти подходящего специалиста</h3>
<img class="services__img" src="/adaptive/29/book/html/bem/common-cases-mixing/img/photo-1.jpg" width="300" height="300" alt="">
<p class="services__text">Ответьте на несколько вопросов и система подберёт психологов и терапевтов, которые помогут вам справиться с проблемой.</p>
<button class="services__button" type="button">Подобрать психолога</button>
</section>