Объявление глобальной переменной CSS
Чтобы переменная была доступна глобально, определите её в псевдоклассе :root, который соответствует корневому элементу в дереве документов (обычно это тег <html>).
Поскольку переменные наследуются, то они доступны во всём вашем приложении, так как все ваши DOM-элементы являются потомками тега <html>.
:root {
--main-color: #ff6f69;
}
Переменная должна начинаться с двух дефисов (--).
Для получения доступа к переменной, нужно использовать функцию var() и передать имя переменной в качестве первого параметра.
#title {
color: var(--main-color);
}
/*И это назначит вашему заголовку цвет #ff6f69:*/
Функция var поддерживает второй параметр, фолбэк, то есть значение (или также CSS-переменная), которое будет использоваться, если переменная, переданная первым параметром, не определена, например:
#title {
color: var(--main-color, black);
}
Если переменная main-color недоступна, то будет использоваться черный цвет (black).
Объявление локальной переменной
Переменные с локальной областью видимости,доступны только для того элемента, в котором они были объявлены, включая его дочерние элементы.
Например, у вас может быть окно с предупреждением, в котором используется определённый цвет, который не используется в других частях приложения. В этом случае скорее всего нецелесообразно определять этот цвет в глобальной области:
.alert {
--alert-color: #ff6f69;
}
Теперь эта переменная может использоваться в дочерних элементах:
.alert p {
color: var(--alert-color);
border: 1px solid var(--alert-color);
}
Если вы попытаетесь использовать переменную alert-color в другой части приложения, например, в навигационной панели, это не сработает: браузер просто проигнорирует такую строку CSS (за исключением, если не был предоставлен фолбэк вторым параметром).
Реализация адаптивности с переменными
Большое преимущество CSS-переменных заключается
в том, что они имеют доступ к DOM.
На практике это означает, что вы можете,
например, изменить переменные в зависимости
от ширины экрана:
:root {
--main-font-size: 16px;
}
media all and (max-width: 600px) {
:root {
--main-font-size: 12px;
}
}
Всего четыре строки кода изменили базовый размер шрифта при просмотре вашего приложения на маленьком экране.
Как получить доступ к переменным из JavaScript?
Доступ к CSS-переменным с помощью JavaScript — это ещё одно из преимуществ того, что CSS-переменные являются частью DOM. Вы можете обновлять их значения, что может пригодится, если вы хотите дать возможность вашим пользователям изменять внешний вид сайта (например, изменить размер шрифта).
Например.Получение значение CSS-переменной через JavaScript занимает три строки кода:
var root = document.querySelector(':root');
var rootStyles = getComputedStyle(root);
var mainColor = rootStyles.getPropertyValue('--main-color');
console.log(mainColor); // '#ffeead'
Для обновления переменной CSS, просто вызовите метод setProperty на элементе, в котором была объявлена переменная, и передайте имя переменной в качестве первого параметра и новое значение — вторым.
root.style.setProperty('--main-color', '#88d8b0');
Изменение основного цвета повлияет на весь внешний вид приложения, что идеально подходит для случаев, когда пользователи могут выбрать тему на вашем сайте.