А вы верите в систематизацию?
или “Методологии верстки”
С чего все началось
Что же не так?
Команда:
Методологии
БЭМ - методология
Блок-Элемент-Модификатор
(методология разработана в Яндексе)
БЭМ
Основная идея:
Принципы:
Блок
часть страницы, являющаяся логически независимой
от остального наполнения
Элемент
часть блока, отвечающая за отдельную функцию, он может находиться только в составе блока и не имеет смысла в отрыве от него
Модификатор
свойство блока или элемента, отвечающее за его внешний вид или поведение, описывают состояние блока или элемента
Система именования
Имя блока
формируется как префикс-имя-блока
.b-menu { ... }
.b-text-input { ... }
Имя элемента
создается по схеме: префикс-имя-блока__имя-элемента
.b-menu__item { ... }
.b-text-input__label { ... }
*Элементы элементов не используются
.b-block__elem1__elem2
Система именования
Имя модификатора блока
префикс-имя-блока_имя-модификатора_значение-модификатора
.b-menu_layout_horiz{ ... }�.b-text-input_disabled{ ... }
Имя модификатора элемента
префикс-имя-блока__имя-элемента_имя-модификатора_значение-модификатора
.b-menu__item_state_current{ ... }
.b-text-input__label_active{ ... }
БЭМ - инструменты
Для сборки
Оптимизаторы
Шаблонизаторы
БЭМ
Плюсы:
БЭМ
Минусы
БЭМ
Минусы:
AMCSS
Модули атрибутов для CSS
(Глен Маддерн)
AMCSS
Основная идея:
Принципы:
AMCSS (концепция)
Modules - блоки и элементы (БЭМ). Для описания модулей используются HTML атрибуты.
Variations - модификаторы (БЭМ). Представлены значением атрибутов, и изменяют/переопределяют изначальные стили Modules.
Traits
<div class="u-posAbsoluteCenter" am-position="absolute center">� <div class="u-textTruncate u-textCenter" am-text="truncate center">� Very centered text.� </div>�</div>
AMCSS
Используется малоизвестный селектор «~=», который работает как атрибут класса: выбирает элементы, значения атрибутов которых содержат указанные слова, разделенные пробелами
Группировка значений по атрибутам
AMCSS
Плюсы:
Минусы:
OCSS
OOCSS
Основная идея:
многократность использования написанного кода.
Принципы:
.big-parent-class .cool-child-class {
//styles
}
.cool-cahild-class {
//styles
}
Оформление
Структура
OOCSS
Советы при использовании
div.cool-class .cool-class
link link link link
OOCSS
Плюсы:
Минусы:
Atomic CSS
Атомарный CSS
(Тьерри Коблентц)
Atomic CSS
Основная идея:
Принципы:
Atomic CSS
Atomic CSS
Плюсы:
Минусы:
OPOR
OPOR
Основная идея:
структурирование и систематичность селекторов. Совмещает в себе лучшие (по мнению автора) черты БЭМа, OOCSS.
Принципы:
Именование классов основных блоков:
Почти как в БЭМе: блоки (.block), элементы (.block__elem), модификаторы (.block_mod).
OPOR
Использование каскада
Примеси
По принципу OOCSS
Состояния
Префикс “.is-”
.is-expanded, .is-visible, .is-highlighted
OPOR
JS-селекторы
Префикс “.js-”
.js-files, .js-select
Обёртки
Не несут никакой семантики, используются для оформления
.header-i
Порядок классов:
блоки, примеси, JS-хуки, состояния:
<div class="upload-files scrollable js-files is-hidden">
OPOR
Плюсы:
Минусы:
MCSS
MCSS
Основная идея:
распределение стилей по уровням. Многослойная система организации CSS основана на принципах OOCSS и БЭМ.
Принципы:
MCSS
Фундамент:
Контекст:
по всему файлу
MCSS
Слой 1 - базовый:
MCSS
Слой 2 - проектный:
MCSS
Слой 3 - косметический:
MCSS
Плюсы
Минусы
SMACSS
Масштабируемая и модульная архитектура для CSS
(Джонатан Снук)
SMACSS
Основная идея:
Принципы:
SMACSS структура
Разделение стилей на 5 частей
Base rules - Layout rules - Modules rules - State rules - Theme rules
Base rules
стили основных элементов сайта — body, input, button, ul, ol и др., reset.css
Layout rules
стили макета - здесь находятся стили глобальных элементов - шапки, футера, сайдбара и т.п
Modules rules
стили модулей - блоков, которые могут использоваться несколько раз на одной странице
State rules
стили состояния - прописываются различные состояния модулей и скелета сайта
(допустимо использование «!important»)
Theme rules
описываются стили оформлений
SMACSS
Плюсы:
Минусы:
FUN
Плоская иерархия селекторов, служебные стили, компоненты с неймспейсами
(Бен Фрейн)
FUN
Основная идея:
Принципы:
FUN
F - Flat hierarchy of selectors - плоская иерархия селекторов
U - Utility styles - служебные классы
N - Name-spaced components - компоненты с неймспейсами
FUN
Плюсы:
Минусы:
DoCSSa
DoCSSa
Основная идея:
Основная идея - разделение внешнего вида и структуры. Методология основана на использовании препроцессора SASS
Принципы:
Элементы страницы рассматриваются как компоненты.
Описание компонентов состоит из двух частей (из двух mixins) - внешний вид и структура.
DoCSSa
Файловая структура
==== INIT // сброс
==== BASE // базовые стили - переменные, цвета, шрифты
==== COMPONENTS // переиспользуемые компоненты
/component_name
- /папка с mixins оформлений
- структурный mixin
==== SPECIFICS // специальные стили, используемые в проекте
+---init�¦ ¦ _reset.scss
+---base�¦ ¦ __base.scss�¦ +---project�¦ ¦ _fonts.scss�¦ ¦ _mixins.scss�+---components�¦ +---button�¦ ¦ _button.scss
¦ ¦ +---skins
¦ ¦ ¦ _b_skin.scss
¦ +---tabs�¦ _tabs.scss�+---specifics�¦ ¦ __specifics.scss�¦ ¦ _main.scss�| | _inbox.scss�
DoCCSa
Различный внешний вид для компонентов с одинаковой структурой
@include tabs('.articleTabs', $defaultSkin: false);�@include tabs-skin-alternate('.articleTabs');
в описании структуры компонента проверяем: �@if $defaultSkin != false {� @include tabs-skin-default($selector);�}
DoCCSa
Именование
БЭМ
состояния записываются с помощью патерна "_is_"
.mainMenu_item _is_current.
Я руководитель команды необученных коал, как мне использовать силу DoCSSa?
DoCSSa
Плюсы:
Минусы:
Инструменты
Как принять эту веру
План:
Выводы
Спросить очень просто
Спасибо за внимание!
Вопросики?
Ирa
@lev_iryna
facebook.com/levina.iryna.i
Лиза
@elizaselivanova
facebook.com/lizaveta.selivanova.9
:)
:)
бабушка сказала, что бы мы присмотрели себе женихов, поэтому обратите внимание на контакты ниже