1️⃣
Разметка
  • 1. 1. Введение
  • 1. 2. Введение в HTML
  • 1. 3. Подходы к разметке
  • 1. 4. Работа со спецификацией
  • 1. 5. Проверка валидности
  • 1. 6. Часто используемые теги и типовые ошибки
  • 1. 7. Методика семантической разметки
    • 1. 7. 1. Определяем DOCTYPE
    • 1. 7. 2. Шаг 1. Выделяем крупные смысловые блоки на каждой странице сайта
    • 1. 7. 3. Шаг 2. Размечаем в блоках крупные смысловые разделы
    • 1. 7. 4. Шаг 3. Выделяем заголовок всего документа и заголовки смысловых разделов
    • 1. 7. 5. Шаг 4. Размечаем мелкие элементы в смысловых разделах
    • 1. 7. 6. Шаг 5. Размечаем фразовые элементы
  • 1. 8. Использование тега br
  • 1. 9. DOCTYPE
  • 1. 10. Как работает атрибут target
  • 1. 11. Правильное использование ссылок и кнопок
  • 1. 12. Как делать пустые ссылки?
  • 1. 13. Как правильно скрывать элементы?
  • 1. 14. Когда применять список терминов (dl)?
  • 1. 15. Как использовать ссылки mailto: и tel:
  • 1. 16. Именование сущностей
  • 1. 17. Разметка по БЭМ
    • 1. 17. 1. Введение
    • 1. 17. 2. Предыстория
    • 1. 17. 3. Частые проблемы из-за неправильной CSS-архитектуры проекта
    • 1. 17. 4. Основные понятия
    • 1. 17. 5. Свод правил БЭМ-а
    • 1. 17. 6. БЭМ для CMS
    • 1. 17. 7. Названия классов по БЭМ
    • 1. 17. 8. БЭМ — это про компоненты
    • 1. 17. 9. Темизация
    • 1. 17. 10. Плюсы и минусы БЭМ
    • 1. 17. 11. Алгоритм выделения блоков
    • 1. 17. 12. Типовые интерфейсные решения
    • 1. 17. 13. Блоки и элементы
    • 1. 17. 14. Миксы блоков и элементов
    • 1. 17. 15. Модификаторы блоков и элементов
    • 1. 17. 16. Типовые ошибки
  • Дополнительные материалы
Powered by GitBook
On this page
  1. 1. 17. Разметка по БЭМ

1. 17. 15. Модификаторы блоков и элементов

Previous1. 17. 14. Миксы блоков и элементовNext1. 17. 16. Типовые ошибки

Last updated 1 year ago

В этой группе типовых интерфейсных шаблонов собраны примеры использования модификации блоков и их элементов.

Случай 1

Блок может измениться. Есть два или больше вариантов отображения этого блока.

Примерная разметка:

<div class="block">
  <div class="block__element-1"></div>
  <div class="block__element-2"></div>
...
</div>
...
<div class="block block--modifier">
  <div class="block__element-1"></div>
  <div class="block__element-2"></div>
...
</div>
Схема для случая 1

Обычная карточка и карточка с любым шевроном (Новинка, Акция, Скидка и другие).

Распределение по блокам, элементам и модификаторам:

Разметка:

<section class="product-preview">
  <h3 class="product-preview__title">
    <a class="product-preview__link" href="#">Клубничный торт</a>
  </h3>
  <img class="product-preview__img" src="/adaptive/29/book/html/bem/common-cases-modifiers/img/photo-1.jpg" width="224" height="160" alt="">
  <p class="product-preview__description">Бисквит, клубника, крем, желатин, сахар</p>
  <p class="product-preview__price">120 ₽</p>
  <button class="product-preview__button button" type="button">В корзину</button>
</section>
<section class="product-preview product-preview--new">
  <h3 class="product-preview__title">
    <a class="product-preview__link" href="#">Брауни</a>
  </h3>
  <img class="product-preview__img" src="/adaptive/29/book/html/bem/common-cases-modifiers/img/photo-2.jpg" width="224" height="160" alt="">
  <p class="product-preview__description">Какао, фундук, карамель, шоколадная стружка</p>
  <p class="product-preview__price">135 ₽</p>
  <button class="product-preview__button button" type="button">В корзину</button>
</section>

Случай 2

Некоторые элементы внутри БЭМ-блока могут изменяться и их внешний вид отличается от базового состояния.

Примерная разметка:

<div class="block">
  <div class="block__element"></div>
  <div class="block__element block__element--modifier"></div>
...
</div>

Под эту схему подходят фотографии из каталога, которым поставили лайк.

Блоки, элементы и модификаторы:

Разметка интерфейсного элемента:

<section class="card">
  <img class="card__photo" src="img/photo-1.jpg" width="300" height="300" alt="">
  <button class="card__favorite" type="button">46</button>
  <a class="card__comment" href="#">8</a>
  <a class="card__views" href="#">192</a>
</section>
<section class="card">
  <img class="card__photo" src="/adaptive/29/book/html/bem/common-cases-modifiers/img/photo-2.jpg" width="300" height="300" alt="">
  <button class="card__favorite card__favorite--checked" type="button">135</button>
  <a class="card__comment" href="#">112</a>
  <a class="card__views" href="#">82</a>
</section>

Случай 3

Бывают случаи, когда оба описанные выше шаблона (модификация блока и модификация элемента) используются на одном БЭМ-блоке одновременно.

Примерная разметка:

<div class="block">
  <div class="block__element"></div>
  <div class="block__element block__element--modifier"></div>
...
</div>
...
<div class="block block--modifier">
  <div class="block__element-1"></div>
  <div class="block__element-2"></div>
...
</div>

Допустим, это карточка товара, который закончился. Во-первых, в таких карточках кнопка купить/заказать становится не активной, во-вторых, сама карточка может отличаться по внешнему виду.

Блоки, элементы и модификаторы:

Разметка карточки:

<section class="card">
  <img class="card__photo" src="/adaptive/29/book/html/bem/common-cases-modifiers/img/photo-1.jpg" width="300" height="300" alt="">
  <p class="card__description">Журнальный стол из массива дуба</p>
  <button class="card__button" type="button">Заказать</button>
</section>
<section class="card card--out-of-stock">
  <img class="card__photo" src="/adaptive/29/book/html/bem/common-cases-modifiers/img/photo-2.jpg" width="300" height="300" alt="">
  <p class="card__description">Универсальная подставка из липы</p>
  <button class="card__button card__button--disabled" type="button">Нет в наличии</button>
</section>

Случай 4

Вложенный блок отображается не в своём, обычном, базовом состоянии, а немного видоизменённым.

Примерная разметка:

<div class="block">
  <div class="block__element-1"></div>
  <div class="block__element-2 block-2 block-2--modifier">
    <div class="block-2__element"></div>
  </div>
...
</div>

К примеру, в блоке контакты ссылки на страницы в социальных сетях различаются по цвету.

Блоки, элементы и модификаторы для интерфейсного элемента:

Разметка для элементов:

<div class="social">
  <p class="social__caption">Мы в соцсетях:</p>
  <ul class="social__list">
    <li class="social__item">
      <a class="social__link social-link social-link--theme-youtube" href="#">
        <svg class="social-link__icon"></svg>
        <span class="social-link__title">YouTube</span>
      </a>
    </li>
    <li class="social__item">
      <a class="social__link social-link social-link--theme-tiktok" href="#">
        <svg class="social-link__icon"></svg>
        <span class="social-link__title">TikTok</span>
      </a>
    </li>
    ...
  </ul>
</div>

Случай 5

БЭМ-блок может менять свой внешний вид и при этом быть ещё и другим БЭМ-блоком с модификацией.

Примерная разметка:

<div class="block"></div>
...
<div class="block block--modifier block-2 block-2--modifier">
  <div class="block__element"></div>
...
</div>

Под эту схему подходят всплывающие окна, для которых модификацией может служить вариант позиционирования (вверху экрана, внизу экрана).К примеру, нужно согласиться использовать Cookie на сайте, в то же время периодически появляется окно с советом дня.

Распределение по БЭМ-сущностям:

Разметка:

<div class="popup"></div>
...
<div class="popup popup--top notification notification--theme-light">
  <p class="notification__message">Наш сайт использует cookies, <a href="#">подробнее по ссылке</a>.</p>
  ...
</div>
...
<div class="popup popup--right notification notification--theme-dark">
  <p class="notification__message"><b>Совет дня:</b> для поиска нужных изображений воспользуйтесь строкой поиска.</p>
  ...
</div>
Пример для случая 1
Блоки, элементы и модификаторы для карточки товара
Схема для случая 2
Пример для случая 2
Блоки, элементы и модификаторы для каталога с фотографиями
Схема для случая 3
Пример для случая 3
Блоки, элементы и модификаторы для карточки товара
Схема для случая 4
Пример для случая 4
Блоки, элементы и модификаторы для ссылок на соцсети
Схема для случая 5
Пример для случая 5
БЭМ-сущности для всплывающих окон на сайте
Схема для случая 1
Схема для случая 2
Схема для случая 3
Схема для случая 4
Пример для случая 4
Блоки, элементы и модификаторы для ссылок на соцсети
Схема для случая 5
Пример для случая 1
Блоки, элементы и модификаторы для карточки товара
Пример для случая 3
Блоки, элементы и модификаторы для карточки товара
Пример для случая 2
Блоки, элементы и модификаторы для каталога с фотографиями
Пример для случая 5
БЭМ-сущности для всплывающих окон на сайте