72
А вы верите в систематизацию? или “Методологии верстки”

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

Embed Size (px)

Citation preview

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

А вы верите в систематизацию?или “Методологии верстки”

Levina Ira
контакты
Levina Ira
ссылки для методологий
Levina Ira
сложности обучения и освоения командой
Levina Ira
скорости методологий
Levina Ira
убрать мелкий текст
Levina Ira
примеры кода
Page 2: Методологии верстки

С чего все началось

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

● Масштабируемость● Количество кода● Поддержка кода● Структура кода

Команда:● Разный стиль кода● Разные подходы к организации вёрстки● Множество повторных реализаций● Трудности рефакторинга

Что же не так?

Page 4: Методологии верстки
Page 5: Методологии верстки
Page 6: Методологии верстки
Page 7: Методологии верстки

Методологии

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

БЭМ - методология

Блок-Элемент-Модификатор (методология разработана в Яндексе)

ru.bem.info

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

БЭМОсновная идея: - типовые проекты должны разрабатываться

быстро, но жить долго

Принципы:- особое именование классов- независимость блоков- повторное использование существующего

кода- масштабируемость команд разработчиков- точечные изменения с минимальными

затратами

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

Блокчасть страницы, являющаяся логически независимой

от остального наполнения

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

Элементчасть блока, отвечающая за отдельную

функцию, он может находиться только в составе блока и не имеет смысла в отрыве от

него

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

Модификаторсвойство блока или элемента, отвечающее за его внешний вид или поведение, описывают

состояние блока или элемента

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

Система именованияИмя блокаформируется как префикс-имя-блока.b-menu { ... }.b-text-input { ... }

Имя элементасоздается по схеме: префикс-имя-блока__имя-элемента.b-menu__item { ... } .b-text-input__label { ... }

*Элементы элементов не используются .b-block__elem1__elem2

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

Система именованияИмя модификатора блокапрефикс-имя-блока_имя-модификатора_значение-модификатора.b-menu_layout_horiz{ ... }.b-text-input_disabled{ ... }

Имя модификатора элементапрефикс-имя-блока__имя-элемента_имя-модификатора_значение-модификатора.b-menu__item_state_current{ ... } .b-text-input__label_active{ ... }

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

БЭМ - инструментыДля сборки- bem-tools - enb-bem

Оптимизаторы- CSSO- SVGO

Шаблонизаторы- BEM-XJSTе- XJSTе

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

БЭМПлюсы:- достаточно одного класса;- cпецифичность CSS-правил: проблема и

решение;- прощай каскад?!

- Абсолютно Независимые Блоки (коцепция

АНБ)

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

БЭММинусы

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

БЭММинусы:- “длинные” названия классов- сложность освоения командой

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

AMCSS

Модули атрибутов для CSS (Глен Маддерн)

amcss.github.io

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

AMCSSОсновная идея: - использование кастомных атрибутов

Принципы:- Modules (блоки) - Variations (модификаторы) - Traits (пространства имен)

Page 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>

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

AMCSS

Используется малоизвестный селектор «~=», который работает как атрибут класса: выбирает элементы, значения атрибутов которых содержат указанные слова, разделенные пробелами

Группировка значений по атрибутам

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

AMCSSПлюсы:- хорошо читаемый и поддерживаемый кот код - возможность переопределения классов- повторное использование существующего

кода

Минусы:- специфичность использования кастомных

атрибутов

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

OCSS

Объектно ориентированный CSSby Nicole Sullivan

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

OOCSSОсновная идея: многократность использования написанного кода.

Принципы:● объект - повторяющиеся стили● отделение структуры, от оформления;● отделение контейнеров от содержимого.

.big-parent-class .cool-child-class {//styles}

.cool-cahild-class {//styles}

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

Оформление

Структура

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

OOCSSСоветы при использовании● Принцип выбора

(для похожих элементов, например, один вариант стиляlink link link -> link)

● Избегайте прикрепления классов к элементам(div.cool-class -> .cool-class)

● Используйте сетки● Использовать принцип одной страницы

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

OOCSSПлюсы:- нет определенных правил - более быстрые страницы- легко обслуживаемые таблицы стилей- низкий порог вхождения

Минусы:- нет определенных правил- html обрастает классами- отслеживание существующих модулей

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

Atomic CSS

Атомарный CSS (Тьерри Коблентц)

acss.io

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

Atomic CSSОсновная идея: - повторное использование стилей

Принципы:- разделение стилей- для каждого повторно используемого

свойства должен быть сформирован отдельный класс

- один класс - одно свойство

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

Atomic CSS- один класс - один стиль- каскад- независимые классы

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

Atomic CSSПлюсы:- небольшой объем CSS- легко вводить изменения- возможность повторного использования

Минусы:- семантика, настройки отображения

элементов переносятся непосредственно в HTML

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

OPOR

Оne Page Of Rules by Артём Сапегин

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

OPORОсновная идея:структурирование и систематичность селекторов. Совмещает в себе лучшие (по мнению автора) черты БЭМа, OOCSS.

Принципы:Именование классов основных блоков:Почти как в БЭМе: блоки (.block), элементы (.block__elem),

модификаторы (.block_mod).

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

OPORИспользование каскада- Контекст- Пользовательский контент

Примеси По принципу OOCSS

СостоянияПрефикс “.is-”.is-expanded, .is-visible, .is-highlighted

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

OPORJS-селекторыПрефикс “.js-” .js-files, .js-select

ОбёрткиНе несут никакой семантики, используются для оформления .header-i

Порядок классов: блоки, примеси, JS-хуки, состояния:<div class="upload-files scrollable js-files is-hidden">

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

OPORПлюсы:- Четкие правила именования- Легкие правила

Минусы:- Задает только правила именования- Хорошо подходит только для небольших страниц и проектов

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

MCSS

Многослойная система организации CSS

by OK.RU

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

MCSSОсновная идея:распределение стилей по уровням. Многослойная система организации CSS основана на принципах OOCSS и БЭМ.

Принципы: - Фундамент - Слой 1 - Слой 2 - Слой 3- Контекст

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

MCSSФундамент:- Корневые малоизменяемые стили- Располагаются в самом начале

Контекст:- браузеры, особенности девайса, среда, Media queries- располагаются рядом с модифицируемым(изменяемым)

классом по всему файлу

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

MCSSСлой 1 - базовый:- Абстрактные названия. - Самые переиспользуемые

элементы - Каскад от 2 и 1 слоя

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

MCSSСлой 2 - проектный:- Изолированные модули

(компоненты)- Уникальные названия. - Каскад только от 2го слоя

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

MCSS Слой 3 - косметический:- простые, маловлияющие стили- по принципу OOCSS

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

MCSS Слой 3 - косметический:- простые, маловлияющие стили- по принципу OOCSS

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

MCSSПлюсы- хорошо изолированные модули- строго определенная логика

Минусы- немного непривычное расположение классов - сложная логика распределения по слоям и правил

взаимодействия между слоями

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

SMACSS

Масштабируемая и модульная архитектура для CSS

(Джонатан Снук)

smacss.com

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

SMACSSОсновная идея:- разделение стилей на 5 составляющих Принципы:- Base rules - Layout rules- Modules rules- State rules- Theme rules

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

Разделение стилей на 5 частей

Base rules - Layout rules - Modules rules - State rules -

Theme rules

SMACSS структура

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

Base rulesстили основных элементов сайта —

body, input, button, ul, ol и др., reset.css

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

Layout rulesстили макета - здесь находятся стили глобальных элементов - шапки, футера, сайдбара и т.п

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

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

раз на одной странице

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

State rulesстили состояния - прописываются

различные состояния модулей и скелета сайта

(допустимо использование «!important»)

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

Theme rulesописываются стили оформлений

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

SMACSSПлюсы:- управляемый код- расширяемый код- возможность повторного использования

- дополнительные уровни семантики

Минусы:- непривычно использовать- надо думать и следовать правилам :)

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

FUN

Плоская иерархия селекторов, служебные стили, компоненты с

неймспейсами (Бен Фрейн)

benfrain.com

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

FUNОсновная идея: - упрощение создания стилей и их поддержки,

автор взял лучшее от БЭМ и SMACSS

Принципы:- Flat hierarchy of selectors - Utility styles - Name-spaced components

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

FUNF - Flat hierarchy of selectors - плоская иерархия селекторов U - Utility styles - служебные классы

N - Name-spaced components - компоненты с неймспейсами

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

FUNПлюсы:- удобно писать- удобно поддерживать- мало требований

Минусы:- для небольших проектов

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

SASS ориентированная методология

by Matthieu Larcher & Fabien Zibi

DoCSSa

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

DoCSSaОсновная идея:Основная идея - разделение внешнего вида и структуры. Методология основана на использовании препроцессора SASS

Принципы:Элементы страницы рассматриваются как компоненты. Описание компонентов состоит из двух частей (из двух mixins) - внешний вид и структура.

Page 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

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

DoCCSaРазличный внешний вид для компонентов с одинаковой структурой@include tabs('.articleTabs', $defaultSkin: false);@include tabs-skin-alternate('.articleTabs');в описании структуры компонента проверяем:

@if $defaultSkin != false { @include tabs-skin-default($selector);}

Page 63: Методологии верстки
Page 64: Методологии верстки

DoCCSaИменование- Внешний вид

БЭМ

- Структура состояния записываются с помощью патерна "_is_" .mainMenu_item _is_current.

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

Я руководитель команды необученных коал, как мне использовать силу DoCSSa?● Пока ваши коалы учат SASS, они могут продолжать писать

старый css в папке 'specifics'.● Как только один из них почувствует, что он готов, он может

начать писать компоненты, которые могут использовать все● Пройдет немного времени и другие коалы тоже захотят

писать такие компоненты● Сложив все знания будет намного легче писать компоненты

и переделывать старый код в компоненты● Не забывайте периодически давать своим коалам много

свежего эвкалипта

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

DoCSSaПлюсы:- четкие правила- полная автономность компонентов- продуманный переход

Минусы:- необходимо знание препроцессора SASS

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

Инструменты- Препроцессоры- Библиотеки готовых компонентов- Плагины для сред разработки- Инструменты для проверки

синтаксиса

- https://github.com/stubbornella/oocss- AbsurdJS - for Atomic CSS- https://github.com/benschwarz/am-grid - for AMCSS- БЭМ-инструменты

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

Как принять эту веруПлан:1) Плакать, паниковать, страдать, ныть, жаловаться,

сокрушаться о выбранной профессии2) Успокоится и изучить правила. Донести правила до команды3) Разрабатывать новые страницы элементы в соответствии с

правилами выбранной методологии4) Все элементы, которые затрагиваются при внесении

изменений, багфиксинге и т.д. стараться переписывать под выбранную методологию

5) В свободное время - рефакторить и не забывать тестировать)6) Спрашивать совета и ревью

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

Выводы- Это полезно- Это удобно- Это заставляет думать- Можно придумать что-то свое- Можно помогать другим

Levina Ira
Методологии дорабатываются, изменяются, появляются новые. Вы можете сделать что-то свое или помочь уже существующим или просто пользоваться и получать удовольствие.
Page 70: Методологии верстки

Спросить очень просто

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

Спросить очень просто

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

Спасибо за внимание!Ирa

@lev_irynafacebook.com/levina.iryna.i

Вопросики?

Лиза @elizaselivanovafacebook.com/

lizaveta.selivanova.9

бабушка сказала, что бы мы присмотрели себе женихов, поэтому обратите внимание на контакты ниже

:) :)