Загрузка...
Загрузка...
CSS vs SCSS/Sass: вложенность, переменные, миксины, партиалы. Когда использовать, миграция с CSS, инструменты конвертации. Конвертер CSS ↔ SCSS на reChecker.
Что такое специфичность CSS, как она вычисляется (a,b,c), inline styles vs !important, типичные ошибки, методология BEM, стратегии избежания войн специфичности.
CSSПолное руководство по единицам измерения CSS: px, rem, em, vw, vh. Когда использовать каждую, доступность, адаптивная вёрстка, важность базового размера шрифта.
CSSCSS border-radius: синтаксис, 1–4 значения, slash notation для эллипсов. Проценты vs px, круг, pill, blob. Поддержка браузеров, производительность, адаптивность.
CSSCSS clip-path: синтаксис polygon, circle, ellipse, inset. Практические примеры, анимации, поддержка браузеров, советы по производительности. Генератор clip-path на reChecker.
Поделитесь с коллегами или изучите другие материалы блога
SCSS (Sassy CSS) — надстройка над CSS и один из синтаксисов препроцессора Sass. SCSS добавляет переменные, вложенность, миксины, функции и модульность, которых нет в обычном CSS. Код компилируется в валидный CSS, который понимают браузеры. В этой статье — ключевые возможности SCSS, когда его использовать, как мигрировать с чистого CSS и какие инструменты помогают в конвертации.
Для конвертации между CSS и SCSS используйте Конвертер CSS ↔ SCSS на reChecker.
Sass (Syntactically Awesome Style Sheets) — препроцессор CSS. Он расширяет возможности стилей и компилирует код в обычный CSS. У Sass два синтаксиса:
.scss) — совместим с CSS, любой валидный CSS является валидным SCSS. Рекомендуемый синтаксис..sass) — отступный синтаксис без фигурных скобок и точек с запятой. Менее распространён.В дальнейшем под SCSS подразумевается использование препроцессора Sass с синтаксисом .scss.
Переменные хранят значения для повторного использования — цвета, размеры, отступы.
$primary-color: #3b82f6;
$spacing-unit: 8px;
$font-main: 'Inter', sans-serif;
.button {
background: $primary-color;
padding: $spacing-unit * 2;
font-family: $font-main;
}
В нативном CSS переменные доступны через --name: value и var(--name), но SCSS-переменные вычисляются при компиляции и поддерживают арифметику, интерполяцию и условия.
Селекторы можно вкладывать друг в друга, что отражает структуру HTML и уменьшает повторение.
.card {
padding: 16px;
border-radius: 8px;
.title {
font-size: 1.25rem;
margin-bottom: 8px;
}
.body {
color: #666;
}
&:hover {
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
&--featured {
border: 2px solid $primary-color;
}
}
& ссылается на родительский селектор. Вложенность удобна, но глубокая вложенность (3–4+ уровня) усложняет поддержку и увеличивает специфичность.
Миксины — переиспользуемые блоки стилей с параметрами.
@mixin flex-center {
display: flex;
align-items: center;
justify-content: center;
}
@mixin responsive($breakpoint) {
@if $breakpoint == mobile {
@media (max-width: 768px) { @content; }
} @else if $breakpoint == desktop {
@media (min-width: 1024px) { @content; }
}
}
.header {
@include flex-center;
@include responsive(mobile) {
flex-direction: column;
}
}
@content подставляет переданный блок. Миксины помогают избежать дублирования и стандартизировать паттерны (сетки, типографика, медиа-запросы).
Код разбивают на файлы (_variables.scss, _mixins.scss, _components.scss) и подключают через @use или @import.
// _variables.scss
$primary: #3b82f6;
// main.scss
@use 'variables' as v;
.button {
background: v.$primary;
}
@use — современный способ (модульность, изоляция). @import — устаревающий, загружает всё в глобальную область.
SCSS поддерживает арифметику, цветовые функции, условия и циклы.
$base-size: 16px;
@function rem($px) {
@return ($px / $base-size) * 1rem;
}
.text {
font-size: rem(18);
}
@for $i from 1 through 5 {
.mt-#{$i} { margin-top: $i * 8px; }
}
@extend позволяет одному селектору наследовать стили другого. Используйте осторожно — может приводить к раздутому CSS и неожиданным комбинациям селекторов.
%button-base {
padding: 8px 16px;
border-radius: 8px;
cursor: pointer;
}
.primary-button {
@extend %button-base;
background: $primary-color;
}
.secondary-button {
@extend %button-base;
background: transparent;
border: 2px solid $primary-color;
}
Плейсхолдер %button-base не компилируется в CSS отдельно — только там, где на него ссылаются.
Имеет смысл использовать SCSS, когда:
Можно обойтись без SCSS, когда:
Современный CSS (переменные, @layer, @container, nesting в некоторых браузерах) частично закрывает потребности, которые раньше решались только препроцессорами.
.css → .scss$variable_variables.scss, _mixins.scss, компонентыОбратная миграция (SCSS → CSS) — скомпилировать SCSS в CSS. Исходные переменные, миксины и вложенность превратятся в обычный CSS.
Автоматическая конвертация CSS → SCSS может предлагать вложенность по отступам или по сходству селекторов. Ручная доработка часто нужна для оптимальной структуры.
Конвертер CSS ↔ SCSS на reChecker позволяет:
Удобно для разовых преобразований, обучения и быстрой проверки компиляции.
Многие возможности SCSS теперь есть в нативном CSS:
| SCSS | Нативный CSS |
|---|---|
$var | --var и var(--var) |
| Вложенность | & и вложенные правила (ограниченная поддержка) |
@mixin | Пока нет прямого аналога |
@import | @import (устаревает в пользу @use) |
| Партиалы | Модули CSS, @layer |
Для новых проектов можно рассмотреть нативный CSS с переменными и @layer. SCSS по-прежнему полезен при сложной логике, миксинах и большой кодовой базе.
.page .section .card .title .link сложны в переопределении и увеличивают специфичность@use переменные изолированы, что уменьшает конфликты@use и @forward@use вместо @import — модульность и предсказуемый порядок$color-primary, а не $blueSCSS — надстройка над CSS и синтаксис препроцессора Sass. Добавляет переменные, вложенность, миксины, функции. Любой валидный CSS является валидным SCSS. SCSS компилируется в обычный CSS, который понимают браузеры.
SCSS полезен в больших проектах с повторяющимися паттернами, переменными и модульностью. Обычный CSS достаточен для небольших проектов и когда используются нативные переменные, Tailwind или другие утилиты. Современный CSS частично дублирует возможности препроцессоров.
Переименуйте .css в .scss, настройте компиляцию Sass в сборке, введите переменные для повторяющихся значений, примените вложенность для связанных селекторов, вынесите миксины для повторяющихся блоков. Разбейте стили на партиалы (_variables.scss, _mixins.scss и т.д.).
Официальный компилятор Sass (dart-sass) конвертирует SCSS в CSS. Обратная конвертация (CSS → SCSS) делается специализированными инструментами и онлайн-сервисами. Конвертер CSS ↔ SCSS на reChecker поддерживает оба направления с возможностью редактирования и копирования результата.
Не обязательно. Нативные переменные (--name, var()) покрывают многие сценарии. SCSS остаётся полезным при сложной логике, миксинах, функциях и циклах. Выбор зависит от размера проекта, сборки и предпочтений команды.