БЭМ

3 года назад

Nikolai Gagarinov

Ответы

1

БЭМ — это методология разработки интерфейсов, основанная на разделении пользовательского интерфейса на независимые сущности: блоки, элементы и модификаторы. Подход формирует единые правила именования и организации кода, что упрощает поддержку, масштабирование и повторное использование компонентов.

Метод был разработан инженерами компании «Яндекс». Его ключевая задача — устранить хаотичность в стилях и логике интерфейса. В отличие от простых соглашений по оформлению таблиц стилей, БЭМ применяется не только к каскадным таблицам стилей (CSS — каскадные таблицы стилей), но и к сценариям на языке JavaScript (язык программирования для работы с поведением страницы).

Методология базируется на строгом принципе: каждый компонент должен быть независимым и не влиять на другие части интерфейса.

LUwV21AnENmv image

Зачем применяется БЭМ

Использование БЭМ позволяет стандартизировать разработку и устранить типовые ошибки при работе с интерфейсами.

Основные преимущества:

  • упрощение структуры кода и снижение сложности поддержки.
  • минимизация конфликтов между стилями.
  • отказ от избыточных комментариев за счет говорящих имен классов.
  • возможность многократного использования компонентов.
  • ускорение командной разработки за счет единых правил.

При отсутствии структурированного подхода стили могут пересекаться. Например, универсальный класс элемента меню может примениться в разных частях страницы и привести к нежелательным визуальным эффектам. БЭМ устраняет эту проблему за счет уникальных имен.

Принцип именования

Именование в БЭМ строится по строгой схеме. Название класса отражает его принадлежность и роль.

Структура:

  • блок — независимая сущность.
  • элемент — часть блока.
  • модификатор — характеристика состояния или внешнего вида.

Пример:

  • блок: menu.
  • элемент: menu__item.
  • модификатор: menu__item_active.

Такая запись делает структуру понятной без анализа кода.

Блок

Блок — это автономный компонент интерфейса. Он может существовать независимо от других частей страницы.

Примеры блоков:

  • навигационное меню.
  • форма авторизации.
  • карточка товара.
  • шапка сайта.

Особенности блока:

  • не зависит от окружающих элементов.
  • может использоваться повторно.
  • содержит собственные стили и поведение.
  • может включать другие блоки или элементы.

Блок можно перемещать внутри проекта без изменения логики. Это позволяет строить интерфейс как набор независимых модулей.

Элемент

Элемент — составная часть блока. Он не существует отдельно от него.

Основные характеристики:

  • принадлежит только одному блоку.
  • используется только внутри блока.
  • отражает функциональную часть компонента.

Примеры:

  • пункт меню.
  • кнопка внутри формы.
  • изображение в карточке товара.

Именование элемента:

  • формат: блок__элемент.
  • двойное подчеркивание отделяет элемент от блока.

Элементы могут быть вложенными, но всегда остаются частью одного блока. При необходимости самостоятельного использования сущность должна быть выделена в отдельный блок.

Модификатор

Модификатор задает состояние или внешний вид блока или элемента.

Он применяется, когда нужно изменить:

  • цвет.
  • размер.
  • поведение.
  • состояние (активен, отключен и т.д.).

Типы модификаторов:

  • булевые — фиксируют наличие состояния.
  • со значением — задают конкретный вариант.

Примеры:

  • button_disabled — кнопка недоступна.
  • card_theme_dark — темная тема оформления.

Правила:

  • модификатор не используется отдельно от блока или элемента.
  • имя отделяется одним подчеркиванием.
  • один модификатор не должен противоречить другому.

Модификаторы могут изменяться динамически. Например, при нажатии кнопки или при ошибке ввода данных.

Изоляция компонентов

Главная идея БЭМ — изоляция. Каждый блок работает независимо.

Это достигается за счет:

  • уникальных имен классов.
  • отсутствия вложенных селекторов, зависящих от структуры документа.
  • отказа от глобальных стилей.

Преимущества изоляции:

  • изменения в одном блоке не влияют на другие.
  • упрощается поиск ошибок.
  • повышается предсказуемость интерфейса.

Миксы

Микс — это объединение нескольких сущностей на одном элементе.

Он используется для:

  • повторного применения стилей.
  • комбинирования поведения.
  • создания новых компонентов без дублирования кода.

Пример:

  • элемент может одновременно быть частью меню и боковой панели.
  • при этом он получает стили и поведение от двух блоков.

Миксы позволяют гибко управлять интерфейсом без нарушения структуры.

Организация файлов

Методология предполагает разделение проекта на независимые части.

Структура:

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

Преимущества такого подхода:

  • упрощается навигация по проекту.
  • блоки можно переносить между проектами.
  • возможна выборочная загрузка компонентов.

Дополнительно в директории блока могут храниться:

  • изображения.
  • шрифты.
  • вспомогательные файлы.

Особенности применения

БЭМ не накладывает жестких ограничений на разметку, но требует дисциплины.

Рекомендации:

  • использовать осмысленные названия.
  • избегать сокращений, не отражающих смысл.
  • не связывать стили с вложенностью элементов.
  • не смешивать роли блоков и элементов.

Недостатки:

  • длинные имена классов.
  • увеличение объема кода.
  • необходимость строгого соблюдения правил.

Для компенсации используются:

  • автоматическое дополнение в редакторах.
  • инструменты сжатия кода.
  • шаблонизаторы для генерации разметки.

Сравнение с другими подходами

Существуют альтернативные методологии организации стилей:

  • объектно-ориентированные таблицы стилей (OOCSS — подход, основанный на разделении структуры и оформления).
  • модульная архитектура таблиц стилей (SMACSS — система категоризации стилей).
  • систематизированные стили (Systematic CSS — структурированный подход к оформлению).

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

Применение в разработке

Методология используется в:

  • разработке пользовательских интерфейсов.
  • создании веб-приложений.
  • командной работе над крупными проектами.

Она особенно эффективна при:

  • большом количестве компонентов.
  • частом переиспользовании кода.
  • необходимости масштабирования.

БЭМ формирует единый язык внутри команды. Это снижает количество ошибок и ускоряет разработку.

12 дней назад

Nikolai Gagarinov

0

БЭМ (Block Element Modifier) - это методология разработки веб-проектов, которая предлагает определенный подход к именованию CSS-селекторов и структурированию кода. БЭМ помогает создавать более гибкие и модульные проекты, уменьшает количество конфликтов имен и упрощает поддержку и масштабирование кода.

2 года назад

Елена Редькина

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845