<цвет>
Тип данных <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>, с параметрами в пространстве цветов с использованием функционального обозначения: - Используя синтаксис относительных цветов для вывода нового цвета на основе существующего цвета. Любая из перечисленных выше функций цвета может принять исходный цвет, предшествуемый ключевым словом
fromи последующими определениями значений каналов для нового результирующего цвета. - Смешивая два цвета:
color-mix(). - Выбирая цвет на основе соотношений контрастности:
color-contrast(). - Указав два цвета, используя первый для светлых цветовых схем и второй для тёмных цветовых схем:
light-dark().
currentcolor ключевое слово
Ключевое слово currentcolor представляет значение свойства color элемента. Это позволяет использовать значение color для свойств, которые его по умолчанию не получают.
Если currentcolor используется в качестве значения свойства color, оно вместо этого получает своё значение от унаследованного значения свойства color.
<div style="color: blue; border: 1px dashed currentcolor;"> The color of this text is blue. <div style="background: currentcolor; height:9px;"></div> This block is surrounded by a blue border. </div>
Отсутствующие компоненты цвета
Каждый компонент любой функции 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)
Процедура предобработки:
-
Замените отсутствующие компоненты в обоих цветах нулевыми значениями:
lch(80% 30 0) color(display-p3 0.7 0.5 0)
-
Преобразуйте оба цвета в пространство интерполяции:
oklch(83.915% 0.0902 0.28) oklch(63.612% 0.1522 78.748)
-
Если какой-либо компонент преобразованных цветов аналогичен отсутствующему компоненту в соответствующем исходном цвете, сбросьте его как отсутствующий компонент:
oklch(83.915% 0.0902 none) oklch(63.612% 0.1522 78.748)
-
Замените любые отсутствующие компоненты тем же компонентом из другого преобразованного цвета:
oklch(83.915% 0.0902 78.748) oklch(63.612% 0.1522 78.748)
Доступность
Некоторые люди испытывают трудности с различением цветов. Рекомендация WCAG 2.2 настоятельно рекомендует избегать использования цвета в качестве единственного способа передачи определённого сообщения, действия или результата. Подробнее см. цвет и контраст цветов.
Формальный синтаксис
<color> =
<color-base> |
currentColor |
<system-color>
<color-base> =
<hex-color> |
<color-function> |
<named-color> |
transparent
<color-function> =
<rgb()> |
<rgba()> |
<hsl()> |
<hsla()> |
<hwb()> |
<lab()> |
<lch()> |
<oklab()> |
<oklch()> |
<color()>
<rgb()> =
<legacy-rgb-syntax> |
<modern-rgb-syntax>
<rgba()> =
<legacy-rgba-syntax> |
<modern-rgba-syntax>
<hsl()> =
<legacy-hsl-syntax> |
<modern-hsl-syntax>
<hsla()> =
<legacy-hsla-syntax> |
<modern-hsla-syntax>
<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 ] ]? )
<legacy-rgb-syntax> =
rgb( <percentage>#{3} , <alpha-value>? ) |
rgb( <number>#{3} , <alpha-value>? )
<modern-rgb-syntax> =
rgb( [ <number> | <percentage> | none ]{3} [ / [ <alpha-value> | none ] ]? )
<legacy-rgba-syntax> =
rgba( <percentage>#{3} , <alpha-value>? ) |
rgba( <number>#{3} , <alpha-value>? )
<modern-rgba-syntax> =
rgba( [ <number> | <percentage> | none ]{3} [ / [ <alpha-value> | none ] ]? )
<legacy-hsl-syntax> =
hsl( <hue> , <percentage> , <percentage> , <alpha-value>? )
<modern-hsl-syntax> =
hsl( [ <hue> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )
<legacy-hsla-syntax> =
hsla( <hue> , <percentage> , <percentage> , <alpha-value>? )
<modern-hsla-syntax> =
hsla( [ <hue> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )
<hue> =
<number> |
<angle>
<alpha-value> =
<number> |
<percentage>
<colorspace-params> =
<custom-params> |
<predefined-rgb-params> |
<predefined-polar-params> |
<predefined-rectangular-params> |
<xyz-params>
<custom-params> =
<dashed-ident> [ <number> | <percentage> | none ]+
<predefined-rgb-params> =
<predefined-rgb> [ <number> | <percentage> | none ]{3}
<predefined-polar-params> =
jzczhz [ <number> | <percentage> | none ]{2} [ <hue> | none ]
<predefined-rectangular-params> =
<predefined-rectangular> [ <number> | <percentage> | none ]{3}
<xyz-params> =
<xyz> [ <number> | <percentage> | none ]{3}
<predefined-rgb> =
srgb |
srgb-linear |
display-p3 |
a98-rgb |
prophoto-rgb |
rec2020 |
rec2100-pq |
rec2100-hlg |
rec2100-linear
<predefined-rectangular> =
jzazbz |
ictcp
<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" />
Результат
Генерация полностью насыщенных цветов sRGB
В этом примере показаны полностью насыщенные цвета 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
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
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
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 Module Level 4 # color-syntax |
Совместимость с браузерами
| Настольные | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
color_value |
1 | 12 | 1 | 3.5 | 1 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 |
color |
111 | 111 | 113 | 97 | 1510.1–15Only supportsdisplay-p3 and srgb predefined color profiles. |
111 | 113 | 75 | 1510.3–15Only supportsdisplay-p3 and srgb predefined color profiles. |
22.0 | 111 |
color-contrast |
Нет | Нет | Нет | Нет | 15 | Нет | Нет | Нет | 15 | Нет | Нет |
color-mix |
111 | 111 | 113 | 97 | 16.2 | 111 | 113 | 75 | 16.2 | 22.0 | 111 |
currentcolor |
1 | 12 | 1.5 | 9.5 | 4 | 18 | 4 | 14 | 3.2 | 1.0 | 37 |
hsl |
1 | 12 | 1 | 9.5 | 3.1 | 18 | 4 | 10.1 | 2 | 1.0 | ≤37 |
hwb |
101 | 101 | 96 | 87 | 15 | 101 | 96 | 70 | 15 | 19.0 | 101 |
lab |
111 | 111 | 113 | 97 | 15 | 111 | 113 | 75 | 15 | 22.0 | 111 |
lch |
111 | 111 | 113 | 97 | 15 | 111 | 113 | 75 | 15 | 22.0 | 111 |
light-dark |
123 | 123 | 120 | 109 | 17.5 | 123 | 120 | 82 | 17.5 | 27.0 | 123 |
named-color |
1 | 12 | 1 | 3.5 | 1 | 18 | 4 | 10.1 | 1 | 1.0 | ≤37 |
oklab |
111 | 111 | 113 | 97 | 15.4 | 111 | 113 | 75 | 15.4 | 22.0 | 111 |
oklch |
111 | 111 | 113 | 97 | 15.4 | 111 | 113 | 75 | 15.4 | 22.0 | 111 |
rgb |
1 | 12 | 1 | 3.5 | 1 | 18 | 4 | 10.1 | 1 | 1.0 | ≤37 |
rgb_hexadecimal_notation |
1 | 12 | 1 | 3.5 | 1 | 18 | 4 | 10.1 | 1 | 1.0 | ≤37 |
system-color |
1 | 12 | 1 | 3.5 | 1 | 18 | 4 | 10.1 | 1 | 1.0 | ≤37 |
См. также
-
opacity: свойство, определяющее прозрачность на уровне элемента -
<hue>: тип данных, представляющий угол оттенка цвета -
color,background-color,border-color,box-shadow,outline-color,text-shadow: общие свойства, использующие<color> - Применение цвета к элементам HTML с помощью CSS
- Использование относительных цветов
- Новые функции, градиенты и оттенки в цветах CSS (уровень 4) в блоге MDN (2023)
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/color_value