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

A вы верите в систематизацию

Embed Size (px)

Citation preview

Page 1: A вы верите в систематизацию

А вы верите в систематизацию?

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

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

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

Page 3: A вы верите в систематизацию

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

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

Что же не так?

Page 4: A вы верите в систематизацию
Page 5: A вы верите в систематизацию
Page 6: A вы верите в систематизацию
Page 7: A вы верите в систематизацию

Методологии

Page 8: A вы верите в систематизацию

БЭМ - методологияБлок-Элемент-Модификатор

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

ru.bem.info

Page 9: A вы верите в систематизацию

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

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

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

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

затратами

Page 10: A вы верите в систематизацию

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

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

Page 11: A вы верите в систематизацию

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

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

него

Page 12: A вы верите в систематизацию

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

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

Page 13: A вы верите в систематизацию

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

Имя элементасоздается по схеме: префикс-имя-блока__имя-элемента.b-menu__item { ... } .b-text-input__label { ... }*Элементы элементов не используются .b-block__elem1__elem2

Page 14: A вы верите в систематизацию

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

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

Page 15: A вы верите в систематизацию

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

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

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

Page 16: A вы верите в систематизацию

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

решение;- прощай каскад?!- Абсолютно Независимые Блоки (коцепция

АНБ)

Page 17: A вы верите в систематизацию

БЭММинусы

Page 18: A вы верите в систематизацию

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

Page 19: A вы верите в систематизацию

AMCSS

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

amcss.github.io

Page 20: A вы верите в систематизацию

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

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

Page 21: A вы верите в систематизацию

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: A вы верите в систематизацию

AMCSS

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

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

Page 23: A вы верите в систематизацию

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

кода

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

атрибутов

Page 24: A вы верите в систематизацию

OCSS

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

Page 25: A вы верите в систематизацию

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

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

.cool-cahild-class {//styles}

Page 26: A вы верите в систематизацию

Оформление

Структура

Page 27: A вы верите в систематизацию

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

● Избегайте прикрепления классов к элементам

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

link link linklink

div.cool-class.cool-class

Page 28: A вы верите в систематизацию

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

Page 29: A вы верите в систематизацию

Atomic CSS

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

acss.io

Page 30: A вы верите в систематизацию

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

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

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

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

Page 31: A вы верите в систематизацию

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

Page 32: A вы верите в систематизацию

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

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

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

Page 33: A вы верите в систематизацию

OPOR

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

Page 34: A вы верите в систематизацию

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

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

Page 35: A вы верите в систематизацию

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

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

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

Page 36: A вы верите в систематизацию

OPORJS-селекторыПрефикс “.js-” .js-files, .js-selectОбёрткиНе несут никакой семантики, используются для оформления .header-iПорядок классов: блоки, примеси, JS-хуки, состояния:<div class="upload-files scrollable js-files is-hidden">

Page 37: A вы верите в систематизацию

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

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

Page 38: A вы верите в систематизацию

MCSS

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

by OK.RU

Page 39: A вы верите в систематизацию

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

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

Page 40: A вы верите в систематизацию

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

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

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

Page 41: A вы верите в систематизацию

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

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

Page 42: A вы верите в систематизацию

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

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

Page 43: A вы верите в систематизацию

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

Page 44: A вы верите в систематизацию

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

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

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

Page 45: A вы верите в систематизацию

SMACSS

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

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

smacss.com

Page 46: A вы верите в систематизацию

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

Page 47: A вы верите в систематизацию

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

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

SMACSS структура

Page 48: A вы верите в систематизацию

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

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

Page 49: A вы верите в систематизацию

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

Page 50: A вы верите в систематизацию

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

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

Page 51: A вы верите в систематизацию

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

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

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

Page 52: A вы верите в систематизацию

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

Page 53: A вы верите в систематизацию

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

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

Page 54: A вы верите в систематизацию

FUN

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

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

benfrain.com

Page 55: A вы верите в систематизацию

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

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

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

Page 56: A вы верите в систематизацию

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

Page 57: A вы верите в систематизацию

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

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

Page 58: A вы верите в систематизацию

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

by Matthieu Larcher & Fabien Zibi

DoCSSa

Page 59: A вы верите в систематизацию

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

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

Page 60: A вы верите в систематизацию

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 61: A вы верите в систематизацию

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

Page 62: A вы верите в систематизацию
Page 63: A вы верите в систематизацию

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

БЭМ

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

Page 64: A вы верите в систематизацию

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

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

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

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

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

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

Page 65: A вы верите в систематизацию

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

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

Page 66: A вы верите в систематизацию

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

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

Page 67: A вы верите в систематизацию

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

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

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

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

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

Page 68: A вы верите в систематизацию

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

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

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

Page 70: A вы верите в систематизацию

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

@lev_irynafacebook.com/levina.iryna.i

Вопросики?

Лиза @elizaselivanovafacebook.com/

lizaveta.selivanova.9

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

:) :)