
CSS – это язык стилей, который используется для оформления веб-страниц. Он отвечает за то, как выглядят элементы на сайте: цвета, шрифты, размеры, отступы, расположение блоков и адаптивность под разные экраны.
А вот CSS-препроцессоры – это надстройки над CSS, специальные скрипты, которые расширяют возможности CSS и упрощают процесс создания стилей, которые затем встраиваются в CSS-файлы. Препроцессоры дают возможность использовать переменные, условные операторы, циклы и другие удобные функции, которых нет в обычном CSS.
Узнай, как стать Front-end developer, и выбери формат обучения с трудоустройством.

Разобраться, для чего используют CSS и что такое CSS-препроцессоры, важно тем, кто хочет стать Frontend developer. В Mate academy можно пройти курсы Front-end developer бесплатно до трудоустройства. Во время обучения студенты осваивают не только базовый CSS, но и современные инструменты, которые используются в реальных проектах. Это помогает быстрее писать код, делать его более структурированным и удобным для масштабирования.
| Параметр | SCSS (Sass) | LESS | Stylus |
|---|---|---|---|
| Год создания | 2007 | 2009 | 2010 |
| Автор | Hampton Catlin | Alexis Sellier | TJ Holowaychuk |
| Синтаксис | Совместим с обычным CSS | Простой, но менее мощный | Гибкий, минималистичный, может отличаться от CSS |
| Сложность | Средняя | Лёгкая | Выше из-за гибкости |
| Функциональность | Переменные, вложенность, миксины, условия, циклы | Переменные, вложенность, миксины, условия, циклы | То же самое + собственные функции и операторы |
| Использование | Коммерческие проекты, крупные продукты | Веб-сайты, шаблоны, фреймворки | Кастомные решения, дизайн-системы |
| Официальный сайт | sass-lang.com | lesscss.org | stylus-lang.com |
| Параметр | SCSS | LESS | Stylus |
|---|---|---|---|
| Variable (Переменные) | $color: red; | @color: red; | $color = red |
| Nesting (Вложенность) | .parent { .child { … } } | .parent { .child { … } } | .parent { .child { … } } |
| Mixins (Миксины) | @mixin mixin-name($param) { … } | .mixin-name(@param) { … } | mixin-name($param) { … } |
| Import (Импорт) | @import "file"; | @import "file"; | @import "file" |
| Inheritance (Наследование) | @extend .class-name; | .class-name:extend(.base-class) { … } | .class-name:extend(.base-class) { … } |
| Operators (Операторы) | +, -, *, /, % | +, -, *, /, % | +, -, *, /, % |
| Control Flow (Управление потоком) | @if, @else if, @else, @for, @each, @while | & when, & otherwise, @for, @each, @while | if, else if, else, for, each, while |
| Functions (Функции) | darken($color, 10%), lighten($color, 20%), mix($color1, $color2), etc. | darken(@color, 10%), lighten(@color, 20%), fade(@color, 50%), etc. | darken($color, 10%), lighten($color, 20%), mix($color1, $color2), etc. |
| Comments (Комментарии) | // Single-line и /* Multi-line */ | // Single-line и /* Multi-line */ | // Single-line и /* Multi-line */ |
| Escaping (Экранирование) | #{variable} | @{variable} | {variable} |
| Interpolation (Интерполяция) | #{$variable} | @{variable} | #{variable} |
| Loops (Циклы) | @for $i from 1 through 3 { … } | .-each(@i; 1; 3) { … } | for $i in 1 2 3 { … } |
| Selectors (Селекторы) | .class-name { … } | .class-name { … } | .class-name { … } |
Примеры кода для SCSS, LESS и Stylus показывают на практике, как с помощью переменных, функций и более удобного синтаксиса можно упростить написание стилей и сделать код более структурированным.
$button-color: #007BFF;
.btn {
background-color: $button-color;
border: 1px solid darken($button-color, 10%);
color: white;
padding: 10px 20px;
text-align: center;
display: inline-block;
cursor: pointer;
}
### LESS
```less
@button-color: #007BFF;
.btn {
background-color: @button-color;
border: 1px solid darken(@button-color, 10%);
color: white;
padding: 10px 20px;
text-align: center;
display: inline-block;
cursor: pointer;
}
button-color = #007BFF
.btn
background-color button-color
border 1px solid darken(button-color, 10%)
color white
padding 10px 20px
text-align center
display inline-block
cursor pointerLESS стоит выбирать, если проект уже написан на LESS, имеет соответствующие зависимости или является частью legacy-системы, где смена препроцессора может усложнить поддержку.
Stylus целесообразен, если в команде уже используется этот инструмент, проект зависит от его экосистемы или нужна большая свобода синтаксиса и гибкость в написании стилей.
Для новых проектов обычно выбирают SCSS, поскольку это более современный и распространённый стандарт с широкой поддержкой.
Вместо того чтобы копировать и вставлять значения цветов несколько раз, можно использовать переменные, что упрощает изменение цветов и обеспечивает консистентность.
$primary-color: #007BFF;
$secondary-color: #6C757D;
.button-primary {
background-color: $primary-color;
color: white;
}
.button-secondary {
background-color: $secondary-color;
color: white;
}
Пример того, как в LESS можно использовать переменные для работы с отступами. Это позволяет задать единую систему spacing и легко управлять расстояниями между элементами во всём проекте.
@margin-base: 16px; /* Базовое значение отступа */
@margin-small: @margin-base / 2; /* Переменная, использующая значение базового отступа */
@margin-medium: @margin-base * 1.5; /* Переменная, использующая значение базового отступа */
@margin-large: @margin-base * 2; /* Переменная, использующая значение базового отступа */
.container {
margin: @margin-base; /* Использование базового значения отступа */
}
.section {
margin: @margin-medium @margin-large; /* Использование разных переменных отступов */
}
.button {
margin: @margin-small; /* Использование переменной отступа */
}Общий алгоритм использования переменных для отступов в LESS:
1. Сначала задаётся базовое значение отступа (@margin-base), а на его основе вычисляются другие значения: @margin-small, @margin-medium и @margin-large. Далее эти переменные используются в стилях для разных элементов – например, .container, .section и .button.
2. После компиляции LESS в CSS все переменные автоматически заменяются на конкретные числовые значения, которые браузер может отобразить. Благодаря этому не нужно прописывать отступы вручную в каждом месте.
Такой подход значительно упрощает работу со стилями: достаточно изменить одно значение — и отступы обновятся по всему проекту. Это делает код более удобным, гибким и лёгким в поддержке, что особенно важно для тех, кто изучает frontend-разработку, проходит IT-курсы или работает с CSS и LESS в реальных проектах.
Попробуй обучение и разберись, как строится карьера Front-end developer.

В большинстве случаев SCSS – универсальный выбор, так как имеет более широкую экосистему, лучшую поддержку и больше возможностей. LESS подойдёт, если проект уже на нём или есть соответствующие зависимости.
Да, они остаются актуальными, особенно в крупных проектах. Хотя многие возможности уже есть в нативном CSS, препроцессоры упрощают структурирование кода и работу с большими стилями.
SCSS компилируется в обычный CSS с помощью инструментов, таких как Sass CLI, сборщики (Webpack, Vite) или таск-раннеры. После этого браузер работает уже с готовым CSS-файлом.
SCSS – это синтаксис Sass, который использует привычный CSS-формат с фигурными скобками и точками с запятой. Sass (индентированный синтаксис) не использует скобки и базируется на отступах.
Да, SCSS и CSS-переменные хорошо сочетаются: SCSS-переменные используются во время компиляции, а CSS variables работают в браузере, что даёт больше гибкости.