<color>
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
* Some parts of this feature may have varying levels of support.
Der <color>
CSS Datentyp repräsentiert eine Farbe. Ein <color>
kann auch einen Alpha-Kanal Transparenzwert enthalten, der angibt, wie die Farbe mit ihrem Hintergrund komponiert werden soll.
Hinweis:
Obwohl <color>
-Werte genau definiert sind, kann ihr tatsächliches Aussehen von Gerät zu Gerät variieren (manchmal erheblich). Dies liegt daran, dass die meisten Geräte nicht kalibriert sind und einige Browser die Farbprofile der Ausgabegeräte nicht unterstützen.
Syntax
/* 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))
Ein <color>
-Wert kann mit einer der folgenden Methoden spezifiziert werden:
- Durch Schlüsselwörter:
<named-color>
(wieblue
oderpink
),<system-color>
, undcurrentColor
. - Durch hexadezimale Notationen:
<hex-color>
(wie#ff0000
). - Durch
<color-function>
, mit Parametern in einem Farbraum unter Verwendung funktionaler Notationen: - Durch die Verwendung der relativen Farbsyntax, um eine neue Farbe basierend auf einer vorhandenen Farbe auszugeben. Jede der oben genannten Farbfunktionen kann eine Ursprungsfarbe vor dem
from
-Schlüsselwort und gefolgt von Definitionen der Kanalwerte für die neue Ausgabefarbe annehmen. - Durch das Mischen zweier Farben:
color-mix()
. - Durch Spezifizieren einer Farbe, für die eine kontrastreiche Farbe zurückgegeben werden soll:
contrast-color()
. - Durch das Festlegen zweier Farben, wobei die erste für helle und die zweite für dunkle Farbschemata verwendet wird:
light-dark()
.
currentColor
Schlüsselwort
Das Schlüsselwort currentColor
repräsentiert den Wert der color
Eigenschaft eines Elements. Dadurch können Sie den color
-Wert auf Eigenschaften anwenden, die ihn standardmäßig nicht erhalten.
Wenn currentColor
als Wert der color
-Eigenschaft verwendet wird, übernimmt es stattdessen den vererbten Wert der color
-Eigenschaft.
<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;
}
Fehlende Farbkomponenten
Jede Komponente einer CSS-Farbfunktion - außer denen mit der veralteten komma-separierten Syntax - kann als das Schlüsselwort none
angegeben werden, um eine fehlende Komponente darzustellen.
Das explizite Angeben von fehlenden Komponenten bei der Farbinterpolation ist nützlich in Fällen, in denen Sie einige Farbkomponenten interpolieren möchten, andere jedoch nicht. Für alle anderen Zwecke wird eine fehlende Komponente effektiv einen Nullwert in einer angemessenen Einheit haben: 0
, 0%
oder 0deg
. Zum Beispiel sind die folgenden Farben äquivalent, wenn sie außerhalb der Interpolation verwendet werden:
/* 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%);
Interpolation
Farbinterpolation erfolgt bei Verläufen, Übergängen und Animationen.
Beim Interpolieren von <color>
-Werten werden diese zuerst in einen bestimmten Farbraum konvertiert, und jede Komponente der berechneten Werte wird linear interpoliert. Die Geschwindigkeit der Interpolation wird durch die Easing-Funktion in Übergängen und Animationen bestimmt. Der Standard-Interpolationsfarbraum ist Oklab, kann jedoch in einigen farbbezogenen Funktionsnotationen durch <color-interpolation-method>
überschrieben werden.
Interpolation mit fehlenden Komponenten
Farben im gleichen Raum interpolieren
Beim Interpolieren von Farben, die sich genau im Interpolationsfarbraum befinden, werden fehlende Komponenten einer Farbe durch vorhandene Werte derselben Komponenten der anderen Farbe ersetzt. Zum Beispiel sind folgende zwei Ausdrücke äquivalent:
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))
Hinweis: Wenn eine Komponente in beiden Farben fehlt, wird diese Komponente nach der Interpolation fehlen.
Farben aus verschiedenen Räumen interpolieren: analoge Komponenten
Wenn eine zu interpolierende Farbe nicht im Interpolationsfarbraum liegt, werden ihre fehlenden Komponenten in die konvertierte Farbe basierend auf analogen Komponenten derselben Kategorie übertragen, wie in der folgenden Tabelle beschrieben:
Kategorie | Analoge Komponenten |
---|---|
Rot | R , X |
Grün | G , Y |
Blau | B , Z |
Helligkeit | L |
Farbigkeit | C , S |
Farbton | H |
a | a |
b | b |
Zum Beispiel:
X
(0.2
) incolor(xyz 0.2 0.1 0.6)
ist analog zuR
(50%
) inrgb(50% 70% 30%)
.H
(0deg
) inhsl(0deg 100% 80%)
ist analog zuH
(140
) inoklch(80% 0.1 140)
.
Bei der Verwendung von OkLCh als Interpolationsfarbraum und den beiden Farben unten als Beispiel:
lch(80% 30 none)
color(display-p3 0.7 0.5 none)
Das Vorverarbeitungsverfahren ist:
-
Ersetzen Sie die fehlenden Komponenten in beiden Farben durch einen Nullwert:
csslch(80% 30 0) color(display-p3 0.7 0.5 0)
-
Konvertieren Sie beide Farben in den Interpolationsfarbraum:
cssoklch(83.915% 0.0902 0.28) oklch(63.612% 0.1522 78.748)
-
Falls eine Komponente der konvertierten Farben einer fehlenden Komponente in der entsprechenden Originalfarbe analog ist, setzen Sie diese wieder als fehlende Komponente:
cssoklch(83.915% 0.0902 none) oklch(63.612% 0.1522 78.748)
-
Ersetzen Sie jede fehlende Komponente durch dieselbe Komponente aus der anderen konvertierten Farbe:
cssoklch(83.915% 0.0902 78.748) oklch(63.612% 0.1522 78.748)
Barrierefreiheit
Einige Menschen haben Schwierigkeiten, Farben zu unterscheiden. Die WCAG 2.2-Empfehlung rät dringend davon ab, Farbe als einziges Mittel zur Vermittlung einer spezifischen Nachricht, Handlung oder eines Ergebnisses zu verwenden. Weitere Informationen finden Sie unter Farbe und Farbkontrast.
Formale Syntax
<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()> |
<ictcp()> |
<jzazbz()> |
<jzczhz()> |
<alpha()> |
<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 ] ]? )
<ictcp()> =
ictcp( [ from <color> ]? [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )
<jzazbz()> =
jzazbz( [ from <color> ]? [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ / [ <alpha-value> | none ] ]? )
<jzczhz()> =
jzczhz( [ from <color> ]? [ <percentage> | <number> | none ] [ <percentage> | <number> | none ] [ <hue> | none ] [ / [ <alpha-value> | none ] ]? )
<alpha()> =
alpha( [ from <color> ] [ / [ <alpha-value> | none ] ]? )
<color()> =
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> =
<predefined-rgb-params> |
<xyz-params>
<predefined-rgb-params> =
<predefined-rgb> [ <number> | <percentage> | none ]{3}
<xyz-params> =
<xyz-space> [ <number> | <percentage> | none ]{3}
<predefined-rgb> =
srgb |
srgb-linear |
display-p3 |
display-p3-linear |
a98-rgb |
prophoto-rgb |
rec2020 |
rec2100-pq |
rec2100-hlg |
rec2100-linear
<xyz-space> =
xyz |
xyz-d50 |
xyz-d65
Beispiele
>Erkunden von Farbwerten
In diesem Beispiel stellen wir ein <div>
und ein Texteingabefeld bereit. Wenn Sie eine gültige Farbe in das Eingabefeld eingeben, nimmt das <div>
diese Farbe an, sodass Sie unsere Farbwerte testen können.
HTML
<div></div>
<hr />
<label for="color">Enter a valid color value:</label>
<input type="text" id="color" />
Ergebnis
Erzeugen vollständig gesättigter sRGB-Farben
Dieses Beispiel zeigt vollständig gesättigte sRGB-Farben im sRGB-Farbraum.
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%);
}
Ergebnis
Erstellen verschiedener Rottöne
Dieses Beispiel zeigt Rottöne verschiedener Schattierungen im sRGB-Farbraum.
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;
}
Ergebnis
Erstellen von Rot mit unterschiedlicher Sättigung
Dieses Beispiel zeigt Rot mit unterschiedlichen Sättigungen im sRGB-Farbraum.
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%);
}
Ergebnis
Spezifikationen
Specification |
---|
CSS Color Module Level 4> # color-syntax> |
Browser-Kompatibilität
Loading…
Siehe auch
opacity
: Die Eigenschaft, die die Transparenz auf Elementebene definiert<hue>
: Der Datentyp, der den Farbtonwinkel einer Farbe darstelltcolor
,background-color
,border-color
,box-shadow
,outline-color
,text-shadow
: Häufige Eigenschaften, die<color>
verwendencolor()
Funktion- Farben auf HTML-Elemente mit CSS anwenden
- Verwendung relativer Farben
- Neue Funktionen, Verläufe und Farbtöne in CSS-Farben (Stufe 4) im MDN-Blog (2023)