Spec-Zone.ru › CSS

CSS-функция `contrast-color()`

Базовая поддержка Недавно стала доступна

Эта функция работает в последних версиях устройств и браузеров. Она может не работать на старых устройствах и в старых версиях браузеров. Она доступна во всех браузерах с апреля 2026 года.

contrast-color() — это CSS-функция, которая принимает значение color и возвращает контрастный цвет. Обычно функция обеспечивает минимальный контраст WCAG AA. Браузеры могут использовать другие, более совершенные алгоритмы.

Функция contrast-color() позволяет задать цвет текста и автоматически подобрать контрастный цвет фона или наоборот. Это избавляет от необходимости поддерживать пары цветов текста и фона.

Синтаксис

contrast-color(red)
contrast-color(var(--backgroundColor))

Параметры

color
Любое допустимое значение color.

Возвращаемое значение

<named-color>: white или black.

Описание

Функция contrast-color() возвращает значение white или black — в зависимости от того, какое из них обеспечивает наибольший контраст с входным цветом. Если white и black обеспечивают одинаковый контраст с входным цветом, возвращается white.

Предупреждение: Контраст WCAG AA (4.5:1) не всегда обеспечивает хорошую читаемость текста. Цвета фона средних тонов обычно недостаточно контрастируют ни с чёрным, ни с белым цветом переднего плана. Например, contrast-color() на королевском синеватом фоне (#2277d3) приводит к появлению чёрного текста, который трудно читать при небольшом размере. Поэтому рекомендуется использовать светлые или тёмные цвета с функцией contrast-color().

Примеры

Контрастный текст для кнопки

В следующем примере браузер автоматически применяет выбранный цвет к фону элемента <button> «Button», а контрастный цвет (чёрный или белый) — к его тексту.

<label>
  Select background color of the button:
  <input type="color" id="colorPicker" value="#660066" />
</label>
<br />
<button>Button</button>
:root {
  --button-color: lightblue;
}

button {
  background-color: var(--button-color);

  /* Set contrasting text color automatically */
  color: contrast-color(var(--button-color));
}
body {
  padding: 1rem;
}

button {
  margin: 3rem;
  padding: 1rem;
  width: 150px;
  font-size: 2rem;
  border-radius: 1rem;
}

@supports not (color: contrast-color(red)) {
  body::before {
    content: "Your browser doesn't support the contrast-color() function.";
    background-color: wheat;
    display: block;
    text-align: center;
    padding: 1rem 0;
  }
}
const colorPicker = document.getElementById("colorPicker");
const root = document.documentElement;

function updateColor(color) {
  root.style.setProperty("--button-color", colorPicker.value);
}

colorPicker.addEventListener("input", updateColor);
updateColor();

Использование в светлом и тёмном режимах

В следующем примере prefers-color-scheme используется в медиазапросе, чтобы задать цвет фона в соответствии с настройками цветовой схемы операционной системы или браузера. Функция contrast-color() автоматически задаёт цвет текста.

Измените настройку тёмного режима в браузере или ОС, чтобы увидеть результат.

<pre>
    Q: How does CSS transform light into energy?
  Ans: Using <a href="/en-US/docs/Web/CSS/Reference/Properties/font-synthesis">font-synthesis</a>.
</pre>
:root {
  --background-color: navy;
}

@media (prefers-color-scheme: light) {
  :root {
    --background-color: wheat;
  }
}

body,
a {
  background-color: var(--background-color);
  color: contrast-color(var(--background-color));
}
body {
  padding: 2rem;
  font-size: 1.2rem;
}

pre {
  margin-top: 3rem;
}

@supports not (color: contrast-color(red)) {
  body::before {
    content: "Your browser doesn't support the contrast-color() function.";
    background-color: wheat;
    display: block;
    text-align: center;
    padding: 1rem 0;
  }
}

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

Спецификация
Модуль CSS Color Module Level 5
# contrast-color

Совместимость с браузерами

Компьютеры Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari для iOS Samsung Internet WebView Android WebView для iOS
contrast-color
147
147
146
131
26
147
146
98
26
Нет
147
26

См. также

  • contrast()
  • Модуль CSS colors
  • Пользовательские свойства CSS и var()
  • Функции prefers-contrast и prefers-color-scheme @media
  • WCAG: контрастность цветов
  • Как заставить браузер выбирать контрастный цвет в CSS на webkit.org (2025)
  • Проверка контрастности WebAIM на webaim.org (2025)

© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Values/color_value/contrast-color

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API