Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как использовать CSS-переменные для цветов

Короткий ответ

Объявите цвета один раз в :root и используйте их через var():

<style>
  :root { --brand: royalblue; --text: #222; --surface: aliceblue; }
  .card { padding: 12px; background: var(--surface); color: var(--text); border-left: 4px solid var(--brand); }
  .card a { color: var(--brand); }
</style>
 
<div class="card">Our new plan is out. <a href="https://example.com">See prices</a></div>

Имя переменной начинается с двух дефисов. Поменяйте --brand — и цвет сменится везде, где он использован.

Переопределение для блока

Переменные наследуются, поэтому внутри отдельного блока их можно переопределить:

<style>
  :root { --brand: royalblue; }
  .btn { padding: 6px 14px; border: none; background: var(--brand); color: white; }
  .danger { --brand: crimson; }
</style>
 
<button class="btn">Save</button>
<div class="danger"><button class="btn">Delete</button></div>

Запасное значение и оттенки

Второй аргумент var() используется, если переменная не задана. А color-mix() делает из основного цвета светлый оттенок без новой переменной:

.note { background: color-mix(in oklch, var(--brand, teal) 15%, white); }

Частая ошибка

Пишут color: --brand или color: $brand — так не работает. Значение переменной читают только через var(--brand). Ещё одна ловушка — регистр: --Brand и --brand — две разные переменные.

Функции из этого ответа

  • var() — Подставляет значение пользовательского свойства (переменной CSS).
  • :root — Срабатывает у корневого элемента документа — на веб-странице это `<html>`.
  • color-mix() — Смешивает два цвета в заданной пропорции.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.