Включите исполнение JavaScript в браузере, чтобы запустить приложение.
17 фев 2025

Основы Sass/SCSS: начинаем работу с препроцессорами

Препроцессоры Sass/SCSS — инструменты для написания более организованного и эффективного CSS. Расскажем об основных понятиях и практическом применении препроцессоров.

Введение

Одна из постоянных задач в современной веб-разработке — необходимость создавать работающие, читающие и гибкие стили. Привычные CSS, хотя и кажутся простыми, не всегда удовлетворяют этим требованиям, порой оказываясь устаревшими. Здесь разработчиков выручают так называемые препроцессоры CSS: Sass и SCSS. Таблицы стилей Sass (Syntactically Awesome Stylesheets) и SCSS (Sassy CSS) — это инструменты, расширяющие базовую функциональность CSS. Они добавляют в привычные таблицы возможности для организации кода, повторного использования стилей, автоматизации процесса разработки. Расскажем подробнее о работе препроцессоров Sass/SCSS, рассмотрим их основные концепции, синтаксис, примеры применения на практике.

Что такое Sass/SCSS?

Sass и SCSS нельзя назвать самостоятельными языками программирования либо верстки. Это так называемые препроцессоры, то есть программы, которые преобразуют код на одном языке (Sass/SCSS) в код на другом (CSS).

По большому счету, это два разных синтаксиса одного и того же препроцессора:

  • SCSS — более современный, приближенный по синтаксису к CSS с его фигурными скобками и точками с запятой;
  • Sass — более ранний, использующий отступы вместо фигурных скобок.

Преимущества Sass/SCSS

Перечислим основные достоинства препроцессоров для веб-разработки.

  • Организация и структурирование CSS. Код можно разбивать на модули, использовать вложенные стили, импортировать файлы CSS.
  • Работа с переменными. Благодаря переменным одни и те же значения можно хранить и использовать в нескольких стилях.
  • Вложенные правила. Благодаря вложенным друг в друга правилам код CSS можно сделать более организованным.
  • Переиспользование стилей: поддержка переменных, вложенных правил, смесей (mixins) помогает создавать более компактный и читаемый код.
  • Автоматизация процесса разработки благодаря циклам, условным операторам, математическим операциям.
  •  Функции для работы с текстом, цветом, отступами.
  • Возможность создания смешанных классов и комплексных стилей.
  • Наследование свойств от родительских стилей.

Синтаксис Sass и SCSS

Теперь сравним между собой синтаксис обоих препроцессоров.

Синтаксис SassСинтаксис SCSS
Отступы для определения блоков кода: 
h1   
font-size: 24px    
color: #333
Фигурные скобки для определения блоков кода:  
h1 {   
font-size: 24px;   
color: #333; }
Точки с запятой — только при необходимости: 
p   
font-size: 16px   
color: #666
Точки с запятой в конце каждой строки кода:  
p {   
font-size: 16px;   
color: #666;  }
Комментарии заключаются в звездочки и слеши:  /*  Это  комментарий  */Комментарии заключаются в звездочки и слеши, как и в Sass: /*  Это  комментарий  */

Выбор между Sass и SCSS

Оба препроцессора во многом аналогичны друг другу по функциональности и широко используются в разработке.

  • У Sass более компактный и простой синтаксис. Он может быть удобнее для новичков и для тех, кто предпочитает работать с более лаконичным кодом.
  • SCSS совместим с традиционным CSS-синтаксисом и отличается большей гибкостью. Поэтому он может быть более удобным для разработчиков, которые уже знакомы с CSS.

Для командной работы подходят оба варианта, но всем участникам нужно согласовать между собой использование одного из них в качестве стандарта.

Оба языка довольно легко компилировать в обычный CSS, поддерживаемый в любом браузере.

Основные функции Sass/SCSS

Рассмотрим вкратце основные функции препроцессоров. Они в большинстве случаев аналогичны друг другу в обоих вариантах.

Переменные

Благодаря переменным можно хранить значения, чтобы затем использовать их в разных местах кода. Так проще писать и менять стили веб-страницы.

Приведем пример с переменными main-color, отвечающими за цвет и шрифт соответственно.

Объявление переменной:

  $main-color: #333;  
  $font-family: "Arial", sans-serif;
scss

Использование переменной: 

h1 {    color: $main-color;  }  
body {    font-family: $font-family;  }
scss

Благодаря переменным задан черный цвет шрифта, Arial, без засечек.

Вложенные правила

Вложенные правила помогают структурировать код, упрощая тем самым его написание. Правила дочерних элементов вкладываются в родительские, помогая создать вложенную иерархию стилей (что особенно важно для больших проектов). Дочерние элементы наследуют характеристики родительских, что обеспечивает единообразие кода.

Пример вложенных правил:

 .container {    
width: 960px;    
margin: 0 auto;        
.row {      
display: flex;            
.col {        
flex: 1;        
padding: 10px;      
}    
}  
}
scss

 Свойства таблицы распространяются и на ее строки и столбцы.

Смеси (Mixins)

Смеси — это наборы стилей, которые можно использовать в разных местах кода. Это наборы свойств CSS, применяемые к разным элементам, чтобы не дублировать код.

Объявление смеси с помощью ключевого слова mixin: 

@mixin button-style {    
background-color: #007bff;    
color: #fff;    
padding: 10px 20px;    
border: none;    
border-radius: 5px;    
cursor: pointer;  }
scss

Использование объявленной смеси:

 .button { 
@include button-style; } 
.primary-button { 
@include button-style; 
background-color: #00c853; }
scss

Свойства CSS, объявленные в смеси, были применены к конкретной кнопке.

Смеси можно переопределять, меняя стили в ходе выполнения кода, использовать повторно и организовать код, поделив его на логические блоки.

Условные операторы

Как и в классических языках программирования, условные операторы в Sass/ SCSS позволяют выставлять условия и выполнять разные действия в зависимости от их работы.

Пример условного оператора, задающего ширину таблицы в зависимости от того, просматривается ли страница с мобильной или с десктопной версии: 

@if $is-mobile {    
.container {      
width: 100%;    }  
} 
@else {    
.container {      
width: 960px;    }  
}
scss

Условные операторы позволяют делать стили более гибкими и адаптивными.

Циклы

Циклы в препроцессорах позволяют многократно исполнять какие-либо последовательности действий, повторяя код несколько раз. Очень часто это делается, чтобы генерировать множество классов, которые затем можно многократно использовать в проекте.

Приведем пример цикла, задающего ширину и высоту объекта. 

@for $i from 1 to 5 {    
.item-#{$i} {      
width: 20px * $i;      
height: 20px * $i;    }  
}
scss


С помощью циклов можно задавать стили для множества элементов без необходимости задавать их каждый раз вручную.

Практическое применение Sass/SCSS

Теперь приведем примеры практического применения Sass/SCSS в веб-программировании.

Создание компонентных стилей

Препроцессоры используются для создания компонентных стилей для часто используемых элементов сайта: кнопок, меню, карточек. Приведем пример со стилем для кнопки на сайте:

.button {    
@include button-style;        
.primary {      
background-color: #00c853;    }        
.secondary {      
background-color: #673ab7;    }  
}
scss

  Создание темы

С помощью Sass/SCSS разработчики могут легко создавать темы для сайтов и приложений, меняя шрифты и цветовую гамму. Чтобы изменить эту тему (например, в новой версии сайта), достаточно будет лишь заменить названия переменных.

Приведем пример темы с цветовыми решениями для сайта: 

$primary-color: #007bff;  
$secondary-color: #673ab7;    
.button {    
background-color: $primary-color;    
color: #fff;  }    
.text {    
color: $secondary-color;  }
scss

Автоматизация разработки

Циклы, условные операторы, математические действия в Sass/SCSS подходят для автоматизации разработки. Приведем пример с классами, отвечающими за ширину колонок в сетке:

@for $i from 1 to 12 {    
.col-#{$i} {      
width: (100% / 12) * $i;    }  
}
scss

Каждая итерация цикла рассчитывает ширину колонки как долю от общей ширины сетки. В результате разработчику не приходится задавать правила для каждого элемента вручную: цикл заменяет эти действия одним.

Заключение

Sass/SCSS — полезный инструмент для веб-разработки. Освоив основы препроцессоров, вы можете легко создавать структурированный код, автоматизировать часть операций с ним, легко менять оформление веб-страниц и приложений. 

Sass/SCSS используют для создания сайтов, приложений, фреймворков CSS, компонентных библиотек. От небольших одностраничных сайтов-визиток до больших порталов, от лендингов до маркетплейсов — препроцессоры нужны везде, где требуется работа со стилем. Их несложно освоить человеку, знакомому с азами веб-программирования, а эффектом от их использования станет рост производительности труда разработчика.