В веб-разработке важно создание интерактивного и отзывчивого пользовательского интерфейса. Один из способов – использование пользовательских свойств CSS (Custom Properties) и их динамическое переключение с помощью JavaScript. В этой статье рассмотрим, как можно ими управлять для создания эффектов переключения стилей и состояния элементов на странице.

Основы пользовательских свойств CSS

Пользовательские свойства CSS (переменные), позволяют разработчикам создавать переменные в CSS и использовать их повторно. Они определяются через —property-name и используются через функцию var(). Например:

:root {

--main-color: #3498db;

}

body {

color: var(--main-color);

}

Преимущества

  • Удобство управления: одно изменение значения переменной изменит все связанные с ней стили.
  • Уменьшение дублирования кода: возможность повторного использования одних и тех же значений.
  • Динамическое изменение стилей: они изменяются через JS для создания интерактивных эффектов.

Переключение CSS с помощью JavaScript

Подготовка HTML и CSS

Для демонстрации давайте создадим простой HTML-документ с несколькими элементами и стилями, использующими Custom Properties.

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<title>Переключение CSS</title>

<style>

:root {

--bg-color: #f0f0f0;

--text-color: #333;

--transition-duration: 0.3s;

}

body {

background-color: var(--bg-color);

color: var(--text-color);

transition: background-color var(--transition-duration), color var(--transition-duration);

}

.toggle-button {

padding: 10px 20px;

margin: 20px;

cursor: pointer;

background-color: var(--text-color);

color: var(--bg-color);

border: none;

transition: background-color var(--transition-duration), color var(--transition-duration);

}

</style>

</head>

<body>

<button class="toggle-button">Переключить стиль</button>

<script src="script.js"></script>

</body>

</html>

JavaScript для переключения свойств

Теперь добавим JavaScript, который будет изменять значения при клике на кнопку.

document.querySelector('.toggle-button').addEventListener('click', () => {

const root = document.documentElement;

const currentBgColor = getComputedStyle(root).getPropertyValue('--bg-color').trim();

if (currentBgColor === '#f0f0f0') {

root.style.setProperty('--bg-color', '#333');

root.style.setProperty('--text-color', '#f0f0f0');

} else {

root.style.setProperty('--bg-color', '#f0f0f0');

root.style.setProperty('--text-color', '#333');

}

});

Объяснение кода

  1. Получение корневого элемента: const root = document.documentElement; — это дает управление элементами, определенными в :root.
  2. Чтение текущего значения: getComputedStyle(root).getPropertyValue(‘—bg-color’).trim(); — считывает текущее значение —bg-color.
  3. Переключение значения: в зависимости от текущего значения фона изменяются цвета фона и текста.

Продвинутые техники

Использование Custom Properties в медиа-запросах

Custom Properties могут также быть использованы в медиа-запросах, что позволяет создавать адаптивные дизайны.

@media (max-width: 600px) {

:root {

--bg-color: #ff6347;

--text-color: #fff;

}

}

Анимации и переходы

Они же могут быть анимированы, что добавляет возможность создания плавных переходов.

.element {

transition: all 0.5s;

background-color: var(--bg-color);

}

.element:hover {

--bg-color: #ff6347;

}

Заключение

Использование пользовательских свойств CSS и их динамическое переключение с помощью JavaScript предоставляет мощные инструменты для создания интерактивных и отзывчивых веб-приложений. Эти методы позволяют легко управлять стилями, обеспечивая гибкость и упрощая процесс разработки. Освоив эти техники, вы сможете улучшить сайт.