Методология Atomic CSS на фреймворке mlut. Часть 1: Знакомство
В этом мини-курсе мы научимся верстать по методологии Atomic CSS с использованием инструмента mlut.
Atomic CSS — это методология, в которой мы используем маленькие атомарные CSS-правила, каждое из которых делает одно действие. В первом уроке разберем основные понятия и познакомимся с возможностями mlut.
Атомарные классы обычно называют утилитами. В общем случае, у утилиты есть имя и значение. Имя соответствует CSS-свойству (или группе свойств), а значение — CSS-значению.
Добавляем несколько утилит для базовых размеров поста. На примере утилиты W100p
: W
— имя (свойство width
), а 100p
— значение (100%
). Если значение — число или hex-цвет, то разделитель не ставится.
mlut генерирует стили на основе тех утилит, которые вы используете в разметке. На вкладке style.css
вы можете смотреть во что превратятся утилиты, которые мы будем добавлять в разметку. В этом уроке, для упрощения, мы будем использовать статичный CSS, который был сгенерирован предварительно.
Механика значений утилит в mlut, близка к оригинальному CSS, поэтому они могут быть достаточно сложными. Сейчас для примера, сложное значение утилиты тени Bxsd0;1;3;#0005
мы указываем прямо в разметке. Но если оно будет повторяться, его можно вынести в конфигурацию mlut.
Также добавляем скругление краев и цвет фона поста.
Имена утилит являются сокращениями от названий CSS-свойств. Эти сокращения составлены по алгоритму, который основан на частоте использования свойств. Наличие такого алгоритма позволяет не зазубривать весь список утилит, а выводить их названия в голове и намного проще запоминать.
Если совсем упрощать алгоритм, то чем популярнее свойство, тем короче будет название утилиты. Отсюда D
— display
, а Ctn
— container
. С полным алгоритмом можно ознакомиться в документации или в этой статье.
А тем временем, добавляем стили раскладки для основного содержимого поста.
В mlut есть 2 вида утилит: common и custom. Первые соответствуют реальным CSS-свойствам, а вторые служат для всего остального. Например, для управления CSS-переменными (custom properties) или устанавки сразу несколько свойств.
В данном случае, -Sz13u
(сокращение size
) устанавливает сразу 2 свойства: width
и height
.
Большинство значений тоже являются сокращениями по тому же самому алгоритму. В первую очередь, это касается ключевых слов, типа flex
, center
и т. д.
Формируем раскладку блока с верхними ссылками.
А у некоторых утилит есть значение по умолчанию. Оно применяется, если утилиту прописать без значения, например: Txd
. Это будет соответствовать декларации: text-decoration: none
.
В mlut утилита делится на составные части — компоненты. Каждый такой компонент соответстует определенной части CSS-правила. C двумя мы уже познакомились — имя и значение. Сейчас рассмотрим еще один: post states. Он соответствует части селектора после класса утилиты. Используя этот компонент, мы можем реализовать утилиту, которая работает только по hover
.
Добавим ссылке на профиль автора поста состояние при наведении.
Таким же образом, с помощью post states добавляем псевдоэлемент-разедлитель before
перед датой публикации поста.
В первом уроке мы стилизуем некоторые элементы наивным способом. Как здесь, например: ссылка в пользовательском контенте. В следующих туториалах рассмотрим более продвинутые техники в Atomic CSS.
В утилитах для установки размеров и отступов можно использовать разные единицы измерения. При указании этих единиц, так же используются сокращения. Они похожи на сокращения из Emmet. Например: 20p
-> 20%
, 3r
-> 3rem
Для примера, попробуем задать верхний отступ у параграфа в rem
.
Некоторые утилиты в mlut соответствуют сокращенным свойствам CSS. Чтобы указать несколько CSS значений в одной утилите, для пробелов используется ;
.
Добавим верхний бордер сразу со всеми стилями с помощью утилиты Bdt1;s;gray50
.
Еще в mlut есть специальные единицы измерения, которых нет в CSS. Одна из них — unit или сокращенно u
. По умолчанию: 1u
= 4px
, но через конфигурацию это можно изменить. Эти единицы нужны для упорядачивания всех размеров, в соответствии с дизайн системой. По умолчанию, при верстке рекомендуется использовать их, вместо px
или rem
.
Хотя основную часть CSS-кода mlut генерирует из разметки, небольшая готовая библиотека в нем все-таки есть. Она содержит базовые стили и хелперы. В отличии от утилит, хелперы могут быть более сложными и состоять из нескольких CSS правил. При этом, они так же универсальны: подобные хелперы часто повторяются в разных проектах.
Один из таких хелперов — btn
. Он используется для сброса стилей элемента, чтобы в дальнейшем оформить его как кнопку или ссылку.
Доделываем стилизацию кнопки «Reply» и закрепляем полученные знания.
Не забываем визуально скрывать подпись у кнопки. В этом поможет кастомная утилита -D-vh
.
Оформляем оставшиеся кнопки по аналогии с первой. Наш пост готов!
В этом туториале мы использовали заранее подготовленный CSS. Но если устанавливать mlut как пакет из npm, то он будет генерировать CSS на основе вашей разметки. Поэтому в качестве домашнего задания: попробуйте установить mlut из npm, запустить код из урока локально и поиграться с ним. Инструкция есть в документации. А в следующих уроках мы уже будем работать с mlut прямо в браузере!
Для тех, кого заинтересовали технические детали того, как устроен mlut, предлагаем ознакомиться с докладом по теме. И если вам понравилось демо, то ставьте звезды на гитхабе!
Встретимся в следующем уроке!