Spec-Zone.ru › CSS

Тип CSS `<color>`

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

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

<color> — это CSS тип данных, представляющий цвет. Значение <color> также может включать значение прозрачности альфа-канала, указывающее, как цвет должен смешиваться с фоном.

Примечание: Хотя значения <color> определены точно, их фактический вид может различаться (иногда значительно) от устройства к устройству. Это связано с тем, что большинство устройств не откалиброваны, а некоторые браузеры не поддерживают цветовые профили устройств вывода.

Синтаксис

/* Named colors */
rebeccapurple
aliceblue

/* RGB Hexadecimal */
#f09
#ff0099

/* RGB (Red, Green, Blue) */
rgb(255 0 153)
rgb(255 0 153 / 80%)

/* HSL (Hue, Saturation, Lightness) */
hsl(150 30% 60%)
hsl(150 30% 60% / 80%)

/* HWB (Hue, Whiteness, Blackness) */
hwb(12 50% 0%)
hwb(194 0% 0% / 0.5)

/* Lab (Lightness, A-axis, B-axis) */
lab(50% 40 59.5)
lab(50% 40 59.5 / 0.5)

/* LCH (Lightness, Chroma, Hue) */
lch(52.2% 72.2 50)
lch(52.2% 72.2 50 / 0.5)

/* Oklab (Lightness, A-axis, B-axis) */
oklab(59% 0.1 0.1)
oklab(59% 0.1 0.1 / 0.5)

/* OkLCh (Lightness, Chroma, Hue) */
oklch(60% 0.15 50)
oklch(60% 0.15 50 / 0.5)

/* Relative CSS colors */
/* HSL hue change */
hsl(from red 240deg s l)
/* HWB alpha channel change */
hwb(from green h w b / 0.5)
/* LCH lightness change */
lch(from blue calc(l + 20) c h)

/* light-dark */
light-dark(white, black)
light-dark(rgb(255 255 255), rgb(0 0 0))

Значение <color> можно задать одним из перечисленных ниже способов:

  • С помощью ключевых слов: <named-color> (например, blue или pink), <system-color> и currentColor.
  • С помощью шестнадцатеричной записи: <hex-color> (например, #ff0000).
  • С помощью <color-function> с параметрами в цветовом пространстве, используя функциональные нотации:
    • Цветовое пространство sRGB: hsl(), hwb() и rgb().
    • Цветовое пространство CIELAB: lab() и lch().
    • Цветовое пространство Oklab: oklab() и oklch().
    • Другие цветовые пространства: color(), device-cmyk().
  • С помощью синтаксиса относительного цвета для создания нового цвета на основе существующего. Любая из перечисленных выше цветовых функций может принимать исходный цвет, перед которым указывается ключевое слово from, а после которого задаются значения каналов для нового выходного цвета.
  • Смешивая два цвета: color-mix().
  • Указывая цвет, для которого нужно получить контрастный цвет: contrast-color().
  • Указывая два цвета: первый для светлых цветовых схем, второй — для тёмных: light-dark().

Ключевое слово currentColor

Ключевое слово currentColor представляет значение свойства color элемента. Это позволяет использовать значение color для свойств, которые по умолчанию его не получают.

Если currentColor используется в качестве значения свойства color, вместо этого оно принимает унаследованное значение свойства color.

<div class="container">
  The color of this text is blue.
  <div class="child"></div>
  This block is surrounded by a blue border.
</div>
.container {
  color: blue;
  border: 1px dashed currentColor;
}
.child {
  background: currentColor;
  height: 9px;
}

Отсутствующие компоненты цвета

Каждый компонент любой цветовой функции CSS — за исключением функций с устаревшим синтаксисом с разделением запятыми — можно указать как отсутствующий, задав ключевое слово none.

Явное указание отсутствующих компонентов при интерполяции цвета полезно в случаях, когда нужно интерполировать одни компоненты цвета, но не другие. Во всех остальных случаях отсутствующий компонент фактически будет иметь нулевое значение в соответствующей единице измерения: 0, 0% или 0deg. Например, следующие цвета эквивалентны при использовании вне интерполяции:

/* These are equivalent */
color: oklab(50% none -0.25);
color: oklab(50% 0 -0.25);

/* These are equivalent */
background-color: hsl(none 100% 50%);
background-color: hsl(0deg 100% 50%);

Интерполяция

Интерполяция цвета происходит в градиентах, переходах и анимациях.

При интерполяции значений <color> они сначала преобразуются в заданное цветовое пространство, а затем каждый компонент вычисленных значений интерполируется линейно. Скорость интерполяции определяется функцией плавности в переходах и анимациях. По умолчанию используется цветовое пространство Oklab, но для некоторых связанных с цветом функциональных нотаций его можно переопределить с помощью <color-interpolation-method>.

Интерполяция с отсутствующими компонентами

Интерполяция цветов в одном и том же пространстве

При интерполяции цветов, уже заданных в цветовом пространстве интерполяции, отсутствующие компоненты одного цвета заменяются существующими значениями соответствующих компонентов другого цвета. Например, следующие два выражения эквивалентны:

color-mix(in oklch, oklch(none 0.2 10), oklch(60% none 30))
color-mix(in oklch, oklch(60% 0.2 10), oklch(60% 0.2 30))

Примечание: Если компонент отсутствует в обоих цветах, он останется отсутствующим и после интерполяции.

Интерполяция цветов из разных пространств: аналогичные компоненты

Если какой-либо интерполируемый цвет не задан в цветовом пространстве интерполяции, его отсутствующие компоненты переносятся в преобразованный цвет на основе аналогичных компонентов той же категории, как описано в следующей таблице:

Категория Аналогичные компоненты
Красные R, X
Зелёные G, Y
Синие B, Z
Светлота L
Цветность C, S
Тон H
a a
b b

Например:

  • X (0.2) в color(xyz 0.2 0.1 0.6) аналогичен R (50%) в rgb(50% 70% 30%).
  • H (0deg) в hsl(0deg 100% 80%) аналогичен H (140) в oklch(80% 0.1 140).

В качестве примера рассмотрим цветовое пространство OkLCh для интерполяции и два цвета ниже:

lch(80% 30 none)
color(display-p3 0.7 0.5 none)

Предварительная обработка выполняется следующим образом:

  1. Замените отсутствующие компоненты в обоих цветах нулевыми значениями:

    lch(80% 30 0)
    color(display-p3 0.7 0.5 0)
    
  2. Преобразуйте оба цвета в цветовое пространство интерполяции:

    oklch(83.915% 0.0902 0.28)
    oklch(63.612% 0.1522 78.748)
    
  3. Если какой-либо компонент преобразованных цветов аналогичен отсутствующему компоненту соответствующего исходного цвета, снова задайте ему значение «отсутствует»:

    oklch(83.915% 0.0902 none)
    oklch(63.612% 0.1522 78.748)
    
  4. Замените каждый отсутствующий компонент соответствующим компонентом другого преобразованного цвета:

    oklch(83.915% 0.0902 78.748)
    oklch(63.612% 0.1522 78.748)
    

Доступность

Некоторым людям трудно различать цвета. Рекомендации WCAG 2.2 настоятельно не рекомендуют использовать цвет как единственное средство передачи определённого сообщения, действия или результата. Дополнительную информацию см. в разделе «Цвет и контрастность цвета».

Формальный синтаксис

<color> = 
  <color-base> |
  currentColor |
  <system-color> |
  <light-dark()> |
  <deprecated-system-color>

<color-base> = 
  <hex-color> |
  <color-function> |
  <named-color> |
  <color-mix()> |
  transparent

<system-color> = 
  AccentColor |
  AccentColorText |
  ActiveText |
  ButtonBorder |
  ButtonFace |
  ButtonText |
  Canvas |
  CanvasText |
  Field |
  FieldText |
  GrayText |
  Highlight |
  HighlightText |
  LinkText |
  Mark |
  MarkText |
  SelectedItem |
  SelectedItemText |
  VisitedText

<light-dark()> = 
  light-dark( <color>, <color> )

<deprecated-system-color> = 
  ActiveBorder |
  ActiveCaption |
  AppWorkspace |
  Background |
  ButtonHighlight |
  ButtonShadow |
  CaptionText |
  InactiveBorder |
  InactiveCaption |
  InactiveCaptionText |
  InfoBackground |
  InfoText |
  Menu |
  MenuText |
  Scrollbar |
  ThreeDDarkShadow |
  ThreeDFace |
  ThreeDHighlight |
  ThreeDLightShadow |
  ThreeDShadow |
  Window |
  WindowFrame |
  WindowText

<color-function> = 
  <rgb()> |
  <rgba()> |
  <hsl()> |
  <hsla()> |
  <hwb()> |
  <lab()> |
  <lch()> |
  <oklab()> |
  <oklch()> |
  <color()>

<named-color> = 
  aliceblue |
  antiquewhite |
  aqua |
  aquamarine |
  azure |
  beige |
  bisque |
  black |
  blanchedalmond |
  blue |
  blueviolet |
  brown |
  burlywood |
  cadetblue |
  chartreuse |
  chocolate |
  coral |
  cornflowerblue |
  cornsilk |
  crimson |
  cyan |
  darkblue |
  darkcyan |
  darkgoldenrod |
  darkgray |
  darkgreen |
  darkgrey |
  darkkhaki |
  darkmagenta |
  darkolivegreen |
  darkorange |
  darkorchid |
  darkred |
  darksalmon |
  darkseagreen |
  darkslateblue |
  darkslategray |
  darkslategrey |
  darkturquoise |
  darkviolet |
  deeppink |
  deepskyblue |
  dimgray |
  dimgrey |
  dodgerblue |
  firebrick |
  floralwhite |
  forestgreen |
  fuchsia |
  gainsboro |
  ghostwhite |
  gold |
  goldenrod |
  gray |
  green |
  greenyellow |
  grey |
  honeydew |
  hotpink |
  indianred |
  indigo |
  ivory |
  khaki |
  lavender |
  lavenderblush |
  lawngreen |
  lemonchiffon |
  lightblue |
  lightcoral |
  lightcyan |
  lightgoldenrodyellow |
  lightgray |
  lightgreen |
  lightgrey |
  lightpink |
  lightsalmon |
  lightseagreen |
  lightskyblue |
  lightslategray |
  lightslategrey |
  lightsteelblue |
  lightyellow |
  lime |
  limegreen |
  linen |
  magenta |
  maroon |
  mediumaquamarine |
  mediumblue |
  mediumorchid |
  mediumpurple |
  mediumseagreen |
  mediumslateblue |
  mediumspringgreen |
  mediumturquoise |
  mediumvioletred |
  midnightblue |
  mintcream |
  mistyrose |
  moccasin |
  navajowhite |
  navy |
  oldlace |
  olive |
  olivedrab |
  orange |
  orangered |
  orchid |
  palegoldenrod |
  palegreen |
  paleturquoise |
  palevioletred |
  papayawhip |
  peachpuff |
  peru |
  pink |
  plum |
  powderblue |
  purple |
  rebeccapurple |
  red |
  rosybrown |
  royalblue |
  saddlebrown |
  salmon |
  sandybrown |
  seagreen |
  seashell |
  sienna |
  silver |
  skyblue |
  slateblue |
  slategray |
  slategrey |
  snow |
  springgreen |
  steelblue |
  tan |
  teal |
  thistle |
  tomato |
  turquoise |
  violet |
  wheat |
  white |
  whitesmoke |
  yellow |
  yellowgreen

<color-mix()> = 
  color-mix( <color-interpolation-method> , [ <color> && <percentage [0,100]>? ]#{2})

<color> = 
  <color-base> |
  currentColor |
  <system-color> |
  <light-dark()> |
  <deprecated-system-color>

<rgb()> = 
  rgb( <percentage>#{3} , <alpha-value>? ) |
  rgb( <number>#{3} , <alpha-value>? ) |
  rgb( [ <number> | <percentage> | none ]{3} [ / [ <alpha-value> | none ] ]? )

<rgba()> = 
  rgba( <percentage>#{3} , <alpha-value>? ) |
  rgba( <number>#{3} , <alpha-value>? ) |
  rgba( [ <number> | <percentage> | none ]{3} [ / [ <alpha-value> | none ] ]? )

<hsl()> = 
  hsl( <hue>, <percentage>, <percentage>, <alpha-value>? ) |
  hsl( [ <hue> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )

<hsla()> = 
  hsla( <hue>, <percentage>, <percentage>, <alpha-value>? ) |
  hsla( [ <hue> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )

<hwb()> = 
  hwb( [ <hue> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )

<lab()> = 
  lab( [<percentage> | <number> | none] [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ / [<alpha-value> | none] ]? )

<lch()> = 
  lch( [<percentage> | <number> | none] [ <percentage> | <number> | none] [ <hue> | none] [ / [<alpha-value> | none] ]? )

<oklab()> = 
  oklab( [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ / [<alpha-value> | none] ]? )

<oklch()> = 
  oklch( [ <percentage> | <number> | none] [ <percentage> | <number> | none] [ <hue> | none] [ / [<alpha-value> | none] ]? )

<color()> = 
  color( [ from <color> ]? <colorspace-params> [ / [ <alpha-value> | none ] ]? )

<color-interpolation-method> = 
  in [ <rectangular-color-space> | <polar-color-space> <hue-interpolation-method>? | <custom-color-space> ]

<alpha-value> = 
  <number> |
  <percentage>

<hue> = 
  <number> |
  <angle>

<colorspace-params> = 
  [<custom-params> | <predefined-rgb-params> | <xyz-params>]

<rectangular-color-space> = 
  srgb |
  srgb-linear |
  display-p3 |
  display-p3-linear |
  a98-rgb |
  prophoto-rgb |
  rec2020 |
  lab |
  oklab |
  xyz |
  xyz-d50 |
  xyz-d65

<polar-color-space> = 
  hsl |
  hwb |
  lch |
  oklch

<hue-interpolation-method> = 
  [ shorter | longer | increasing | decreasing ] hue

<custom-color-space> = 
  <dashed-ident>

<custom-params> = 
  <dashed-ident> [ <number> | <percentage> | none ]+

<predefined-rgb-params> = 
  <predefined-rgb> [ <number> | <percentage> | none ]{3}

<xyz-params> = 
  <xyz> [ <number> | <percentage> | none ]{3}

<predefined-rgb> = 
  srgb |
  srgb-linear |
  display-p3 |
  display-p3-linear |
  a98-rgb |
  prophoto-rgb |
  rec2020

<xyz> = 
  xyz |
  xyz-d50 |
  xyz-d65

Примеры

Изучение значений цветов

В этом примере мы предоставляем <div> и текстовое поле ввода. Если ввести в поле допустимое значение цвета, <div> примет этот цвет, что позволит проверить значения цветов.

HTML

<div></div>
<hr />
<label for="color">Enter a valid color value:</label>
<input type="text" id="color" />
div {
  height: 200px;
  width: 200px;
}
const inputElem = document.querySelector("input");
const divElem = document.querySelector("div");

function validTextColor(stringToTest) {
  if (stringToTest === "inherit" || stringToTest === "transparent") {
    return false;
  }

  const div = document.createElement("div");
  div.style.color = stringToTest;
  return !!div.style.color;
}

inputElem.addEventListener("input", () => {
  if (validTextColor(inputElem.value)) {
    divElem.style.backgroundColor = inputElem.value;
    divElem.textContent = "";
  } else {
    divElem.removeAttribute("style");
    divElem.textContent = "Invalid color value";
  }
});

Результат

Создание полностью насыщенных цветов sRGB

В этом примере показаны полностью насыщенные цвета в цветовом пространстве sRGB.

HTML

<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>

CSS

body {
  display: flex;
  flex-wrap: wrap;
}
div {
  height: 80px;
  margin: 10px;
  width: 80px;
}
div:nth-child(1) {
  background-color: hsl(0 100% 50%);
}
div:nth-child(2) {
  background-color: hsl(30 100% 50%);
}
div:nth-child(3) {
  background-color: hsl(60 100% 50%);
}
div:nth-child(4) {
  background-color: hsl(90 100% 50%);
}
div:nth-child(5) {
  background-color: hsl(120 100% 50%);
}
div:nth-child(6) {
  background-color: hsl(150 100% 50%);
}
div:nth-child(7) {
  background-color: hsl(180 100% 50%);
}
div:nth-child(8) {
  background-color: hsl(210 100% 50%);
}
div:nth-child(9) {
  background-color: hsl(240 100% 50%);
}
div:nth-child(10) {
  background-color: hsl(270 100% 50%);
}
div:nth-child(11) {
  background-color: hsl(300 100% 50%);
}
div:nth-child(12) {
  background-color: hsl(330 100% 50%);
}

Результат

Создание разных оттенков красного

В этом примере показаны оттенки красного цвета в цветовом пространстве sRGB.

HTML

<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>

CSS

body {
  display: flex;
  flex-wrap: wrap;
}
div {
  box-sizing: border-box;
  height: 80px;
  margin: 10px;
  width: 80px;
}
div:nth-child(1) {
  background-color: hsl(0 100% 0%);
}
div:nth-child(2) {
  background-color: hsl(0 100% 20%);
}
div:nth-child(3) {
  background-color: hsl(0 100% 40%);
}
div:nth-child(4) {
  background-color: hsl(0 100% 60%);
}
div:nth-child(5) {
  background-color: hsl(0 100% 80%);
}
div:nth-child(6) {
  background-color: hsl(0 100% 100%);
  border: solid;
}

Результат

Создание красных цветов с разной насыщенностью

В этом примере показаны красные цвета с разной насыщенностью в цветовом пространстве sRGB.

HTML

<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>

CSS

body {
  display: flex;
  flex-wrap: wrap;
}
div {
  height: 80px;
  margin: 10px;
  width: 80px;
}
div:nth-child(1) {
  background-color: hsl(0 0% 50%);
}
div:nth-child(2) {
  background-color: hsl(0 20% 50%);
}
div:nth-child(3) {
  background-color: hsl(0 40% 50%);
}
div:nth-child(4) {
  background-color: hsl(0 60% 50%);
}
div:nth-child(5) {
  background-color: hsl(0 80% 50%);
}
div:nth-child(6) {
  background-color: hsl(0 100% 50%);
}

Результат

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

Спецификация
Модуль CSS Color, уровень 4
# color-syntax

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

Для ПК Мобильные устройства
Chrome Edge Firefox Opera Safari Chrome для Android Firefox для Android Opera для Android Safari на iOS Samsung Internet WebView для Android WebView на iOS
color
1
12
1
3.5
1
18
4
10.1
1
1.0
4.4
1
alpha
151
151
155
135
27
151
155
101
27
Нет
151
27
color
111
111
113
97
15
10.1–15Поддерживаются только предопределённые цветовые профили display-p3 и srgb.
111
113
75
15
10.3–15Поддерживаются только предопределённые цветовые профили display-p3 и srgb.
22.0
111
15
10.3–15Поддерживаются только предопределённые цветовые профили display-p3 и srgb.
color-mix
111
111
113
97
16.2
111
113
75
16.2
22.0
111
16.2
contrast-color
147
147
146
131
26
147
146
98
26
Нет
147
26
currentcolor
1
12
1.5
9.5
4
18
4
14
3.2
1.0
37
3.2
from_currentcolor
131
131
133
116
18
131
133
87
18
29.0
131
18
hsl
1
12
1
9.5
3.1
18
4
10.1
2
1.0
4.4
2
hwb
101
101
96
87
15
101
96
70
15
19.0
101
15
lab
111
111
113
97
15
111
113
75
15
22.0
111
15
lch
111
111
113
97
15
111
113
75
15
22.0
111
15
light-dark
123
123
120
109
17.5
123
120
82
17.5
27.0
123
17.5
named-color
1
12
1
3.5
1
18
4
10.1
1
1.0
4.4
1
oklab
111
111
113
97
15.4
111
113
75
15.4
22.0
111
15.4
oklch
111
111
113
97
15.4
111
113
75
15.4
22.0
111
15.4
rgb
1
12
1
3.5
1
18
4
10.1
1
1.0
4.4
1
rgb_hexadecimal_notation
1
12
1
3.5
1
18
4
10.1
1
1.0
4.4
1
system-color
1
12
1
3.5
1
18
4
10.1
1
1.0
4.4
1
transparent
1
12
1
3.5
1
18
4
10.1
1
1.0
4.4
1

См. также

  • opacity: свойство, задающее прозрачность на уровне элемента
  • <hue>: тип данных, представляющий угол оттенка цвета
  • color, background-color, border-color, box-shadow, outline-color, text-shadow: распространённые свойства, использующие <color>
  • функция color()
  • Применение цвета к HTML-элементам с помощью CSS
  • Использование относительных цветов
  • Новые функции, градиенты и оттенки в цветах CSS (уровень 4) в блоге MDN (2023)

© 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

Spec-Zone.ru

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