var()
Функцію CSS var()
(змінна) можна використовувати для вставляння значення кастомної властивості (що також іноді зветься "змінною CSS") замість будь-якої частини значення іншої властивості.
Спробуйте його в дії
Функція var()
не може бути вжита в назвах властивостей, селекторах або ще чому завгодно, крім значень властивостей. (Зазвичай спроби зробити щось подібне призводять до недійсного синтаксису, або ж до значення, яке не має ніякого стосунку до змінної.)
Синтаксис
/* Просте використання */
var(--custom-prop);
/* Із запасним варіантом */
var(--custom-prop,); /* порожнє значення як запасний варіант */
var(--custom-prop, initial); /* початкове значення властивості як запасний варіант */
var(--custom-prop, #FF0000);
var(--custom-prop, var(--default-value));
var(--custom-prop, var(--default-value, red));
Перший аргумент функції – це назва кастомної властивості, що підставляється. Необов'язковий другий аргумент – служить запасним значенням. Якщо кастомна властивість, на яку посилається перший аргумент, недійсна, то ця функція використовує друге значення.
Синтаксис запасного значення, як і синтаксис кастомних властивостей, дозволяє коми. Наприклад var(--foo, red, blue)
визначає запасне значення red, blue
; тобто будь-що між першою комою та кінцем функції вважається запасним значенням.
Значення
<custom-property-name>
Назва кастомної властивості, представлена ідентифікатором, що починається з двох рисок. Кастомні властивості призначені суто для використання розробниками та користувачами; CSS ніколи не надасть їм значення, яке виходить за межі того, що представлено тут.
<declaration-value>
Запасне значення кастомної властивості, яке використовується в разі того, що кастомна властивість недійсна в контексті свого використання. Це значення може містити будь-які символи, крім певних символів з особливими значеннями, штибу символів нового рядка, кінцевих дужок без пари, тобто
)
,]
або}
, крапок з комою на найвищому рівні та знаків оклику. Запасне значення само може бути кастомною властивістю, що використовує синтаксисvar()
.Примітка:
var(--a,)
– дійсний запис, який задає те, що якщо кастомна властивість--a
недійсна або відсутня, тоvar()
замінюється нічим.
Формальний синтаксис
var( <custom-property-name> , <declaration-value>? )
Приклади
Використання кастомної властивості, заданої на :root
CSS
:root {
--main-bg-color: pink;
}
body {
background-color: var(--main-bg-color);
}
Результат
Тут значення властивості background-color
задано через кастомну властивість --main-bg-color
. Таким чином, кольором фону тіла HTML буде рожевий.
Використання кастомної властивості до її задання
CSS
body {
background-color: var(--main-bg-color);
}
:root {
--main-bg-color: pink;
}
Результат
У цьому прикладі фоновий колір тіла HTML буде рожевим, попри те, що кастомна властивість задана пізніше.
Використання кастомної властивості, заданої в іншому файлі
HTML
<!doctype html>
<html lang="uk">
<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="1.css" />
<link rel="stylesheet" href="2.css" />
</head>
<body></body>
</html>
CSS
/* 1.css */
body {
background-color: var(--main-bg-color);
}
/* 2.css */
:root {
--main-bg-color: pink;
}
Результат
Фоновим кольором тіла HTML буде рожевий, попри те, що кастомна властивість задана в іншому файлі.
Кастомні властивості з запасними значеннями на випадок того, що властивість не задана
HTML
<div class="component">
<h1 class="header">Заголовок</h1>
<p class="text">Текст</p>
</div>
CSS
/* У стилі компонента: */
.component .header {
/* header-color не задана, тож елемент залишається синім, згідно з запасним значенням */
color: var(--header-color, blue);
}
.component .text {
color: var(--text-color, black);
}
/* У стилі більшого застосунку: */
.component {
--text-color: #080;
}
Результат
Оскільки --header-color
не задана, текст "Заголовок" буде синім, згідно з запасним значенням.
Використання кастомної властивості як запасного значення
CSS
:root {
--backup-bg-color: teal;
}
body {
background-color: var(--main-bg-color, var(--backup-bg-color, white));
}
Результат
Оскільки --main-bg-color
не задана, то background-color
тіла відступить до --backup-bg-color
, тобто чиркового кольору.
Специфікації
Специфікація |
---|
CSS Custom Properties for Cascading Variables Module Level 2 (CSS Variables 2) # using-variables |
Сумісність із браузерами
desktop | mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
var()
|
Chrome Full support 49 | Edge Full support 15 | Firefox Full support 31 | Internet Explorer No support Ні | Opera Full support 36 | Safari Full support 9.1 | WebView Android Full support 50 | Chrome Android Full support 49 | Firefox for Android Full support 31 | Opera Android Full support 36 | Safari on iOS Full support 9.3 | Samsung Internet Full support 5.0 |
Дивіться також
env(…)
– змінні оточення, доступні лише для зчитування, що контролюються користувацьким агентом.- Використання кастомних властивостей (змінних) CSS
- Директива
@property
- Модуль Кастомних властивостей як каскадних змінних CSS