Ось готовий урок, створений спеціально за твоїм майстер-промптом. Пристебни ремені, ми починаємо! 🚀
🎨 Урок: Препроцесори: SCSS (Огляд)
1. 🔥 Вступ: Коли CSS стає нічним кошмаром
Привіт, друзі!
Уявіть собі ситуацію. Ви будуєте величезний хмарочос (це ваш вебсайт). У вас є 1000 кімнат (HTML-елементів), і в кожній з них стіни пофарбовані в специфічний відтінок синього: #007bff. Ви прописуєте цей код у CSS сотні разів.
І тут приходить замовник (або дизайнер) і каже: "Знаєш, цей синій занадто... сумний. Давай змінимо його на кораловий #ff7f50. Скрізь."
Що ви робите?
1. Відкриваєте файл на 5000 рядків коду.
2. Натискаєте CTRL+F.
3. Молитесь, щоб не замінити щось зайве.
4. Витрачаєте годину свого життя даремно.
Риторичне запитання: Хіба це схоже на інженерний підхід? Хіба ми, програмісти, не повинні бути лінивими в хорошому сенсі цього слова?
CSS — це чудова мова, але вона "пласка". Вона не вміє запам'ятовувати. Вона змушує вас повторюватись.
А тепер уявіть, якби CSS мав суперздібності. Якби ви могли сказати один раз: "Головний колір — це кораловий", і весь сайт автоматично оновився б.
Саме для цього нам потрібен SCSS. Це CSS на стероїдах. Це інструмент, який перетворює написання стилів з рутинного копіювання на справжнє програмування.
2. 🧠 Теоретична база (Що там «під капотом»?)
Давайте розберемося, що це таке, без нудних термінів.
SCSS (Sassy CSS) — це препроцесор.
Аналогія з кав'ярнею ☕️
Уявіть, що ваш браузер (Chrome, Safari) — це клієнт, який розуміє лише одну мову: "Дайте мені чорну каву" (звичайний CSS). Він не розуміє слів "Лате на мигдальному молоці з сиропом".
Але ви (розробник) хочете писати складні рецепти (SCSS). Тому нам потрібен Бариста (Компілятор).
- Ви пишете код у файлі
.scss(зручний, логічний, крутий). - Спеціальна програма (компілятор) бере цей файл.
- Вона перетворює ("компілює") його у звичайний
.css. - Браузер отримує звичайний CSS і щасливий.
❗️ Що треба запам'ятати залізобетонно: Браузери НЕ розуміють SCSS. Вони розуміють тільки CSS. Кожен файл SCSS мусить пройти через процес перетворення.
Синтаксис: SASS vs SCSS
Ви можете почути слово Sass. Це, по суті, те саме, але є нюанс:
* Sass (старий стиль): пишеться без дужок {} і крапок з комою ;. Виглядає як Python.
* SCSS (новий стиль): виглядає точно як CSS, але з новими фішками. Будь-який валідний CSS є валідним SCSS.
Ми будемо вчити саме SCSS, бо він популярніший і легший для старту.
3. 🧪 Приклади (Від простого до магії)
Приклад №1: Змінні (Variables)
Пам'ятаєте проблему з синім кольором? Вирішимо її.
Питання до вас: Як би ви назвали "коробку", в яку ми покладемо наш головний колір, щоб потім його використовувати?
Дивіться, як це просто:
// style.scss
$brand-color: #007bff; // Оголошуємо змінну через долар ($)
$font-stack: Helvetica, sans-serif;
body {
font-family: $font-stack;
}
button {
background-color: $brand-color; // Використовуємо змінну
border: 1px solid $brand-color;
}
a {
color: $brand-color;
}
Результат після компіляції (те, що бачить браузер):
/* style.css */
body {
font-family: Helvetica, sans-serif;
}
button {
background-color: #007bff;
border: 1px solid #007bff;
}
a {
color: #007bff;
}
Чому це круто? Змініть значення $brand-color в одному місці — і воно зміниться скрізь!
Приклад №2: Вкладеність (Nesting)
У звичайному CSS ми часто пишемо "паровозики":
nav ul { ... }, nav ul li { ... }, nav ul li a { ... }. Це втомлює.
У SCSS ми пишемо структуру так, як вона виглядає в HTML.
SCSS:
nav {
background: #333;
ul {
margin: 0;
padding: 0;
list-style: none;
li {
display: inline-block;
}
a {
color: white;
text-decoration: none;
// Символ & означає "батьківський елемент" (тут це "a")
&:hover {
color: yellow;
}
}
}
}
Що ви очікуєте побачити у CSS?
Компілятор сам "розклеїть" цю матрьошку і створить звичайні селектори: nav ul, nav ul li, nav a:hover тощо. Код стає читабельним і логічним!
Приклад №3: Міксини (Функції для стилів)
Уявіть, що вам постійно треба центрувати елементи за допомогою Flexbox. Це три рядки коду. А якщо таких блоків 20?
Ми створюємо Mixin (ніби власний сніпет коду).
// Створюємо міксин
@mixin center-flex {
display: flex;
justify-content: center;
align-items: center;
}
// Використовуємо його
.header-content {
height: 500px;
@include center-flex; // Вставляємо сюди код
background: pink;
}
.modal-window {
@include center-flex;
background: white;
}
Це економить час і робить код чистим. Виглядає як виклик функції у звичайному програмуванні, правда?
4. 🛠 Практична частина
Час забруднити руки кодом! (Ви можете спробувати це на codepen.io, вибравши в налаштуваннях CSS -> Preprocessor: SCSS).
Завдання 1: Змінні
Створіть дві змінні: $primary-font (наприклад, Arial) і $accent-color (наприклад, червоний). Застосуйте шрифт до body, а колір — до заголовків h1.
Завдання 2: Рефакторинг (Вкладеність) У вас є такий CSS. Перепишіть його на SCSS, використовуючи вкладеність:
.card { border: 1px solid black; }
.card .card-title { font-weight: bold; }
.card .card-text { color: grey; }
.card:hover { border-color: blue; } // Підказка: використовуйте &
Завдання 3: Математика
SCSS вміє рахувати! Спробуйте задати ширину сайдбару змінною $width: 300px, а ширину контенту розрахуйте прямо в коді як 100% - $width.
Питання: Чи спрацює це, якщо не ставити пробіли навколо мінуса? (Спробуйте!)
Завдання 4: Міні-кейс "Темна тема"
Створіть змінні $bg-color та $text-color.
Придумайте значення для світлої теми. Напишіть стилі для body.
Потім просто змініть значення змінних на темні (чорний фон, білий текст) і натисніть "Compile". Подивіться, як миттєво змінився настрій сайту.
Завдання 5: Знайди помилку Чому цей код не працює?
.button {
color: $my-color;
}
$my-color: red;
(Підказка: Як комп'ютер читає файл? Згори вниз чи знизу вгору?)
5. 💡 Мислення як у розробника
Ви тепер знаєте синтаксис, але знати ноти — не означає бути композитором. Ось як думають профі:
-
Принцип "Не гнізди занадто глибоко" (Inception Rule). Новачки люблять робити так:
scss header { div { ul { li { a { ... } } } } }Не робіть так! Це створює монструозні селектори в CSS (header div ul li a), які важко перебивати і які сповільнюють браузер. Порада: Намагайтеся не заходити глибше 3 рівнів вкладеності. -
Модульність — це все. У реальному проєкті ви не пишете все в один файл. Ви робите папку
scssі створюєте файли:_variables.scss(тільки змінні)_header.scss(хедер)_footer.scss(футер) І потім збираєте їх в один головний файл командою@import. Це як складати LEGO.
-
Змінні мають мати сенс. Погана назва:
$red: #ff0000;. Хороша назва:$error-color: #ff0000;. Чому? Бо якщо ви захочете змінити колір помилки на помаранчевий, змінна$red, яка зберігає помаранчевий колір, виглядатиме ідіотськи. Називайте змінні за їхнім призначенням, а не виглядом.
6. 🧩 Підсумок
Отже, що ми маємо? * SCSS — це інструмент, який пише CSS за вас. * Змінні дозволяють керувати стилем всього сайту з одного місця. * Вкладеність робить код схожим на структуру HTML. * Браузеру потрібен компілятор, щоб зрозуміти вашу магію.
Ви тепер вмієте не просто "фарбувати сторінки", ви вмієте архітектурно мислити стилями. Ви перейшли від ручної праці до автоматизованої.
Що далі? У наступному уроці ми поговоримо про те, як розділяти код на окремі файли (Partials) і збирати їх докупи, щоб ваш проєкт виглядав як професійна система, а не як звалище коду.
А поки що — спробуйте переписати свій останній CSS-файл на SCSS. Відчуйте цю свободу!
Успіхів! Кодуйте із задоволенням! 💻🔥