Змінні CSS: Покращення стилізації веб-сторінок
Для поліпшення зовнішнього вигляду та стилізації різних частин веб-сторінок, більшість сайтів використовують CSS. Хоча CSS (Cascading Style Sheets) технічно не є мовою програмування, її можна поєднувати з такими мовами, як JavaScript, для створення адаптивних та інтерактивних веб-сторінок.
Ті, хто знайомий з мовами програмування на кшталт JavaScript, знають про можливість оголошення змінних, надання їм значень та повторного використання у різних частинах коду. Приємна новина полягає в тому, що цю ж концепцію можна застосувати й у CSS.
У цій статті ми розглянемо, що таке змінні CSS, обговоримо їхні переваги, а також покажемо, як оголошувати та використовувати їх на практиці.
Що собою представляють змінні в CSS?
Змінні CSS – це спеціальні властивості, які дозволяють веб-розробникам зберігати значення для повторного використання в таблицях стилів. Наприклад, можна оголосити стиль шрифту, колір фону та розмір шрифту, і потім використовувати їх для таких елементів, як заголовки, абзаци та блоки div в усій кодовій базі.
Чому варто використовувати змінні CSS? Ось декілька причин:
- Спрощує оновлення коду: Оголосивши змінну, ви можете використовувати її у всій таблиці стилів без необхідності ручного оновлення кожного окремого елемента.
- Зменшує дублювання: У міру розростання кодової бази, ви зіткнетесь зі схожими класами та елементами. Замість того, щоб створювати CSS-код для кожного з них, можна просто використовувати змінні CSS.
- Спрощує підтримку коду: Підтримка коду є критично важливою для стабільної роботи вашого бізнесу.
- Покращує читабельність: У сучасному світі заохочується співпраця. Застосування змінних у CSS дозволяє створювати більш компактну та зрозумілу кодову базу.
- Легше підтримувати узгодженість: Змінні CSS допомагають підтримувати єдиний стиль при зростанні кодової бази або збільшенні масштабу програми. Наприклад, ви можете оголосити відступи, поля, стиль шрифту та кольори, які використовуватимуться для кнопок на веб-сайті.
Як оголошувати змінні в CSS
Оскільки ви вже знаєте, що таке змінні в CSS та чому їх варто використовувати, перейдемо до процесу їх оголошення.
Щоб оголосити змінну CSS, почніть з імені елемента, потім поставте два дефіси (–), вкажіть потрібне ім’я та значення. Базовий синтаксис виглядає так:
element { --variable-name: value; }
Наприклад, якщо ви хочете застосувати відступ до всього документа, оголосіть його так:
body { --padding: 1rem; }
Область видимості змінних в CSS
Змінні CSS можуть бути локальними (доступні лише в межах певного елемента) або глобальними (доступні у всій таблиці стилів).
Локальні змінні
Локальні змінні призначаються конкретним селекторам. Наприклад, можна додати їх до кнопки. Ось приклад:
.button { --button-bg-color: #33ff4e; }
Змінна кольору фону доступна для селектора кнопки та всіх її дочірніх елементів.
Глобальні змінні
Глобальні змінні можна використовувати в будь-якому елементі коду після їх оголошення. Для оголошення глобальних змінних використовується псевдоклас :root. Ось приклад:
:root { --primary-color: grey; --secondary-color: orange; --font-weight: 700; }
У наведеному вище коді будь-яку з оголошених змінних можна використовувати для різних елементів, таких як заголовки, абзаци, блоки div, або навіть для всього тіла сторінки.
Як використовувати змінні в CSS
Для демонстрації, створимо проект з файлами index.html та styles.css.
У файлі index.html розмістимо простий div з двома заголовками (h1 та h2) та абзацом (p).
<div> <h1>Hello Front-end Dev!!!!</h1> <h2>This is how to use variables in CSS.</h2> <p> Keep scrolling</p> </div>
У файлі style.css додамо наступний код:
:root { --primary-color: grey; --secondary-color: orange; --font-weight: 700; --font-size: 16px; --font-style: italic; } body { background-color: var(--primary-color); font-size: var(--font-size); } h1 { color: var(--secondary-color); font-style: var(--font-style); } h2 { font-weight: var(--font-weight); } p { font-size: calc(var(--font-size) * 1.2); }
Після відображення веб-сторінки, отримаємо такий результат:
У наведеному коді, глобальні змінні оголошено в елементі :root. Для використання глобальної змінної в будь-якому елементі необхідно застосувати ключове слово var. Наприклад, для застосування фонового кольору, оголошеного як глобальна змінна, код буде виглядати так:
background-color: var(--primary-color);
Проаналізувавши інші елементи, ви помітите аналогічну тенденцію у застосуванні ключового слова var.
Використання змінних CSS з JavaScript
Для демонстрації використання змінних CSS з JavaScript, застосуємо локальні та глобальні змінні.
Додамо елемент сповіщення до нашого існуючого коду:
<div class="alert">Натисніть мене!</div>
Оновлений файл index.html виглядатиме наступним чином:
<div> <h1>Hello Front-end Dev!!!!</h1> <h2>This is how to use variables in CSS.</h2> <p> Keep scrolling</p> </div> <div class="alert">Click me!</div>
Стилізуємо нашу змінну. Додайте наступний код до існуючого CSS:
.alert { --bg-color: red; /* Визначаємо локальну змінну */ background-color: var(--bg-color); /* Використовуємо локальну змінну для фонового кольору */ padding: 10px 20px; border-radius: 4px; font-weight: var(--font-weight); /* Використовуємо глобальну змінну для товщини шрифту */ width: 50px; }
Ми зробили наступне:
- Визначили локальну змінну всередині елемента сповіщення:
--bg-color: red;
- Використали ключове слово var для доступу до цієї локальної змінної:
background-color: var(--bg-color);
- Використали глобальну змінну, оголошену раніше, як товщину шрифту:
font-weight: var(--font-weight);
Додаємо код JavaScript
Зробимо наш елемент сповіщення інтерактивним. При натисканні на нього з’явиться спливаюче вікно з повідомленням: “Ми використовували змінні CSS із JavaScript!!!!”.
JavaScript-код можна додати безпосередньо в HTML, використовуючи теги <script/>. Код JavaScript має бути розміщений після HTML-коду, але перед закриттям тегу </body>.
Додайте такий код:
<script> const alertDiv = document.querySelector('.alert'); alertDiv.addEventListener('click', function() { window.alert("We have used CSS Variables with JavaScript!!!!"); }); </script>
Тепер ваш HTML-код повинен виглядати приблизно так:
Наш JavaScript-код виконує наступне:
- Використовує
document.querySelector()
для пошуку елемента сповіщення. - Призначає елементу сповіщення змінну
alertDiv
. - В
alertDiv
використовує методaddEventListener()
для додавання обробника події ‘click’. - Використовує
window.alert()
для відображення повідомлення при кліку.
Після відображення сторінки, ви отримаєте наступне:
При натисканні на сповіщення з’явиться повідомлення:
Запасні значення в змінних CSS
Що відбувається, якщо ви звертаєтесь до змінної, не оголошеної у вашій таблиці стилів? У такому випадку CSS-ефект не буде застосовано. Запасні значення дозволяють задати ефект, який з’явиться замість відсутньої змінної.
Запасні значення корисні в наступних випадках:
- Якщо деякі браузери не підтримують змінні CSS, властивість матиме резервний варіант.
- Якщо ви підозрюєте, що сторінка працює некоректно через змінну CSS, можна використовувати запасне значення для перевірки цієї гіпотези.
Ви можете задавати декілька резервних властивостей, розділених комами. Розглянемо наступний код:
:root { --primary-color: #007bff; } .btn { background-color: var(--primary-color, red, yellow); padding: 10px; border: none; border-radius: 5px; font-size: 16px; cursor: pointer; }
Якщо при використанні глобальної змінної ви припуститесь помилки в слові “primary-color”, тобто змінна не буде оголошена, то використається колір “red” – запасне значення.
Для наочності розглянемо приклад:
<style> :root { --primary-color: #007bff; } .btn { background-color: var(--primary-color, red); padding: 10px; border: none; border-radius: 5px; font-size: 16px; cursor: pointer; } </style> <button class="btn">Click me!</button>
Якщо відобразити цей код у браузері, отримаємо наступне:
Змінимо лише один символ в імені змінної:
.btn { background-color: var(--primary-colr, red); /*Помилка в імені змінної: primary-colr*/ padding: 10px; border: none; border-radius: 5px; font-size: 16px; cursor: pointer; }
Тепер браузер покаже наступний результат:
Використання динамічних значень та змінних обчислених значень в CSS
Динамічні значення автоматично оновлюються в залежності від певних подій або умов, наприклад, даних, введених користувачем.
Розглянемо наступний код:
<style> :root { --color: #333; } #color-input { margin-left: 1em; } #color-input { --color: var(--color-input); } </style> <label for="color-input">Choose a color:</label> <input type="color" id="color-input">
Код вище виконує такі дії:
- Оголошує змінну
--color
зі значенням за замовчуванням#333
за допомогою селектора:root
. - Використовує
#color-input
для вибору елемента введення. - Значення
--color
встановлюється якvar(--color-input)
, що означає, що колір буде оновлюватись, коли користувач вибере новий колір через палітру.
Обчислені значення виконують обчислення на основі інших властивостей або змінних. Розглянемо наступний приклад:
:root { --base-font-size: 14px; --header-font-size: calc(var(--base-font-size) * 3); } h2 { font-size: var(--header-font-size); }
У цьому коді:
- Є змінна
--base-font-size
, яка визначає базовий розмір шрифту. --header-font-size
в три рази більший за--base-font-size
.- Селектор
h2
використовуєvar
з--header-font-size
. - Отже, усі заголовки
h2
на веб-сторінці будуть втричі більші за--base-font-size
.
Підсумки
Тепер ви розумієте, як використовувати змінні CSS для прискорення процесу розробки та створення коду, який легко підтримувати. Змінні можна використовувати з HTML та бібліотеками, як React. Рекомендуємо ознайомитись з різними підходами до стилізації React за допомогою CSS.
Ви можете перевірити вихідний код за посиланням.