БЭМ и другие подходы к именованию классов

Как только в проекте появляется больше пары десятков классов, без какой-то системы именования начинается путаница — одинаковые по смыслу названия конфликтуют между разными компонентами, а понять по одному только имени класса, к чему он относится, становится непросто.

БЭМ — методология именования, где каждый класс описывает блок, элемент внутри него и, при необходимости, модификатор состояния. Например, card это блок, card__title его элемент, а card--featured модификатор, который меняет внешний вид блока целиком в особом случае.

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

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

Существуют и другие подходы, вроде атомарного CSS, где классы описывают не компонент, а конкретное свойство — например, отдельный класс на отступ, отдельный на цвет текста. У этого подхода свои сильные стороны, особенно в больших проектах, но он требует другой привычки мышления при вёрстке.

Единого правильного подхода на все случаи не существует — важно скорее придерживаться какой-то системы последовательно на протяжении всего проекта, чем метаться между разными принципами именования от страницы к странице внутри одного сайта.

Подробное описание методологии с примерами доступно на странице о соглашении именования БЭМ.

Поделиться в социальных сетях

Отправить комментарий

0 Комментарии

Отправить комментарий (0)

#buttons=(Хорошо) #days=(20)

Мы используем файлы cookie для улучшения работы сайта. Подробнее
Хорошо
×