Очень краткий пример работы с циклом
в препроцессоре Sass.
1 for
С чего вдруг мне приспичило воспользоваться циклом в препроцессоре? Все, как всегда, просто - в предыдущей статье, посвященной плагину Smooth Scroll (Плагин Smooth Scroll), мне потребовался создать пример разметки HTML-документа с заголовками всех уровней, с первого (h1) до шестого (h6). Все бы ничего, но вручную создавать стили для заголовков всех уровней как-то утомительно.
HTML-разметка для цикла for
Вот я и озаботился задачей автоматизировать этот процесс, через цикл. Для этой цели я использовал цикл
. Упростил пример, выкинув параграфы и оставив только заголовки всех уровней:1
for
<div class="wrapper">
<h1>header 1</h1>
<h2>header 2</h2>
<h3>header 3</h3>
<h4>header 4</h4>
<h5>header 5</h5>
<h6>header 6</h6>
</div>
Базовые CSS-стили
Затем пропишу основные стили для этой разметки:
$color: #778899;
$percent: 5%;
$percentStep: 5;
$fontSize: 76px;
$fontSizeStep: 10;
.wrapper{
width: 60%;
margin: 5% auto 0;
text-align: center;
}
h1,h2,h3,h4,h5,h6{
font-family: Arial, sans-serif;
text-transform: capitalize;
margin-bottom: 4%;
}
Использую цикл for в Sass
Теперь у меня стоит задача “покрасить” все заголовки в оттенки цвета, указанного в переменной
. Для создания оттенков воспользуюсь функцией 1
$color: #778899;
из препроцессора Sass.1
lighten()
Цвет будет меняться с шагом в 5% (
):1
$percentStep: 5;
h1{
color: lighten($color,5%);
}
h2{
color: lighten($color,10%);
}
h3{
color: lighten($color,15%);
}
...
Также будет изменяться размер шрифта (кегль) в заголовках уровней с первого (
) до шестого (1
h1
), с шагом 10px (1
h6
):1
$fontSizeStep: 10
h1 {
font-size: 76px;
}
h2 {
font-size: 66px;
}
h3 {
font-size: 56px;
}
...
Как видим, задача и вправду не для ленивых - это же надо тупо вбивать столько значений! Но мне поможет Sass и его циклы, а точнее - цикл
.1
for
Для этого создаю такую конструкцию цикла
:1
for
@for $i from 1 through 6 {
h#{$i}{
color: lighten($color,$percent);
font-size: $fontSize;
$percent: $percent + $percentStep;
$fontSize: $fontSize - $fontSizeStep;
}
}
Небольшая расшифровка приведенного выше цикла. В данном случае используется цикл
, в котором счетчик 1
for
изменяет свое значение в диапазоне от 1 до 6 включительно. Конструкция 1
$i
называется экранированием в Sass и служит для того, чтобы значение счетчика 1
#{$i}
подставилось в коде “как есть”, в виде текста.1
$i
В результате получается такой вывод:
- h1
- h2
- h3
- h4
- h5
- h6
Далее идут CSS-правила с использованием функции
препроцессора Sass и переменных 1
lighten()
, 1
$color
, 1
$percent
. Последние две строки производят увеличение значения переменных на указанный шаг:1
$fontSize
$percent: $percent + $percentStep;
$fontSize: $fontSize - $fontSizeStep;
Приведенный выше SCSS-код скомпилируется в готовый CSS-код подобного вида:
h1 {
color: #8695a4;
font-size: 76px;
}
h2 {
color: #94a2af;
font-size: 66px;
}
h3 {
color: #a3aeba;
font-size: 56px;
}
h4 {
color: #b1bbc5;
font-size: 46px;
}
h5 {
color: #c0c8d0;
font-size: 36px;
}
h6 {
color: #ced5db;
font-size: 26px;
}
Смотрим результат в браузере и радуемся успеху:
Полный код примера цикла for в Sass
Полный код рассмотренного примера создания цикла
в Sass приведен ниже:1
for
<div class="wrapper">
<h1>header 1</h1>
<h2>header 2</h2>
<h3>header 3</h3>
<h4>header 4</h4>
<h5>header 5</h5>
<h6>header 6</h6>
</div>
@import "compass/reset";
$color: #778899;
$percent: 5%;
$percentStep: 5;
$fontSize: 76px;
$fontSizeStep: 10;
.wrapper{
width: 60%;
margin: 5% auto 0;
text-align: center;
}
h1,h2,h3,h4,h5,h6{
font-family: Arial, sans-serif;
text-transform: capitalize;
margin-bottom: 4%;
}
@for $i from 1 through 6 {
h#{$i}{
color: lighten($color,$percent);
font-size: $fontSize;
$percent: $percent + $percentStep;
$fontSize: $fontSize - $fontSizeStep;
}
}
Скомпилированный в CSS-код результат нашего кодинга:
.wrapper {
width: 60%;
margin: 5% auto 0;
text-align: center;
}
h1, h2, h3, h4, h5, h6 {
font-family: Arial, sans-serif;
text-transform: capitalize;
margin-bottom: 4%;
}
h1 {
color: #8695a4;
font-size: 76px;
}
h2 {
color: #94a2af;
font-size: 66px;
}
h3 {
color: #a3aeba;
font-size: 56px;
}
h4 {
color: #b1bbc5;
font-size: 46px;
}
h5 {
color: #c0c8d0;
font-size: 36px;
}
h6 {
color: #ced5db;
font-size: 26px;
}
На этом все.