Верстка сайту з використанням SASS/SCSS
Починається все з болю: CSS-файл розростається до тисяч рядків, повтори вибивають з ритму, а зміна кольорової схеми перетворюється на квест «знайди та заміни». Ми пройшли через це десятки разів. Наша команда — 5+ років досвіду, 50+ завершених проєктів — використовує SCSS як стандарт де-факто для проєктів, де не потрібен CSS-in-JS. SCSS — це не магія, а інструмент: змінні, вкладеність, міксіни, функції та умовна логіка компілюються в чистий CSS без runtime-навантаження. Замовте SCSS-верстку під ключ — ми перетворимо ваш CSS у струнку систему.
Сьогодні еталонною реалізацією компілятора є Dart Sass; LibSass вважається застарілим. SCSS залишається стандартом для проєктів без React або з вимогою мінімального bundle без CSS-in-JS. Використання препроцесорів CSS на кшталт SCSS дозволяє скоротити обсяг CSS-коду до 40% і спростити підтримку. Типова економія часу при впровадженні SCSS — 20-30% на етапі рефакторингу та підтримки.
Чому SCSS кращий за чистий CSS?
| Можливість | Чистий CSS | SCSS |
|---|---|---|
| Змінні | CSS Custom Properties (динамічні) | SCSS-змінні (статична компіляція) |
| Вкладеність | Немає (тільки через каскад) | Повна підтримка вкладеності селекторів |
| Міксіни | Немає (дублювання) | Перевикористовувані блоки з параметрами |
| Функції | calc(), env() | Власні функції, математичні, кольорові |
| Умовна логіка | Немає | @if, @else, @for, @each |
| Розділення на модулі | @import (застарілий) | @use, @forward з просторами імен |
Що дає архітектура 7-1?
Архітектура 7-1 — це стандарт організації SCSS-проєкту, який масштабується без хаосу. 7 папок (abstracts, base, components, layout, pages, themes, vendors) і один головний файл. Кожна папка відповідає за свій шар: в abstracts зберігаються змінні, міксіни, функції; в base — скидання та типографіка; в components — перевикористовувані блоки на кшталт кнопок і карток. Це дозволяє легко знаходити та змінювати код, а також підключати тільки потрібні модулі (tree-shaking). Порівняйте: в плоскій структурі CSS-файл розростається до 5000+ рядків, а з 7-1 — кожна папка містить не більше 200 рядків. Економія часу на підтримку — до 50%.
Що входить в роботу з впровадження SCSS?
| Етап | Результат |
|---|---|
| Аудит поточного CSS | Виявлення дублів, неконсистентності, «вузьких» місць |
| Проектування архітектури | Створення каркасу 7-1 під ваш проєкт |
| Налаштування збірки | Dart Sass + Vite/Webpack, автопрефіксер, мініфікація |
| Розробка абстракцій | Змінні, міксіни, функції (fluid typography, focus ring) |
| Рефакторинг CSS → SCSS | Заміна стилів, видалення дублів, оптимізація селекторів |
| Тестування | Перевірка Core Web Vitals (LCP < 2.5s, CLS < 0.1, INP < 200ms) |
| Документація | Опис архітектури, інструкція з додавання нових стилів |
| Деплой та передача | Вихідники, скомпільований CSS, доступи (Git, хостинг) |
Як SCSS прискорює розробку?
Приклад структури папок:
src/styles/
abstracts/
_variables.scss
_colors.scss
_functions.scss
_mixins.scss
_index.scss
base/
_reset.scss
_typography.scss
_root.scss
components/
_button.scss
_card.scss
_nav.scss
layout/
_grid.scss
_header.scss
_footer.scss
pages/
_home.scss
_about.scss
main.scss
Впровадження SCSS-проєкту починається з налаштування компілятора. Для Vite достатньо встановити пакет sass і додати конфігурацію. Dart Sass підтримує сучасний API modern-compiler, який працює швидше і точніше. Ось базове налаштування:
// vite.config.ts
import { defineConfig } from 'vite';
export default defineConfig({
css: {
preprocessorOptions: {
scss: {
additionalData: `@use "@/styles/abstracts" as *;`,
api: 'modern-compiler',
},
},
},
});
Ключові абстракції: змінні та міксіни
Змінні SCSS задають єдину систему відступів, розмірів шрифтів і брейкпоінтів. Їх зручно зберігати в окремому файлі та підключати через @use. Міксіни дозволяють уникнути дублювання: наприклад, медіа-запити, центрування або тримінг тексту.
// abstracts/_variables.scss
$grid-breakpoints: (
'xs': 0,
'sm': 576px,
'md': 768px,
'lg': 992px,
'xl': 1280px,
'2xl': 1536px,
) !default;
$container-max-widths: (
'sm': 540px,
'md': 720px,
'lg': 960px,
'xl': 1200px,
'2xl': 1400px,
) !default;
$spacers: (0: 0, 1: 0.25rem, 2: 0.5rem, 3: 0.75rem, 4: 1rem, 5: 1.5rem, 6: 2rem, 7: 3rem, 8: 4rem, 9: 6rem) !default;
$font-sizes: (
'xs': 0.75rem, 'sm': 0.875rem, 'base': 1rem, 'lg': 1.125rem, 'xl': 1.25rem, '2xl': 1.5rem, '3xl': 1.875rem, '4xl': 2.25rem, '5xl': 3rem
) !default;
Міксіни для адаптивної верстки та доступності:
// abstracts/_mixins.scss
@mixin respond-to($breakpoint) {
$value: map.get($grid-breakpoints, $breakpoint);
@if $value == null { @error 'Unknown breakpoint: #{$breakpoint}'; }
@media (min-width: $value) { @content; }
}
@mixin flex-center($direction: row) {
display: flex;
flex-direction: $direction;
align-items: center;
justify-content: center;
}
@mixin truncate($lines: 1) {
@if $lines == 1 {
overflow: hidden; white-space: nowrap; text-overflow: ellipsis;
} @else {
display: -webkit-box; -webkit-line-clamp: $lines; -webkit-box-orient: vertical; overflow: hidden;
}
}
@mixin visually-hidden {
position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border-width: 0;
}
Процес впровадження SCSS в проєкт
- Аналіз — вивчаємо поточний CSS, знаходимо дублі та неконсистентність, визначаємо палітру та брейкпоінти.
- Проектування — створюємо каркас 7-1, розподіляємо існуючі стилі по папках.
- Налаштування збірки — встановлюємо Dart Sass, конфігуруємо Vite/Webpack, підключаємо автопрефіксер.
- Розробка абстракцій — пишемо змінні, міксіни, функції (fluid typography, focus ring).
- Рефакторинг — замінюємо чистий CSS на SCSS-модулі, видаляємо дублі, оптимізуємо селектори.
- Тестування — перевіряємо верстку на відповідність Core Web Vitals (LCP < 2.5s, CLS < 0.1, INP < 200ms).
- Деплой — компілюємо, мініфікуємо, передаємо проєкт з документацією.
Коли потрібна оптимізація CSS?
Якщо проєкт використовує CSS-модулі або інлайн-стилі, SCSS все одно може бути корисним для глобальних налаштувань та міксінів. Ми рекомендуємо SCSS для корпоративних сайтів, інтернет-магазинів та SaaS-платформ, де важлива швидкість завантаження та підтримуваність коду. В проєктах, де не використовуються CSS-модулі або CSS-in-JS, SCSS — оптимальний вибір для організації стилів.
Строки
Налаштування архітектури та базових абстракцій: 3–5 годин. Верстка типової сторінки з використанням готової системи міксінів — 2–4 години. Корпоративний сайт 5–8 сторінок: 4–7 днів. Точна оцінка залежить від складності дизайну та кількості унікальних компонентів. Вартість впровадження SCSS залежить від обсягу проєкту і розраховується індивідуально. Однак економія на підтримці окупає вкладення зазвичай за 2-3 місяці. Оцінимо ваш проєкт безкоштовно — напишіть нам з прикладом дизайну або посиланням на поточний сайт.
Наш досвід та гарантії
Ми виконали більше 50 проєктів на SCSS для e-commerce, корпоративних порталів та SaaS. Гарантуємо сумісність з усіма сучасними браузерами, оптимізацію Core Web Vitals та відсутність технічного боргу (регулярне оновлення Dart Sass). Якщо ваш CSS-файл став некерованим — зв'яжіться з нами. Отримайте консультацію щодо переходу на SCSS та попередню оцінку робіт. Замовте рефакторинг CSS прямо зараз.







