SASS: Математика в CSS — операции и функции

Математические операции в SASS

Математические операции в SASS заключаются в круглые скобки. Например, можно добавлять и вычитать проценты: width: calc(100% + 30%); или width: calc(100% — 10%);. Результат вычисления отображается в инспекторе элементов браузера.

Нельзя смешивать единицы измерения в одном математическом выражении. Например, width: calc(100% — 10px); вызовет ошибку. Используйте одинаковые единицы измерения (проценты или пиксели).

Разделим ширину элемента на 4: width: calc(100% / 4);. Результат — ширина 25%.

Grid сетка с использованием математических операций

Создадим grid сетку из восьми блоков, используя математические операции для определения ширины каждого блока с учётом отступов. В HTML создадим родительский блок grid и восемь дочерних блоков div.

В файле styles.css напишем стили. Для родительского блока grid установим display: grid; и width: 100%;. Для дочерних блоков div установим float: left;. Используем селектор > div для выбора дочерних элементов внутри grid.

Создадим миксин grid, принимающий два параметра: количество колонок ($cols) и отступ между колонками ($margin). Миксин установит стили для блоков: float: left;, background-color: red;, height: 150px;.

Для правильного отображения отступов, воспользуемся псевдоклассом :not(:nth-child(-n + $cols)) для выбора всех элементов, кроме последнего в ряду. У последнего элемента margin-right будет равен 0. Используем шаблонную строку #{$cols}n.

Ширина каждого блока вычисляется по формуле:

width: calc((100% - (($cols - 1) * $margin)) / $cols);

Формула вычисляет ширину с учетом отступов. Сначала вычитаем общую ширину отступов (($cols — 1) * $margin), затем делим оставшуюся ширину на количество блоков ($cols).

Подключив миксин @include grid(4, 2%); (4 колонки, отступ 2%), получим grid сетку с четырьмя блоками в ряду и отступом 2% между ними. Число колонок и отступ легко изменять, переопределяя параметры миксина.

Встроенные функции SASS

SASS предоставляет множество встроенных функций. Список функций см. в документации. Рассмотрим некоторые из них.

Функция darken($color, $amount) затемняет цвет на указанный процент. Функция lighten($color, $amount) делает цвет светлее.

В примере, для стилизации ссылки при наведении, используем функцию darken(). Указываем цвет ссылки и процент затемнения. Для демонстрации избегайте черного цвета, так как затемнение будет незаметно.

Функция round($number) округляет число до ближайшего целого в меньшую сторону. Существуют и другие функции для работы с числами и строками. Документация по каждой функции доступна в соответствующей справке.

Что будем искать? Например,программа