SlideShare a Scribd company logo
1 of 72
А вы верите в
систематизацию?
или “Методологии верстки”
С чего все началось
● Масштабируемость
● Количество кода
● Поддержка кода
● Структура кода
Команда:
● Разный стиль кода
● Разные подходы к организации вёрстки
● Множество повторных реализаций
● Трудности рефакторинга
Что же не так?
Методологии
БЭМ - методология
Блок-Элемент-Модификатор
(методология разработана в Яндексе)
ru.bem.info
БЭМ
Основная идея:
- типовые проекты должны разрабатываться быстро,
но жить долго
Принципы:
- особое именование классов
- независимость блоков
- повторное использование существующего кода
- масштабируемость команд разработчиков
- точечные изменения с минимальными затратами
Блок
часть страницы, являющаяся логически независимой
от остального наполнения
Элемент
часть блока, отвечающая за отдельную функцию, он
может находиться только в составе блока и не имеет
смысла в отрыве от него
Модификатор
свойство блока или элемента, отвечающее за его
внешний вид или поведение, описывают состояние
блока или элемента
Система именования
Имя блока
формируется как префикс-имя-блока
.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{ ... }
БЭМ - инструменты
Для сборки
- bem-tools
- enb-bem
Оптимизаторы
- CSSO
- SVGO
Шаблонизаторы
- BEM-XJSTе
- XJSTе
БЭМ
Плюсы:
- достаточно одного класса;
- cпецифичность CSS-правил: проблема и решение;
- прощай каскад?!
- Абсолютно Независимые Блоки (коцепция АНБ)
БЭМ
Минусы
БЭМ
Минусы:
- “длинные” названия классов
- сложность освоения командой
AMCSS
Модули атрибутов для CSS
(Глен Маддерн)
amcss.github.io
AMCSS
Основная идея:
- использование кастомных атрибутов
Принципы:
- Modules (блоки)
- Variations (модификаторы)
- Traits (пространства имен)
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
Объектно ориентированный CSS
by Nicole Sullivan
OOCSS
Основная идея:
многократность использования написанного кода.
Принципы:
● объект - повторяющиеся стили
● отделение структуры, от оформления;
● отделение контейнеров от содержимого.
.big-parent-class .cool-child-class {
//styles
}
.cool-cahild-class {
//styles
}
Оформление
Структура
OOCSS
Советы при использовании
● Принцип выбора
(для похожих элементов, например, один вариант стиля
link link link -> link)
● Избегайте прикрепления классов к элементам
(div.cool-class -> .cool-class)
● Используйте сетки
● Использовать принцип одной страницы
OOCSS
Плюсы:
- нет определенных правил
- более быстрые страницы
- легко обслуживаемые таблицы стилей
- низкий порог вхождения
Минусы:
- нет определенных правил
- html обрастает классами
- отслеживание существующих модулей
Atomic CSS
Атомарный CSS
(Тьерри Коблентц)
acss.io
Atomic CSS
Основная идея:
- повторное использование стилей
Принципы:
- разделение стилей
- для каждого повторно используемого свойства
должен быть сформирован отдельный класс
- один класс - одно свойство
Atomic CSS
- один класс - один стиль
- каскад
- независимые классы
Atomic CSS
Плюсы:
- небольшой объем CSS
- легко вводить изменения
- возможность повторного использования
Минусы:
- семантика, настройки отображения элементов
переносятся непосредственно в HTML
OPOR
Оne Page Of Rules
by Артём Сапегин
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
Многослойная система организации
CSS
by OK.RU
MCSS
Основная идея:
распределение стилей по уровням. Многослойная система организации
CSS основана на принципах OOCSS и БЭМ.
Принципы:
- Фундамент
- Слой 1
- Слой 2
- Слой 3
- Контекст
MCSS
Фундамент:
- Корневые малоизменяемые стили
- Располагаются в самом начале
Контекст:
- браузеры, особенности девайса, среда, Media queries
- располагаются рядом с модифицируемым(изменяемым) классом
по всему файлу
MCSS
Слой 1 - базовый:
- Абстрактные названия.
- Самые переиспользуемые элементы
- Каскад от 2 и 1 слоя
MCSS
Слой 2 - проектный:
- Изолированные модули (компоненты)
- Уникальные названия.
- Каскад только от 2го слоя
MCSS Слой 3 - косметический:
- простые, маловлияющие стили
- по принципу OOCSS
MCSS Слой 3 - косметический:
- простые, маловлияющие стили
- по принципу OOCSS
MCSS
Плюсы
- хорошо изолированные модули
- строго определенная логика
Минусы
- немного непривычное расположение классов
- сложная логика распределения по слоям и правил взаимодействия
между слоями
SMACSS
Масштабируемая и модульная
архитектура для CSS
(Джонатан Снук)
smacss.com
SMACSS
Основная идея:
- разделение стилей на 5 составляющих
Принципы:
- Base rules
- Layout rules
- Modules rules
- State rules
- Theme rules
Разделение стилей на 5 частей
Base rules - Layout rules - Modules rules - State rules - Theme rules
SMACSS структура
Base rules
стили основных элементов сайта — body,
input, button, ul, ol и др., reset.css
Layout rules
стили макета - здесь находятся стили
глобальных элементов - шапки, футера,
сайдбара и т.п
Modules rules
стили модулей - блоков, которые могут
использоваться несколько раз на одной
странице
State rules
стили состояния - прописываются различные
состояния модулей и скелета сайта
(допустимо использование «!important»)
Theme rules
описываются стили оформлений
SMACSS
Плюсы:
- управляемый код
- расширяемый код
- возможность повторного использования
- дополнительные уровни семантики
Минусы:
- непривычно использовать
- надо думать и следовать правилам :)
FUN
Плоская иерархия селекторов,
служебные стили, компоненты с
неймспейсами
(Бен Фрейн)
benfrain.com
FUN
Основная идея:
- упрощение создания стилей и их поддержки, автор
взял лучшее от БЭМ и SMACSS
Принципы:
- Flat hierarchy of selectors
- Utility styles
- Name-spaced components
FUN
F - Flat hierarchy of selectors - плоская иерархия
селекторов
U - Utility styles - служебные классы
N - Name-spaced components - компоненты с
неймспейсами
FUN
Плюсы:
- удобно писать
- удобно поддерживать
- мало требований
Минусы:
- для небольших проектов
SASS ориентированная методология
by Matthieu Larcher & Fabien Zibi
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?
● Пока ваши коалы учат SASS, они могут продолжать писать старый css
в папке 'specifics'.
● Как только один из них почувствует, что он готов, он может начать
писать компоненты, которые могут использовать все
● Пройдет немного времени и другие коалы тоже захотят писать такие
компоненты
● Сложив все знания будет намного легче писать компоненты и
переделывать старый код в компоненты
● Не забывайте периодически давать своим коалам много свежего
эвкалипта
DoCSSa
Плюсы:
- четкие правила
- полная автономность компонентов
- продуманный переход
Минусы:
- необходимо знание препроцессора SASS
Инструменты
- Препроцессоры
- Библиотеки готовых компонентов
- Плагины для сред разработки
- Инструменты для проверки синтаксиса
- https://github.com/stubbornella/oocss
- AbsurdJS - for Atomic CSS
- https://github.com/benschwarz/am-grid - for AMCSS
- БЭМ-инструменты
Как принять эту веру
План:
1) Плакать, паниковать, страдать, ныть, жаловаться, сокрушаться о
выбранной профессии
2) Успокоится и изучить правила. Донести правила до команды
3) Разрабатывать новые страницы элементы в соответствии с правилами
выбранной методологии
4) Все элементы, которые затрагиваются при внесении изменений,
багфиксинге и т.д. стараться переписывать под выбранную
методологию
5) В свободное время - рефакторить и не забывать тестировать)
6) Спрашивать совета и ревью
Выводы
- Это полезно
- Это удобно
- Это заставляет думать
- Можно придумать что-то свое
- Можно помогать другим
Спросить очень просто
Спросить очень просто
Спасибо за внимание!
Ирa
@lev_iryna
facebook.com/levina.iryna.i
Вопросики?
Лиза
@elizaselivanova
facebook.com/lizaveta.selivanova.9
бабушка сказала, что бы мы присмотрели себе женихов, поэтому обратите внимание на контакты ниже
:) :)

More Related Content

What's hot

Vizija Ciljevi Misija
Vizija Ciljevi MisijaVizija Ciljevi Misija
Vizija Ciljevi MisijaDejan Jeremic
 
Урок 11. Створення, редагування та форматування графічних об′єктів у текстово...
Урок 11. Створення, редагування та форматування графічних об′єктів у текстово...Урок 11. Створення, редагування та форматування графічних об′єктів у текстово...
Урок 11. Створення, редагування та форматування графічних об′єктів у текстово...Василь Тереховський
 
Лекція № 1
Лекція № 1 Лекція № 1
Лекція № 1 eugene titov
 
Презентація Бази даних Урок 1.pptx
Презентація Бази даних Урок 1.pptxПрезентація Бази даних Урок 1.pptx
Презентація Бази даних Урок 1.pptxssuserceb60a
 
Урок 3. Векторні зображення, їхні властивості. Формати файлів векторних зобра...
Урок 3. Векторні зображення, їхні властивості. Формати файлів векторних зобра...Урок 3. Векторні зображення, їхні властивості. Формати файлів векторних зобра...
Урок 3. Векторні зображення, їхні властивості. Формати файлів векторних зобра...Ihor Tkachenko
 
Огляд судової практики КГС ВС
Огляд судової практики КГС ВСОгляд судової практики КГС ВС
Огляд судової практики КГС ВСPravotv
 
Презентація з дисципліни "Цивільне прав та процес"
Презентація з дисципліни "Цивільне прав та процес"Презентація з дисципліни "Цивільне прав та процес"
Презентація з дисципліни "Цивільне прав та процес"Александр Кухарев
 
Аускультация легких у детей
Аускультация легких у детейАускультация легких у детей
Аускультация легких у детейSergei Biyalt
 
Опрацювання об’єктів мультимедіа
Опрацювання об’єктів мультимедіаОпрацювання об’єктів мультимедіа
Опрацювання об’єктів мультимедіаVladimir Khalabuzar
 
morfologija-vjezba 1
morfologija-vjezba 1morfologija-vjezba 1
morfologija-vjezba 1Emina Bubic
 
Правила поведінки і безпеки життєдіяльності в комп'ютерному класі
Правила поведінки і безпеки життєдіяльності в комп'ютерному класіПравила поведінки і безпеки життєдіяльності в комп'ютерному класі
Правила поведінки і безпеки життєдіяльності в комп'ютерному класіVladyslavKochkin
 
Вивчаємо мову програмування Lazarus
Вивчаємо мову програмування LazarusВивчаємо мову програмування Lazarus
Вивчаємо мову програмування LazarusЮлія Артюх
 
Острый аппендицит
Острый аппендицитОстрый аппендицит
Острый аппендицитmedumed
 
Типи веб-сторінок та веб-сайтів
Типи веб-сторінок та веб-сайтівТипи веб-сторінок та веб-сайтів
Типи веб-сторінок та веб-сайтівYulia Vlasenko
 
Uvod u plastičnu kirurgiju
Uvod u plastičnu kirurgijuUvod u plastičnu kirurgiju
Uvod u plastičnu kirurgijuDomina Petric
 
Зразок заповнення Форми 4: приклад заповнення реєстраційної картки форма 4
Зразок заповнення Форми 4: приклад заповнення реєстраційної картки форма 4Зразок заповнення Форми 4: приклад заповнення реєстраційної картки форма 4
Зразок заповнення Форми 4: приклад заповнення реєстраційної картки форма 4Реєстратор Київ
 
Поняття моделі даних, бази даних
Поняття моделі даних, бази данихПоняття моделі даних, бази даних
Поняття моделі даних, бази данихVladyslavKochkin
 

What's hot (20)

Vizija Ciljevi Misija
Vizija Ciljevi MisijaVizija Ciljevi Misija
Vizija Ciljevi Misija
 
Урок 11. Створення, редагування та форматування графічних об′єктів у текстово...
Урок 11. Створення, редагування та форматування графічних об′єктів у текстово...Урок 11. Створення, редагування та форматування графічних об′єктів у текстово...
Урок 11. Створення, редагування та форматування графічних об′єктів у текстово...
 
8 клас урок 4
8 клас урок 48 клас урок 4
8 клас урок 4
 
Лекція № 1
Лекція № 1 Лекція № 1
Лекція № 1
 
Anatomija Cerebellum
 Anatomija Cerebellum Anatomija Cerebellum
Anatomija Cerebellum
 
Презентація Бази даних Урок 1.pptx
Презентація Бази даних Урок 1.pptxПрезентація Бази даних Урок 1.pptx
Презентація Бази даних Урок 1.pptx
 
Урок 3. Векторні зображення, їхні властивості. Формати файлів векторних зобра...
Урок 3. Векторні зображення, їхні властивості. Формати файлів векторних зобра...Урок 3. Векторні зображення, їхні властивості. Формати файлів векторних зобра...
Урок 3. Векторні зображення, їхні властивості. Формати файлів векторних зобра...
 
Огляд судової практики КГС ВС
Огляд судової практики КГС ВСОгляд судової практики КГС ВС
Огляд судової практики КГС ВС
 
Презентація з дисципліни "Цивільне прав та процес"
Презентація з дисципліни "Цивільне прав та процес"Презентація з дисципліни "Цивільне прав та процес"
Презентація з дисципліни "Цивільне прав та процес"
 
Аускультация легких у детей
Аускультация легких у детейАускультация легких у детей
Аускультация легких у детей
 
Razvoj zuba
Razvoj zubaRazvoj zuba
Razvoj zuba
 
Опрацювання об’єктів мультимедіа
Опрацювання об’єктів мультимедіаОпрацювання об’єктів мультимедіа
Опрацювання об’єктів мультимедіа
 
morfologija-vjezba 1
morfologija-vjezba 1morfologija-vjezba 1
morfologija-vjezba 1
 
Правила поведінки і безпеки життєдіяльності в комп'ютерному класі
Правила поведінки і безпеки життєдіяльності в комп'ютерному класіПравила поведінки і безпеки життєдіяльності в комп'ютерному класі
Правила поведінки і безпеки життєдіяльності в комп'ютерному класі
 
Вивчаємо мову програмування Lazarus
Вивчаємо мову програмування LazarusВивчаємо мову програмування Lazarus
Вивчаємо мову програмування Lazarus
 
Острый аппендицит
Острый аппендицитОстрый аппендицит
Острый аппендицит
 
Типи веб-сторінок та веб-сайтів
Типи веб-сторінок та веб-сайтівТипи веб-сторінок та веб-сайтів
Типи веб-сторінок та веб-сайтів
 
Uvod u plastičnu kirurgiju
Uvod u plastičnu kirurgijuUvod u plastičnu kirurgiju
Uvod u plastičnu kirurgiju
 
Зразок заповнення Форми 4: приклад заповнення реєстраційної картки форма 4
Зразок заповнення Форми 4: приклад заповнення реєстраційної картки форма 4Зразок заповнення Форми 4: приклад заповнення реєстраційної картки форма 4
Зразок заповнення Форми 4: приклад заповнення реєстраційної картки форма 4
 
Поняття моделі даних, бази даних
Поняття моделі даних, бази данихПоняття моделі даних, бази даних
Поняття моделі даних, бази даних
 

Similar to Методологии верстки

A вы верите в систематизацию
A вы верите в систематизацию A вы верите в систематизацию
A вы верите в систематизацию Irina Levina
 
CSS Modules в React | Odessa Frontend Meetup #4
CSS Modules в React | Odessa Frontend Meetup #4CSS Modules в React | Odessa Frontend Meetup #4
CSS Modules в React | Odessa Frontend Meetup #4OdessaFrontend
 
Подходы к вертске
Подходы к вертскеПодходы к вертске
Подходы к вертскеAndrew Vdovichenko
 
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают ADN Digital Studio
 
Лекция #4. Каскадные таблицы стилей
Лекция #4. Каскадные таблицы стилейЛекция #4. Каскадные таблицы стилей
Лекция #4. Каскадные таблицы стилейЯковенко Кирилл
 
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
 Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И... Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...Тарасов Константин
 
Создание веб-сайта. Курс молодого бойца
Создание веб-сайта. Курс молодого бойцаСоздание веб-сайта. Курс молодого бойца
Создание веб-сайта. Курс молодого бойцаAnton Cherepov
 
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...Yandex
 
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)Roman Dvornov
 
Виталий Харисов "Настоящее и будущее БЭМ"
Виталий Харисов "Настоящее и будущее БЭМ"Виталий Харисов "Настоящее и будущее БЭМ"
Виталий Харисов "Настоящее и будущее БЭМ"Yandex
 
Зачем нужны постпроцессоры при живых препроцессорах — Алексей Иванов, JetStyle
Зачем нужны постпроцессоры при живых препроцессорах — Алексей Иванов, JetStyleЗачем нужны постпроцессоры при живых препроцессорах — Алексей Иванов, JetStyle
Зачем нужны постпроцессоры при живых препроцессорах — Алексей Иванов, JetStyleYandex
 
BEM — block, element, modification conception
BEM — block, element, modification conceptionBEM — block, element, modification conception
BEM — block, element, modification conceptionVadim Patsev
 
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"Yandex
 
сравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикссравнение Drupal и 1с битрикс
сравнение Drupal и 1с битриксAndrii Podanenko
 
Жизнь в изоляции / Роман Дворнов (Avito)
Жизнь в изоляции / Роман Дворнов (Avito)Жизнь в изоляции / Роман Дворнов (Avito)
Жизнь в изоляции / Роман Дворнов (Avito)Ontico
 
basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкRoman Dvornov
 
как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4rit2011
 
бэм методология
бэм методология бэм методология
бэм методология racoons
 
Moodle с точки зрения пользователя и программиста
Moodle с точки зрения пользователя и программистаMoodle с точки зрения пользователя и программиста
Moodle с точки зрения пользователя и программистаIgor Sazonov
 
Презентация Игоря Сазонова на IT Global Meetup #5
Презентация Игоря Сазонова на IT Global Meetup #5Презентация Игоря Сазонова на IT Global Meetup #5
Презентация Игоря Сазонова на IT Global Meetup #5Lilia Smirnova
 

Similar to Методологии верстки (20)

A вы верите в систематизацию
A вы верите в систематизацию A вы верите в систематизацию
A вы верите в систематизацию
 
CSS Modules в React | Odessa Frontend Meetup #4
CSS Modules в React | Odessa Frontend Meetup #4CSS Modules в React | Odessa Frontend Meetup #4
CSS Modules в React | Odessa Frontend Meetup #4
 
Подходы к вертске
Подходы к вертскеПодходы к вертске
Подходы к вертске
 
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
Adn@it'summer - Как ленивые фронтенды себе жизнь упрощают
 
Лекция #4. Каскадные таблицы стилей
Лекция #4. Каскадные таблицы стилейЛекция #4. Каскадные таблицы стилей
Лекция #4. Каскадные таблицы стилей
 
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
 Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И... Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
Современная верстка с адекватными трудозатратами Максим Тимохин, технолог, И...
 
Создание веб-сайта. Курс молодого бойца
Создание веб-сайта. Курс молодого бойцаСоздание веб-сайта. Курс молодого бойца
Создание веб-сайта. Курс молодого бойца
 
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
FrontTalks: Роман Дворнов (Ostrovok.ru), «Basis.js: почему я не бросил разраб...
 
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
Basis.js - почему я не бросил разрабатывать свой фреймворк (extended)
 
Виталий Харисов "Настоящее и будущее БЭМ"
Виталий Харисов "Настоящее и будущее БЭМ"Виталий Харисов "Настоящее и будущее БЭМ"
Виталий Харисов "Настоящее и будущее БЭМ"
 
Зачем нужны постпроцессоры при живых препроцессорах — Алексей Иванов, JetStyle
Зачем нужны постпроцессоры при живых препроцессорах — Алексей Иванов, JetStyleЗачем нужны постпроцессоры при живых препроцессорах — Алексей Иванов, JetStyle
Зачем нужны постпроцессоры при живых препроцессорах — Алексей Иванов, JetStyle
 
BEM — block, element, modification conception
BEM — block, element, modification conceptionBEM — block, element, modification conception
BEM — block, element, modification conception
 
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"
Виталий Харисов "История создания БЭМ. Кратко, сбивчиво и неполно"
 
сравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикссравнение Drupal и 1с битрикс
сравнение Drupal и 1с битрикс
 
Жизнь в изоляции / Роман Дворнов (Avito)
Жизнь в изоляции / Роман Дворнов (Avito)Жизнь в изоляции / Роман Дворнов (Avito)
Жизнь в изоляции / Роман Дворнов (Avito)
 
basis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворкbasis.js - почему я не бросил разрабатывать свой фреймворк
basis.js - почему я не бросил разрабатывать свой фреймворк
 
как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4как стать хорошим веб технологом. нарек мкртчян. зал 4
как стать хорошим веб технологом. нарек мкртчян. зал 4
 
бэм методология
бэм методология бэм методология
бэм методология
 
Moodle с точки зрения пользователя и программиста
Moodle с точки зрения пользователя и программистаMoodle с точки зрения пользователя и программиста
Moodle с точки зрения пользователя и программиста
 
Презентация Игоря Сазонова на IT Global Meetup #5
Презентация Игоря Сазонова на IT Global Meetup #5Презентация Игоря Сазонова на IT Global Meetup #5
Презентация Игоря Сазонова на IT Global Meetup #5
 

Методологии верстки

  • 1. А вы верите в систематизацию? или “Методологии верстки”
  • 2. С чего все началось
  • 3. ● Масштабируемость ● Количество кода ● Поддержка кода ● Структура кода Команда: ● Разный стиль кода ● Разные подходы к организации вёрстки ● Множество повторных реализаций ● Трудности рефакторинга Что же не так?
  • 4.
  • 5.
  • 6.
  • 9. БЭМ Основная идея: - типовые проекты должны разрабатываться быстро, но жить долго Принципы: - особое именование классов - независимость блоков - повторное использование существующего кода - масштабируемость команд разработчиков - точечные изменения с минимальными затратами
  • 10. Блок часть страницы, являющаяся логически независимой от остального наполнения
  • 11. Элемент часть блока, отвечающая за отдельную функцию, он может находиться только в составе блока и не имеет смысла в отрыве от него
  • 12. Модификатор свойство блока или элемента, отвечающее за его внешний вид или поведение, описывают состояние блока или элемента
  • 13. Система именования Имя блока формируется как префикс-имя-блока .b-menu { ... } .b-text-input { ... } Имя элемента создается по схеме: префикс-имя-блока__имя-элемента .b-menu__item { ... } .b-text-input__label { ... } *Элементы элементов не используются .b-block__elem1__elem2
  • 14. Система именования Имя модификатора блока префикс-имя-блока_имя-модификатора_значение- модификатора .b-menu_layout_horiz{ ... } .b-text-input_disabled{ ... } Имя модификатора элемента префикс-имя-блока__имя-элемента_имя- модификатора_значение-модификатора .b-menu__item_state_current{ ... } .b-text-input__label_active{ ... }
  • 15. БЭМ - инструменты Для сборки - bem-tools - enb-bem Оптимизаторы - CSSO - SVGO Шаблонизаторы - BEM-XJSTе - XJSTе
  • 16. БЭМ Плюсы: - достаточно одного класса; - cпецифичность CSS-правил: проблема и решение; - прощай каскад?! - Абсолютно Независимые Блоки (коцепция АНБ)
  • 18. БЭМ Минусы: - “длинные” названия классов - сложность освоения командой
  • 19. AMCSS Модули атрибутов для CSS (Глен Маддерн) amcss.github.io
  • 20. AMCSS Основная идея: - использование кастомных атрибутов Принципы: - Modules (блоки) - Variations (модификаторы) - Traits (пространства имен)
  • 21. 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>
  • 22. AMCSS Используется малоизвестный селектор «~=», который работает как атрибут класса: выбирает элементы, значения атрибутов которых содержат указанные слова, разделенные пробелами Группировка значений по атрибутам
  • 23. AMCSS Плюсы: - хорошо читаемый и поддерживаемый кот код - возможность переопределения классов - повторное использование существующего кода Минусы: - специфичность использования кастомных атрибутов
  • 25. OOCSS Основная идея: многократность использования написанного кода. Принципы: ● объект - повторяющиеся стили ● отделение структуры, от оформления; ● отделение контейнеров от содержимого. .big-parent-class .cool-child-class { //styles } .cool-cahild-class { //styles }
  • 27. OOCSS Советы при использовании ● Принцип выбора (для похожих элементов, например, один вариант стиля link link link -> link) ● Избегайте прикрепления классов к элементам (div.cool-class -> .cool-class) ● Используйте сетки ● Использовать принцип одной страницы
  • 28. OOCSS Плюсы: - нет определенных правил - более быстрые страницы - легко обслуживаемые таблицы стилей - низкий порог вхождения Минусы: - нет определенных правил - html обрастает классами - отслеживание существующих модулей
  • 30. Atomic CSS Основная идея: - повторное использование стилей Принципы: - разделение стилей - для каждого повторно используемого свойства должен быть сформирован отдельный класс - один класс - одно свойство
  • 31. Atomic CSS - один класс - один стиль - каскад - независимые классы
  • 32. Atomic CSS Плюсы: - небольшой объем CSS - легко вводить изменения - возможность повторного использования Минусы: - семантика, настройки отображения элементов переносятся непосредственно в HTML
  • 33. OPOR Оne Page Of Rules by Артём Сапегин
  • 34. OPOR Основная идея: структурирование и систематичность селекторов. Совмещает в себе лучшие (по мнению автора) черты БЭМа, OOCSS. Принципы: Именование классов основных блоков: Почти как в БЭМе: блоки (.block), элементы (.block__elem), модификаторы (.block_mod).
  • 35. OPOR Использование каскада - Контекст - Пользовательский контент Примеси По принципу OOCSS Состояния Префикс “.is-” .is-expanded, .is-visible, .is-highlighted
  • 36. OPOR JS-селекторы Префикс “.js-” .js-files, .js-select Обёртки Не несут никакой семантики, используются для оформления .header-i Порядок классов: блоки, примеси, JS-хуки, состояния: <div class="upload-files scrollable js-files is-hidden">
  • 37. OPOR Плюсы: - Четкие правила именования - Легкие правила Минусы: - Задает только правила именования - Хорошо подходит только для небольших страниц и проектов
  • 39. MCSS Основная идея: распределение стилей по уровням. Многослойная система организации CSS основана на принципах OOCSS и БЭМ. Принципы: - Фундамент - Слой 1 - Слой 2 - Слой 3 - Контекст
  • 40. MCSS Фундамент: - Корневые малоизменяемые стили - Располагаются в самом начале Контекст: - браузеры, особенности девайса, среда, Media queries - располагаются рядом с модифицируемым(изменяемым) классом по всему файлу
  • 41. MCSS Слой 1 - базовый: - Абстрактные названия. - Самые переиспользуемые элементы - Каскад от 2 и 1 слоя
  • 42. MCSS Слой 2 - проектный: - Изолированные модули (компоненты) - Уникальные названия. - Каскад только от 2го слоя
  • 43. MCSS Слой 3 - косметический: - простые, маловлияющие стили - по принципу OOCSS
  • 44. MCSS Слой 3 - косметический: - простые, маловлияющие стили - по принципу OOCSS
  • 45. MCSS Плюсы - хорошо изолированные модули - строго определенная логика Минусы - немного непривычное расположение классов - сложная логика распределения по слоям и правил взаимодействия между слоями
  • 46. SMACSS Масштабируемая и модульная архитектура для CSS (Джонатан Снук) smacss.com
  • 47. SMACSS Основная идея: - разделение стилей на 5 составляющих Принципы: - Base rules - Layout rules - Modules rules - State rules - Theme rules
  • 48. Разделение стилей на 5 частей Base rules - Layout rules - Modules rules - State rules - Theme rules SMACSS структура
  • 49. Base rules стили основных элементов сайта — body, input, button, ul, ol и др., reset.css
  • 50. Layout rules стили макета - здесь находятся стили глобальных элементов - шапки, футера, сайдбара и т.п
  • 51. Modules rules стили модулей - блоков, которые могут использоваться несколько раз на одной странице
  • 52. State rules стили состояния - прописываются различные состояния модулей и скелета сайта (допустимо использование «!important»)
  • 54. SMACSS Плюсы: - управляемый код - расширяемый код - возможность повторного использования - дополнительные уровни семантики Минусы: - непривычно использовать - надо думать и следовать правилам :)
  • 55. FUN Плоская иерархия селекторов, служебные стили, компоненты с неймспейсами (Бен Фрейн) benfrain.com
  • 56. FUN Основная идея: - упрощение создания стилей и их поддержки, автор взял лучшее от БЭМ и SMACSS Принципы: - Flat hierarchy of selectors - Utility styles - Name-spaced components
  • 57. FUN F - Flat hierarchy of selectors - плоская иерархия селекторов U - Utility styles - служебные классы N - Name-spaced components - компоненты с неймспейсами
  • 58. FUN Плюсы: - удобно писать - удобно поддерживать - мало требований Минусы: - для небольших проектов
  • 59. SASS ориентированная методология by Matthieu Larcher & Fabien Zibi DoCSSa
  • 60. DoCSSa Основная идея: Основная идея - разделение внешнего вида и структуры. Методология основана на использовании препроцессора SASS Принципы: Элементы страницы рассматриваются как компоненты. Описание компонентов состоит из двух частей (из двух mixins) - внешний вид и структура.
  • 61. 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
  • 62. DoCCSa Различный внешний вид для компонентов с одинаковой структурой @include tabs('.articleTabs', $defaultSkin: false); @include tabs-skin-alternate('.articleTabs'); в описании структуры компонента проверяем: @if $defaultSkin != false { @include tabs-skin-default($selector); }
  • 63.
  • 64. DoCCSa Именование - Внешний вид БЭМ - Структура состояния записываются с помощью патерна "_is_" .mainMenu_item _is_current.
  • 65. Я руководитель команды необученных коал, как мне использовать силу DoCSSa? ● Пока ваши коалы учат SASS, они могут продолжать писать старый css в папке 'specifics'. ● Как только один из них почувствует, что он готов, он может начать писать компоненты, которые могут использовать все ● Пройдет немного времени и другие коалы тоже захотят писать такие компоненты ● Сложив все знания будет намного легче писать компоненты и переделывать старый код в компоненты ● Не забывайте периодически давать своим коалам много свежего эвкалипта
  • 66. DoCSSa Плюсы: - четкие правила - полная автономность компонентов - продуманный переход Минусы: - необходимо знание препроцессора SASS
  • 67. Инструменты - Препроцессоры - Библиотеки готовых компонентов - Плагины для сред разработки - Инструменты для проверки синтаксиса - https://github.com/stubbornella/oocss - AbsurdJS - for Atomic CSS - https://github.com/benschwarz/am-grid - for AMCSS - БЭМ-инструменты
  • 68. Как принять эту веру План: 1) Плакать, паниковать, страдать, ныть, жаловаться, сокрушаться о выбранной профессии 2) Успокоится и изучить правила. Донести правила до команды 3) Разрабатывать новые страницы элементы в соответствии с правилами выбранной методологии 4) Все элементы, которые затрагиваются при внесении изменений, багфиксинге и т.д. стараться переписывать под выбранную методологию 5) В свободное время - рефакторить и не забывать тестировать) 6) Спрашивать совета и ревью
  • 69. Выводы - Это полезно - Это удобно - Это заставляет думать - Можно придумать что-то свое - Можно помогать другим
  • 72. Спасибо за внимание! Ирa @lev_iryna facebook.com/levina.iryna.i Вопросики? Лиза @elizaselivanova facebook.com/lizaveta.selivanova.9 бабушка сказала, что бы мы присмотрели себе женихов, поэтому обратите внимание на контакты ниже :) :)