БЭМ: Конвенция об именовании CSS

RedDeveloper
23.03.2023 02:41
БЭМ: Конвенция об именовании CSS

Я часто вижу беспорядочный код CSS, особенно если проект большой. Кроме того, я совершал эту ошибку в профессиональных или личных проектах и чувствовал, что больше не хочу смотреть на длинный код CSS с нарушенной структурой.

Как же предотвратить беспорядочный код и хорошо управлять структурой? Одним из решений является использование соглашения об именовании.

Соглашение об именовании помогает понять структуру кода. Кроме того, существует множество соглашений об именовании для CSS: например, BEM, SMACSS, OOCSS, Atomic CSS и ITCSS. Я рассмотрю соглашение BEM, поскольку оно является самым известным соглашением об именовании CSS.

Что такое BEM?

BEM расшифровывается как Block, Element, Modifier. Само название классов CSS состоит из трех категорий и помогает разработчикам создавать последовательный, модульный и многократно используемый код.

  1. Блок: Элемент высокого уровня на странице. Обычно он получает название в зависимости от своего назначения или функции, например "заголовок", "меню" или "кнопка".
  2. Элемент: Часть блока, имеющая отдельную функцию или значение. Для его названия используется имя блока, за которым следует двойное подчеркивание.
  3. Модификатор: Вариант блока или элемента, который изменяет его внешний вид или поведение. Для его названия используется название блока или элемента, за которым следует двойное тире и название модификатора.

Рассмотрим пример

  <nav class="navbar">
    <ul class="navbar__menu">
      <li class="navbar__menu-item"><a href="#">Home</a></li>
      <li class="navbar__menu-item"><a href="#">About</a></li>
      <li class="navbar__menu-item navbar__menu-item--active">
        <a href="#">Contact</a>
      </li>
    </ul>
  </nav>

Классы в этом примере следуют конвенции BEM, что означает, что вы можете видеть, что блок navbar содержит элемент меню navbar с тремя пунктами. Обычно активное навигационное меню имеет стиль, отличный от остальных, поэтому для его выделения можно использовать модификаторы в имени класса элемента, например "navbar__menu-item - active".

Ресурсы

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?

20.08.2023 18:21

Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в 2026-2027 годах? Или это полная лажа?".

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией

20.08.2023 17:46

В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox

19.08.2023 18:39

Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в частности, магию поплавков и гибкость flexbox.

Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest

19.08.2023 17:22

В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для чтения благодаря своей простоте. Кроме того, мы всегда хотим проверить самые последние возможности в наших проектах!

Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️

18.08.2023 20:33

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

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL

14.08.2023 14:49

Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип предназначен для представления неделимого значения.