-
Notifications
You must be signed in to change notification settings - Fork 2
components
Компонентная верстка - создание малых и независимых CSS-компонентов
Многократно используемый CSS-компонент может применяться к различным элементам в различных частях дерева DOM и не зависит от типов элементов, поскольку опирается на классы
CSS-компонент связан с элементом-контенером с помощью уникального имени класса
Элемент-контейнер может содержать другие элементы
Инкапсюляция стилей этих элементов обеспечивается использованием наследственных селекторов:
.some-component {
...
}
.some-component img {
...
}Таким образом стили внутри компонента изолируются от стилей других элементов на странице
Иными словами, мы используем уникальное имя для набора стилей, что позволяет многократно использовать этот набор без повторения CSS-правил
Главное достоинство такого подхода - возможность использовать модификаторы, обеспечивающие различное поведение и внешний вид одного и того же CSS-компонента
Технология BEM ( block, element, modifier ), разработанная ребятами из Яндекса, представляет собой способ информативного именования CSS-классов, чтобы сделать их более понятными для других разработчиков
Смысл BEM заключается в том, чтобы рассказать другим разработчикам больше о том, что делает фрагмент разметки только от своего имени
Прочитав некоторый HTML-код с некоторыми классами, можно понять, как связаны элементы
- что-то может быть просто компонентом
- что-то может быть дочерним элементом этого компонента
- а что-то может быть вариацией или модификатором этого компонента
Схема именования CSS-классов:
.block { ... }
.block__element { ... }
.block--modifier { ... }где
- .block представляет класс компонента
- .block__element представляет класс потомка элемента класса .block
- .block--modifier представляет другую версию класса .block
Здесь использованы двойные, а не одиночные дефисы и подчеркивания
Причина этого в том, что в имени самого блока может быть использован дефис или подчеркивание
/* Блок */
.site-search { ... }
/* Элемент */
.site-search__field { ... }
/* Модификатор */
.site-search--full { ... }
Компонентная вёрстка
BEM
Всемирная паутина
Пример
