Презентация подготовлена по материалам выступления Юрия Бондаренко на витебском MiniQ#14, который был проведен 25 апреля 2019:
https://vk.com/miniq14;
https://communities.by/events/miniq-vitebsk-14.
Про доклад:
В докладе я расскажу о том, как писать стили на чистом "ванильном" CSS. Мы рассмотрим возникающие перед вертальщиком практические задачи и способы их решения.
1. CSS. Практика
Как пересесть с препроцессоров
обратно на CSS.
MiniQ #14, 25.04.2019
Бондаренко Юрий / BWeb.Studio 1
2. Цель
Вернуться на CSS, захватив с собой "преимущества" препроцессоров
Почему CSS:
Стандарт
Активно развивается
Почему препроцессоры:
Это удобно
Элементы ЯП
•
•
•
•
2
5. 2. Экранирование функций
LESS
div {
width: calc(50% - 100px);
height: ~"calc(50% - 100px)";
}
CSS
div {
width: calc(-50%);
height: calc(50% - 100px);
}
01.
02.
03.
04.
01.
02.
03.
04.
5
6. 3. Проблемы с Gulp
Пакет gulp-less не работает с Gulp 4, только 3.9.1
⇓
Невозможность обновиться на более новые версии
⇓
Раздражающие сообщения об уязвимостях и аудите
6
8. Препроцессор
Свой язык, на выходе CSS
SASS LESS Stylus
Расширяют язык стилей: примеси, вложенные правила
Дополняют элементами языков программирования: условия, циклы,
переменные
•
•
8
9. Постпроцессор
На входе CSS, на выходе CSS
PostCSS
Вендорные префиксы
Поддержка современных и будущих стандартов
Генерация дополнительного кода
•
•
•
9
10. Инструментарий
В примерах использованы:
gulp 4 — Таск менеджер
gulp-postcss — Постпроцессор
postcss-preset-env — набор плагинов
postcss-import — пример "нестандартного" плагина
postcss-rtl — пример плагина-генератора кода
•
•
•
•
•
10
18. 1. Grid Layout ❤ IE10+
Что пока нельзя использовать:
grid-auto-columns
grid-auto-rows
grid-auto-flow
Ограничения:
Каждый grid-элемент сетки должен иметь уникальное имя
Для использования grid-gap свойства grid-template-areas и
grid-template-columns должны быть определены.
•
•
•
•
•
18
24. 3. Модульность и объединение
Этот плагин должен быть первым в вашем списке плагинов!
Подключаем плагин:
const atImport = require( 'postcss-import' )
24
25. 3. Модульность и объединение
@import url('vars.css');
@import url('common.css');
@import url('node_modules/swiper/dist/css/swiper.min.css');
@import url('https://fonts.googleapis.com/css?family=Roboto');
01.
02.
03.
04.
25
28. 4. Custom properties
Ограничения:
Custom properties только в :root , иначе не будет обратной
совместимости
Custom properties в @media тоже без обратной совместимости
•
•
28