В переменную можно записать не только значение, а целый блок кода, вот так:
@test: {
width: 100px;
height: 100px;
}
Для того, чтобы вывести блок кода, записанный в переменной, нужно написать имя этой переменной и круглые скобки, вот так:
div {
@test();
}
В результате после компиляции у нас получится следующий код:
div {
width: 100px;
height: 100px;
}
Применение: псевлоклассы
Давайте сделаем функцию, которая будет задавать
стили ссылки в состоянии hover
.
Пусть эта функция параметром принимает блок кода:
.hover(@code) {
}
Давайте выведем переданный блок кода внутри
состояния hover
:
.hover(@code) {
&:hover {
@code();
}
}
Воспользуемся нашей фукцией внутри ссылки:
a {
color: red;
.hover({
color: blue;
text-decoration: none;
});
}
Результат компиляции:
a {
color: red;
}
a:hover {
color: blue;
text-decoration: none;
}
Сделайте аналогичную функцию, которая будет
задавать стили для инпута в состоянии focus
.
Применение: анимация
Давайте сделаем функцию, задающую ключевые кадры анимации:
.keyframes(@name, @code) {
@keyframes @name {@code();}
}
Воспользуемся нашей функцией:
.keyframes(anim, {
from {
width: 100px;
}
to {
width: 200px;
}
});
Результат компиляции:
@keyframes anim {
from {
width: 100px;
}
to {
width: 200px;
}
}