Содержание статьи

Переменные в CSS позволяют хранить значения свойств, чтобы многократно использовать их в стилях. Объявляются они через —имя-переменной внутри селекторов или :root, что задаёт глобальную область видимости.
Для использования переменной применяется функция var(—имя-переменной). Например, color: var(—main-color); позволяет менять цвет текста в разных элементах, изменив лишь одно значение переменной.
Переменные можно переопределять на уровне отдельных селекторов, что удобно для создания разных визуальных тем или вариантов компонента без дублирования кода. Это снижает вероятность ошибок и упрощает поддержку стилей.
Они подходят для любых свойств CSS, включая цвета, размеры шрифтов, отступы и анимации. Рекомендуется хранить базовые значения, такие как primary-color или base-font-size, в :root для централизованного управления дизайном.
Современные браузеры поддерживают переменные во всех основных версиях, но для старых версий стоит предусмотреть запасные значения через fallback в var(—имя, значение-по-умолчанию). Это обеспечивает стабильность отображения даже при отсутствии поддержки.
Определение CSS-переменных и область их действия
CSS-переменные представляют собой пользовательские свойства, которые начинаются с двойного дефиса, например, —main-color. Их область действия определяется местом объявления: переменная, заданная в :root, доступна глобально, а внутри конкретного селектора – только для этого блока и его потомков.
Пример глобальной и локальной переменной:
| Селектор | Объявление переменной | Применение |
|---|---|---|
| :root | —primary-color: #3498db; | color: var(—primary-color); // доступно во всех элементах |
| .header | —primary-color: #2ecc71; | color: var(—primary-color); // изменяет цвет только внутри .header |
При переопределении переменной в более узком селекторе используется локальное значение, а глобальное сохраняется для остальных элементов. Это позволяет строить сложные темы оформления и поддерживать консистентность дизайна без дублирования кода.
Для проверки области действия можно использовать инспектор браузера: переменные, объявленные на уровне :root, отображаются как глобальные, локальные – только в выбранном элементе. Рекомендуется хранить базовые значения глобально и уточнять локально при необходимости.
Синтаксис объявления и использования переменных
Пример объявления и применения:
- Объявление переменной: —main-bg-color: #f0f0f0;
- Использование переменной: background-color: var(—main-bg-color);
Для указания запасного значения применяется синтаксис с fallback:
- color: var(—text-color, #000000); – если —text-color не задана, будет использовано #000000.
Правила по использованию:
- Имя переменной должно начинаться с двойного дефиса и содержать только латинские буквы, цифры, дефис или подчёркивание.
- Переменные могут применяться в любых свойствах CSS, поддерживающих значения, включая размеры, цвета, шрифты и отступы.
- Локальные переменные переопределяют глобальные значения для конкретного селектора и его потомков.
Использование переменных упрощает поддержку стилей, позволяет централизованно управлять значениями и ускоряет внесение изменений в дизайн без правки каждого свойства отдельно.
Перезапись значений переменных в разных селекторах
Переменные в CSS можно переопределять внутри конкретного селектора, что позволяет изменять их значения для ограниченной области без затрагивания глобальных настроек. Локальное значение заменяет глобальное только внутри этого селектора и его потомков.
Пример:
:root {
—primary-color: #3498db;
}
.header {
—primary-color: #2ecc71;
color: var(—primary-color); /* #2ecc71 применяется только внутри .header */
}
.footer {
color: var(—primary-color); /* #3498db применяется, так как локальной переопределяющей переменной нет */
}
Для организации цветовых схем и тем рекомендуется держать базовые значения в :root и при необходимости менять их локально в отдельных блоках. Это упрощает поддержку и уменьшает вероятность ошибок при изменении дизайна.
Важно учитывать вложенность селекторов: переопределение в дочернем элементе затронет только этот элемент и его потомков, не влияя на родительские или соседние блоки.
Использование переменных для цветов и шрифтов

Переменные упрощают управление цветовой палитрой и типографикой. Для основных цветов и оттенков создают глобальные переменные в :root, например: —primary-color: #3498db;, —secondary-color: #2ecc71;. Это позволяет менять цвет элементов по всей странице, редактируя только одно значение.
Для шрифтов рекомендуется хранить базовый размер и семейство шрифта в переменных: —base-font: «Roboto», sans-serif;, —heading-size: 24px;. Использование через var() обеспечивает консистентность текста и упрощает настройку типографики для разных экранов.
Пример применения переменных:
body {
font-family: var(—base-font);
color: var(—primary-color);
}
h1 {
font-size: var(—heading-size);
color: var(—secondary-color);
}
Рекомендация: создавайте отдельный блок переменных для цветов и шрифтов, чтобы при изменении дизайна можно было быстро адаптировать все элементы интерфейса без правки каждого свойства вручную.
Создание тематических схем с помощью переменных

Переменные позволяют формировать несколько цветовых и стилевых тем для сайта без дублирования кода. Для каждой темы создают набор переменных, например, —background-color, —text-color, —accent-color, и применяют их через var() в стилях элементов.
Пример двух тем:
:root {
—background-color: #ffffff;
—text-color: #000000;
—accent-color: #3498db;
}
.dark-theme {
—background-color: #1e1e1e;
—text-color: #f0f0f0;
—accent-color: #e74c3c;
}
Элементы автоматически используют соответствующие значения переменных в зависимости от класса родительского контейнера:
body {
background-color: var(—background-color);
color: var(—text-color);
}
a {
color: var(—accent-color);
}
Такой подход позволяет переключать темы динамически через JavaScript, изменяя только класс родительского элемента, и обеспечивает единообразие всех компонентов без изменения каждой отдельной настройки.
Совместимость переменных с различными браузерами
CSS-переменные поддерживаются во всех современных версиях Chrome, Firefox, Edge, Safari и Opera. Для старых браузеров, таких как Internet Explorer, переменные не работают, поэтому необходимо предусмотреть fallback-значения.
Рекомендации по совместимости:
- Используйте var(—имя, значение-по-умолчанию) для обеспечения корректного отображения в браузерах без поддержки переменных.
- Проверяйте поддержку на Can I Use или аналогичных сервисах перед внедрением новых переменных.
- Для критичных свойств, таких как цвета фона или текста, задавайте базовые значения напрямую, а переменные используйте для расширенных настроек.
Пример с fallback:
body {
background-color: var(—background-color, #ffffff);
color: var(—text-color, #000000);
}
При использовании переменных в проектах с поддержкой старых браузеров рекомендуется сочетать их с обычными CSS-свойствами и предусматривать тестирование отображения на разных платформах.
Вопрос-ответ:
Что такое CSS-переменные и как они объявляются?
CSS-переменные — это пользовательские свойства, начинающиеся с двойного дефиса, например, —main-color. Они объявляются внутри селектора или :root. Глобальные переменные в :root доступны на всей странице, а локальные внутри конкретного селектора действуют только в этом блоке и его потомках. Используются через функцию var(—имя-переменной).
Можно ли переопределять переменные для отдельных блоков на странице?
Да, переменные можно переопределять в отдельных селекторах. Например, если глобальная переменная задаёт основной цвет текста, её значение можно изменить в блоке .header, чтобы цвет текста в этом блоке отличался. Переопределение действует только внутри селектора и вложенных элементов, не изменяя глобальные значения.
Для каких свойств CSS чаще всего используют переменные?
Переменные применяются для любых свойств, где повторяются значения. Чаще всего это цвета, шрифты, размеры, отступы, ширина и высота блоков, границы и тени. Например, можно создать переменные —primary-color, —base-font-size и —padding-size и использовать их во всех элементах сайта, чтобы при изменении значения менялись сразу все соответствующие свойства.
Как использовать переменные для создания разных цветовых тем на сайте?
Для каждой темы создают набор переменных с одинаковыми именами, но разными значениями, и применяют их через классы родительских элементов. Например, :root содержит светлую тему, а класс .dark-theme переопределяет переменные с тёмными цветами. Элементы автоматически используют значения, соответствующие активной теме, что позволяет переключать оформление без изменения всех стилей вручную.
Какие меры нужно принимать, чтобы переменные работали в старых браузерах?
В старых браузерах CSS-переменные не поддерживаются. Чтобы избежать проблем, используют запасные значения через fallback: color: var(—text-color, #000000);. Также для критичных свойств задают базовые значения напрямую перед использованием переменной, чтобы контент оставался читаемым и дизайн не нарушался.
