В предыдущей части данного обзора - “SASS в картинках - Часть 1” мы посвятили все время установке, настройке и примерам мониторинга “сладкой” парочки Ruby/SASS.
Разобрались, как установить под Windows платформу Ruby и ее приложение SASS, в чем отличия между старой и новой версией синтаксиса SASS. Как запустить SASS для мониторинга редактируемых файлов или директорий.
В этой статье мы приступим к самому интересному - разбору вкусностей SASS. Что он может, как он это делает. И каким образом мы можем облегчить себе жизнь с помощью него. И начнем с самого простого, постепенно переходя к более сложному.
Переменные (Variables)
SASS “вводит” в состав CSS переменные, которых изначально в нем нет. Тем самым, язык стилевых правил постепенно превращается в более-менее полноценный язык программирования. Как и в обычном языке программирования, сначала объявляется переменная (с помощью спецсимвола
), задается ее имя и присваивается значение.1
$
Затем эта переменная используется в последующем коде путем вызова ее по имени. Одновременно с применением переменной в коде с ней можно производить простые арифметические операции: сложение, вычитание, умножение и деление.
Например, на рисунке ниже переменной
присвоено значение цвета в HEX-формате. Далее в одном месте кода эта переменная применяется “как есть”, а в другом месте из значения переменной вычитается еще одно число в этом же формате. В результате цвет получается темнее на заданное количество - очень удобно и быстро!1
$color
Вложенность (Nesting)
Тут все просто - как вы обычно пишите правила CSS?
Наверное, так:
То есть, пишем, что заголовку первого уровня присвоить свойства - кегль и цвет шрифта. Ссылке, вложенной в этот заголовок, присваиваем свойства - убираем подчеркивание и задаем свой цвет.
Теперь напишем этот же код на SASS (SCSS):
Вот в чем “фокус” - на SASS (SCSS) мы пишем код так, как видим. Смотрим HTML-код - ссылка вложена в тег
. Поэтому, в SASS-коде так и “рисуем” - внутри селектора 1
h1
помещаем селектор 1
h1
, говоря тем самым SASS, что тег 1
a
вложен в тег 1
a
. После конвертации в CSS-код у нас получиться точно такой код, как в первом примере (где представлен CSS-код):1
h1
В SASS вложенность (
) бывает двух типов: вложенность селекторов (рассмотренная выше) и вложенность свойств, которую мы рассмотрим сейчас.1
nesting
Вложенность свойств - это почти тоже самое, что и первый случай. Разница лишь в том, что применяется она к CSS-свойствам, а не селекторам. Ее удобно использовать для сложносоставных свойств, таких как
.1
font
Например, на CSS мы бы написали так:
На SASS (SCSS) этот же код мы напишем так:
Наследование
С помощью наследования можно значительно сократить код и ускорить его написание. Принцип также прост - если для одного элемента задан набор свойств, то можно для другого элемента указать наследовать эти же самые свойства.
Наследование в SASS (SCSS) выполняется с помощью директивы
.1
@extend
Parent
Не знаю, как переводиться данная фича в SASS, но в примере кода она очень понятна - может, и нет смысла искать ее перевод? Если кто изучал Javascript & jQuery, то знает о таком символе -
. Его можно перевести как “этот”.1
&
Давайте посмотрим код, и все сразу станет ясно:
Видим, что в коде для ссылки прописаны свойства. И в этом же правиле прописано правило для
. Так вот, чтобы не писать конструкции типа 1
hover
, 1
a
- запишем 1
a:hover
, 1
a
. Если описать это простым языком, то “этому же элементу присвоить правило при псевдоклассе 1
&:hover
.1
:hover
Функции SASS
Когда мы рассматривали переменные, то упомянули об арифметических операциях над значением переменных. Иногда это удобно, а иногда нет. В SASS имеется достаточно большой набор функций, предназначенных для самых разнообразных задач. Ознакомиться с их полным перечнем можно по адресу sass-lang.com/docs/yardoc/Sass/Script/Functions.html:
К примеру, у нас в коде имеется правило задания цвета для ссылки. А также есть правило, по которому ссылка изменяет цвет по наведению на нее курсора мыши.
На SASS (SCSS) такой код можно написать так:
То есть, берем функцию
и передаем ей в качестве аргументов два значения - первоначальный цвет и величину в процентах, на которую необходимо затемнить цвет.1
darken()
Ну просто очень удобно и быстро!
Подмешивания (Mixin)
Подмешивания в SASS полностью отвечают своему названию, по принципу применения. Но, в тоже время, по принципу своей работы это самые настоящие функции. То есть, SASS еще больше расширяет возможности CSS и превращает его из описательного языка в язык программирования.
Если сказать простым языком, то
- это большой кусок CSS-кода, который можно применять бесконечное число раз. Так же как и переменные, 1
mixin
сначала объявляется с помощью директивы 1
mixin
и задается имя для него. Затем в теле подмешивания прописываются CSS-правила, при этом одновременно можно использовать переменные в этих правилах.1
@mixin
После объявления
его подключают в нужном месте кода с помощью директивы 1
mixin
. Удобство применения подмешиваний заключается в том, что не нужно каждый раз писать один и тот же код в разных местах.1
@include
Достаточно прописать всего одну строчку - “вставить такой кусок кода здесь”:
Интерполяция (Interpolation)
Под таким непонятным первоначально словом подразумевается подстановка значения переменной в название CSS-свойства. Благодаря этому можно легко изменять само свойство в функции.
Например, таким образом:
(На картинке закралась ошибка. Конечно же, переменной
в названии свойства 1
$top
не существует. На ее месте должна стоять переменная 1
border
).1
$vert
Подмешивания (1
mixin
) с аргументами
1 | mixin |
Ранее мы познакомились с функциями без аргументов (
). Но это был простой пример. На самом деле, функции (1
mixin
) в SASS могут иметь аргументы, которые они принимают в качестве параметров.1
mixin
Например, рассмотрим такой рисунок:
Видим, что в начале кода объявлена функция (
) с именем 1
mixin
. В качестве аргументов она принимает три переменные - 1
corners
, 1
$vert
, 1
$hor
. Значения переменных 1
$radius
и 1
$vert
передаются в тело функции как интерполяция, а значение переменной 1
$hor
подставляется в качестве значения CSS-свойства 1
$radius
.1
border
В результате можно очень легко и быстро изменять вид и значение CSS-свойства:
, 1
border-top-left: 8px
, 1
border-bottom-left: 8px
, 1
border-top-right: 8px
и так далее.1
border-top-right: 8px
Далее в коде подключается (вызывается) функция
с помощью директивы 1
corners
. При вызове этой функции ей передаются аргументы:1
@include
В результате обработки этих аргументов функцией corners получиться следующий CSS-код:
Фантастика! Ну что же, на этом можно закончить обзор того, что умеет SASS (SCSS). Я думаю, что вы по достоинству оценили все преимущества данного языка и сразу же кинулись применять его на практике.
Вроде ничего не забыл ))