Рабочие примеры
В каждом примере сверху — реальный результат, ниже — код. Превью используют те же значения переменных, что и в коде.
1. Объявление в :root и чтение через var()
Цвет бренда хранится в одной переменной и применяется к фону и рамке.
Кнопка бренда
фон и рамка берут один цвет из переменной.
фон и рамка берут один цвет из переменной.
:root {
--brand: #0f766e;
}
.button {
background: var(--brand);
border: 3px solid var(--brand);
color: #ecfeff;
}
2. Палитра проекта в переменных
Дизайн-токены цвета объявляются раз и переиспользуются везде. Вот сама палитра:
#0f766e
#ea580c
#172033
#f8fafc
:root {
--brand: #0f766e;
--accent: #ea580c;
--text: #172033;
--bg: #f8fafc;
}
3. Одна переменная — разный вид во многих местах
Две карточки используют одинаковое правило .card, но каждая переопределяет --accent в своей области. Меняется только значение переменной.
Успех
--accent: #16a34a
--accent: #16a34a
Ошибка
--accent: #dc2626
--accent: #dc2626
.card {
border-left: 6px solid var(--accent);
}
.card strong { color: var(--accent); }
.card.success { --accent: #16a34a; }
.card.danger { --accent: #dc2626; }
4. Запасное значение var(--x, fallback)
Переменная --note-bg нигде не объявлена, поэтому подставляется fallback — жёлтый фон.
Заметка
--note-bg не задана → фон из fallback (#fef9c3).
--note-bg не задана → фон из fallback (#fef9c3).
.note {
/* --note-bg не определена → берётся #fef9c3 */
background: var(--note-bg, #fef9c3);
color: #713f12;
}
5. Переключение темы через переменные
Светлая и тёмная карточки — это одни и те же правила. Меняются лишь значения --bg и --text.
Светлая
--bg:#fff · --text:#172033
--bg:#fff · --text:#172033
Тёмная
--bg:#111827 · --text:#f8fafc
--bg:#111827 · --text:#f8fafc
📄 lesson-40/styles.css
:root {
--bg: #ffffff;
--text: #172033;
}
.panel {
background: var(--bg);
color: var(--text);
}
@media (prefers-color-scheme: dark) {
:root {
--bg: #111827;
--text: #f8fafc;
}
}
Эксперимент: открой пример в DevTools (F12), найди
:root и поменяй значение переменной — все элементы, читающие её через var(), обновятся сразу.