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

В мире фронтенд-разработки поддержание чистоты и масштабируемости кода имеет решающее значение. Одним из популярных подходов, помогающих достичь этой цели, является соглашение об именах BEM. BEM означает «Блок», «Элемент» и «Модификатор» и обеспечивает структурированный способ именования классов CSS. В этой статье мы рассмотрим различные методы и приведем примеры кода, которые помогут вам освоить BEM-именование в ваших проектах.

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

Вот пример названия классов БЭМ:

<div class="block">
  <div class="block__element">
    <div class="block__element--modifier"></div>
  </div>
</div>
  1. Именование блоков.
    При именовании блоков используйте строчные буквы и дефисы для разделения слов:

    <div class="header"></div>
  2. Именование элементов.
    Чтобы определить элементы внутри блока, используйте два подчеркивания, чтобы разделить имя блока и имя элемента:

    <div class="header">
    <div class="header__logo"></div>
    <div class="header__menu"></div>
    </div>
  3. Модификаторы имен:
    Модификаторы используются для изменения внешнего вида или поведения блоков или элементов. Используйте два дефиса, чтобы разделить имя элемента или блока и имя модификатора:

    <div class="header">
    <div class="header__logo header__logo--large"></div>
    <div class="header__menu header__menu--active"></div>
    </div>
  4. BEM в CSS:
    Примените соглашение об именах BEM в своем CSS, чтобы оно соответствовало структуре HTML:

    .header {
    /* Block styles */
    }
    .header__logo {
    /* Element styles */
    }
    .header__logo--large {
    /* Modifier styles */
    }
    .header__menu {
    /* Element styles */
    }
    .header__menu--active {
    /* Modifier styles */
    }
  5. BEM в JavaScript:
    Вы также можете использовать BEM для именования классов в JavaScript, чтобы улучшить читаемость кода:

    const logoElement = document.querySelector('.header__logo');
    logoElement.classList.add('header__logo--large');

Внедрение соглашения об именах BEM в ваших проектах может значительно повысить удобство сопровождения и масштабируемость кода. Он обеспечивает четкую структуру именования классов CSS и обеспечивает единообразие вашей кодовой базы. Следуя примерам и рекомендациям, приведенным в этой статье, вы будете на пути к освоению БЭМ-именований.

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