Открыть меню    

Коротко о бэм

Блок

Блок – уникальное ключевое слово (имя блока). Название блока характеризует назначение блока. Блок может быть простым или составным, то есть содержать в себе другие блоки. Блоки можно вкладывать друг в друга.
Обязательное условие для блоков: блоки должны быть независимыми, это значит, что любой блок можно вставить в любое место на странице.

Имя блока – это CSS класс блока.

Дефис (-) – применяется для разделения длинных имен блоков или элементов.

<ul class="menu">
  …
</ul>

Блоки, особенности:

  1. никогда не опираться на элементы (то есть теги), только на классы:
          не должно быть селекторов с тегами (касается и элементов)
  2. всем классам внутри блока давать имена начинающиеся с имени этого блока:
  3. У блока или элемента должно быть уникальное имя.
  4. Блоки и даже элементы могут быть вложенными (составными).

Как вы можете отметить (на изображении ниже) на mail.ru допускается для вложенных блоков использовать не отдельные класс (через пробел), а использовать, при необходимости, дополнительное двойное подчеркивание
(news__tabs__item__link news__tabs__item__link_first)
.

У блока должен быть префикс «b-».

Элемент

CSS-класс элемента — это имя блока и имя элемента, разделенные определенными символами. Например, два подчеркивания
( имя-блока__имя-элемента)
– применяются для разделения имени блока от имени элемента.

<ul class="menu">
 <li class="menu__item">…</li>
 <li class="menu__item">…</li>
</ul> 

Модификатор

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

Модификатор имеет имя и значение. Модификатор состоит из имени блока, имени модификатора (тип модификации), и значение модификатора (для mail.ru значение необязательно). Для разделения имени модификатора и значения модификатора можно использовать одно подчеркивание (_).

<ul class="menu">
  <li class="menu__item">Index</li>
  <li class="menu__item menu__item_state_current">Products</li>
  <li class="menu__item">Contact</li>
</ul>

У блока или элемента должно быть уникальное имя. Блоки и даже элементы могут быть вложенными (составными).

Префиксы

b-
обычные блоки
h-
обёртки, используется для оборачивания нескольких блоков
l-
раскладки
g-
глобальные стили

Полезные статьи о БЭМ

коротко о бэм
  • Что такое БЭМ?
  • Слайд-шоу - БЭМ!
  • Методология БЭМ: маленькие сайты

Комментарии к статье