Чесно кажучи, перше, що спадає на думку, коли мене просять зануритися в середину проєкту та навести порядок у CSS — це це гіфка з Пітером Гріфіном, який намагається відкрити жалюзі.
CSS (Cascading Style Sheets — каскадні стилі) був основою для стилізації вебсайтів та додатків. Однак для великих проєктів управління звичайним CSS може стати головним болем. Тут на допомогу приходить SCSS (Sassy CSS), препроцесор, який розширює функціональність CSS потужними можливостями, такими як вкладення, змінні та міксини.
Але чи SCSS краще за CSS? У цьому блозі ми зануримось у основні відмінності, переваги SCSS та визначимо, чи варто вибирати його для вашого наступного проєкту.
Що таке SCSS?
SCSS — Syntactically Awesome Stylesheets — покращує CSS, додаючи функції, які, якщо їх правильно використовувати, можуть покращити вашу стилізацію. SCSS ґрунтується на існуючих правилах та синтаксисі CSS, що означає, що будь-який дійсний CSS також є дійсним SCSS.
Простими словами, SCSS не замінює CSS — він його розширює.
- Міксини (Mixins) — це багаторазово використовувані блоки стилів у Sass (SCSS). Міксини дозволяють вам визначити набір CSS-властивостей один раз і використовувати їх в усіх стилях.
А для лінивих (в найкращому сенсі цього слова) розробників вам буде приємно дізнатися, що можна навіть використовувати параметри.
@mixin mixin-name($parameter1, $parameter2) {
// CSS властивості, що використовують $parameter1 та $parameter2
}
@mixin card-styles($bg-color, $padding) {
background-color: $bg-color;
padding: $padding;
border-radius: 10px;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
text-align: center;
color: white;
}
.card-primary {
@include card-styles(blue, 20px);
}
.card-secondary {
@include card-styles(grey, 15px);
}
- Змінні (Variables) — це спосіб зберігати багаторазово використовувані значення, такі як кольори, шрифти, розміри або будь-які інші значення, які ви часто використовуєте у ваших стилях.
$primary-color: #3498db;
$font-size: 16px;
$padding: 10px;
.button {
background-color: $primary-color;
font-size: $font-size;
padding: $padding;
}
- Вкладення (Nesting) дозволяє писати CSS правила в ієрархічній структурі. Це відображає структуру вашого HTML, що робить його інтуїтивно зрозумілим та легшим для підтримки.
.container {
// стилі контейнера тут
h1 {
// стилі заголовка тут
}
.button {
// стилі кнопки тут
&:focus-visible {
// стилі фокуса кнопки для клавіатури тут
}
}
}
Вкладення могло б зайняти цілий пост (і таких постів чимало), тому я залишу це на цьому — простий огляд для того, щоб зацікавити вас.
Зрештою, ці функції допомагають вам підтримувати ваш код DRY — Не повторюйте себе.
Підтримка браузерами SCSS
Після компіляції SCSS, вихідний файл є стандартним CSS, який повністю підтримується усіма сучасними браузерами. Це забезпечує сумісність на різних браузерах та пристроях.
Багато фреймворків, таких як React, Angular та Vue.js, підтримують SCSS «з коробки», використовуючи системи збірки.
Частини та імпорти для кращої організації
SCSS підтримує частини (Partials) — маленькі файли SCSS, що починаються з підкреслення (наприклад, _partial.scss
), які можна імпортувати в основний файл за допомогою @import
. Частини допомагають організувати стилі в модульні блоки, наприклад, _variables.scss
для змінних або _header.scss
для стилів конкретних компонентів.
Ці файли не компілюються окремо, а об'єднуються в основний файл SCSS, зберігаючи ваш код чистим і зручним для підтримки.
Приклад:
// Файл _variables.scss
$primary-color: #4caf50;
// Файл _header.scss
.header {
background-color: $primary-color;
}
// Файл main.scss
@import 'variables';
@import 'header';
Чому це краще: SCSS дозволяє розбивати ваші стилі на менші, зручні для керування файли та зберігати схожий код разом, що покращує підтримку.
Функції та Логіка
SCSS підтримує функції та умовну логіку, що дає вам більше можливостей для автоматизації стилів.
Приклад:
@function calculate-spacing($factor) {
@return $factor * 8px;
}
.container {
padding: calculate-spacing(2); // 16px
}
Чому це краще: Стилізація на основі логіки додає гнучкості, особливо коли ви працюєте з динамічними макетами.
Коли варто залишитися на CSS?
Хоча SCSS має безліч переваг, є випадки, коли вибір CSS може бути кращим:
- Малі проєкти: Якщо ваш проєкт простий і не потребує складних функцій, звичайного CSS може бути достатньо.
- Крива навчання: Якщо ви не хочете справлятися з кривою навчання SCSS, залишайтеся на CSS. Можливо, ви ще не відчули тих емоційних труднощів з CSS, які я пережив.
Підсумок
Як програміст, я люблю SCSS, бо він повертає елементи коду до стилізації. З такими функціями, як функції, змінні та міксини, SCSS пропонує динамічний, орієнтований на логіку підхід. SCSS дає інструменти для того, щоб робити стилізацію більш розумною. Врешті-решт, саме тому SCSS резонує зі мною — він робить стилізацію настільки ж про вирішення проблем, як і про естетику.
Якщо ви все ще використовуєте звичайний CSS, можливо, саме час спробувати SCSS. З мінімальним навчанням ви відкриєте інструменти, які заощадять вам час і зусилля в майбутньому.
Це моє турбо-мисління щодо SCSS. Поділіться своїми думками в коментарях.
Сподіваюся, ви насолоджуєтесь своєю пригодою з SCSS!
Перекладено з: SCSS vs. CSS: Why SCSS Deserves a Spot in Your Toolkit