Skip to content

components

garevna edited this page May 20, 2019 · 16 revisions

ico25 Компонентная вёрстка

Компонентная верстка - создание малых и независимых CSS-компонентов

Многократно используемый CSS-компонент может применяться к различным элементам в различных частях дерева DOM и не зависит от типов элементов, поскольку опирается на классы

CSS-компонент связан с элементом-контенером с помощью уникального имени класса

Элемент-контейнер может содержать другие элементы

Инкапсюляция стилей этих элементов обеспечивается использованием наследственных селекторов:

.some-component {
    ...
}

.some-component img {
    ...
}

Таким образом стили внутри компонента изолируются от стилей других элементов на странице

Иными словами, мы используем уникальное имя для набора стилей, что позволяет многократно использовать этот набор без повторения CSS-правил

Главное достоинство такого подхода - возможность использовать модификаторы, обеспечивающие различное поведение и внешний вид одного и того же CSS-компонента


ico20 BEM

Технология 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 { ... } 

© Irina H.Fylyppova 2019



Занятие 1


Занятие 2


Занятие 3


Занятие 4


Занятие 5


Занятие 6


Занятие 7


Занятие 8


Дополнительно

Clone this wiki locally