Функция var()

Стилевая функция var() позволяет вставлять значения пользовательских переменных в значения стилевых свойств. var() нельзя использовать в именах селекторов и в свойствах.

Сами пользовательские переменные и их значения описываются внутри произвольного селектора и должны начинаться с двух дефисов. Через двоеточие переменной присваивается любое допустимое для CSS значение.

aside {
  --my-font: Helvetica, Arial, sans-serif;
}

Для обращения к переменной --my-font используется запись var(--my-font), которую можно вставлять в качестве значения свойства. При этом область видимости переменной ограничена указанным селектором (aside в данном случае) и применение var(--my-font) в другом селекторе не даст результата. Для создания глобальных переменных их следует описать внутри селектора :root.

Синтаксис

var( <переменная> [, <значение> ]? )
Описание Пример
<тип> Указывает тип значения. <размер>
A && B Значения должны выводиться в указанном порядке. <размер> && <цвет>
A | B Указывает, что надо выбрать только одно значение из предложенных (A или B). normal | small-caps
A || B Каждое значение может использоваться самостоятельно или совместно с другими в произвольном порядке. width || count
[ ] Группирует значения. [ crop || cross ]
* Повторять ноль или больше раз. [,<время>]*
+ Повторять один или больше раз. <число>+
? Указанный тип, слово или группа не является обязательным. inset?
{A, B} Повторять не менее A, но не более B раз. <радиус>{1,4}
# Повторять один или больше раз через запятую. <время>#

Значения

<переменная>
Имя переменной, обозначается двумя дефисами впереди (--my-font).
<значение>
Резервное значение, которое подставляется вместо заданного, в том случае, если переменная не определена. Через запятую можно указать несколько значений.

Пример

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>var()</title> <style> :root { --primary-color: #0275d8; --info-color: #5bc0de; } button { padding: .5rem 1rem; border: none; } .primary { color: var(--white, #fff); background-color: var(--primary-color); } .info { color: var(--white, #fff); background-color: var(--info-color); } p.info { --primary-color: #31708f; padding: 10px; background-color: #d9edf7; color: var(--primary-color); } </style> </head> <body> <p class="info">Кнопки</p> <button class="primary">Типовая кнопка</button> <button class="info">Информация</button> </body> </html>

В данном примере вводятся две переменные: --primary-color и --info-color. Переменная --white не определена, поэтому подставляется указанное значение по умолчанию. Для селектора p.info значение переменной --primary-color переопределяется.

Спецификация

CSS Custom Properties for Cascading Variables Module Level 1

Браузеры

15 49 36 9.1 31
31 37 9.3

В таблице браузеров применяются следующие обозначения.

  • — элемент полностью поддерживается браузером;
  • — элемент браузером не воспринимается и игнорируется;
  • — при работе возможно появление различных ошибок, либо элемент поддерживается с оговорками.

Число указывает версию браузреа, начиная с которой элемент поддерживается.