<color>

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 präzise definiert sind, kann ihr tatsächliches Erscheinungsbild 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

css
/* 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 unten aufgeführten Methoden angegeben werden:

  • Durch Schlüsselwörter: <named-color> (wie blue oder pink), <system-color> und currentcolor.
  • Durch hexadezimale Notationen: <hex-color> (wie #ff0000).
  • Durch <color-function>, mit Parametern in einem Farbraum unter Verwendung funktionaler Notationen:
  • Durch Verwendung der relativen Farbsyntax, um basierend auf einer vorhandenen Farbe eine neue Farbe auszugeben. Jede der oben genannten Farbfunktionsmethoden kann eine ursprüngliche Farbe übernehmen, der das Schlüsselwort from vorausgeht und gefolgt wird von Definitionen der Kanalwerte für die neue Ausgangsfarbe.
  • Durch das Mischen zweier Farben: color-mix().
  • Durch Auswahl einer Farbe basierend auf Kontrastverhältnissen: color-contrast().
  • Durch Angabe von zwei Farben, wobei die erste für helle Farbschemata und die zweite für dunkle Farbschemata verwendet wird: light-dark().

currentcolor Schlüsselwort

Das currentcolor-Schlüsselwort 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, nimmt es stattdessen den geerbten Wert der color-Eigenschaft an.

html
<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>

Fehlende Farbkomponenten

Jede Komponente einer beliebigen CSS-Farbfunktion - außer denjenigen, die die veraltete komma-getrennte Syntax verwenden - kann als Schlüsselwort none angegeben werden, um eine fehlende Komponente zu sein.

Das explizite Festlegen von fehlenden Komponenten in der Farbinterpolation ist nützlich für Fälle, in denen Sie einige Farbkomponenten interpolieren, andere jedoch nicht interpolieren möchten. Für alle anderen Zwecke hat eine fehlende Komponente effektiv einen Nullwert in einer geeigneten Einheit: 0, 0% oder 0deg. Zum Beispiel sind die folgenden Farben gleichwertig, wenn sie außerhalb der Interpolation verwendet werden:

css
/* 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 gegebenen Farbraum umgewandelt, und dann wird jede Komponente der berechneten Werte linear interpoliert, wobei die Geschwindigkeit der Interpolation durch die Easing-Funktion in Übergängen und Animationen bestimmt wird. Der Standard-Farbraum für die Interpolation ist Oklab, kann aber in einigen farbbezogenen funktionalen Notationen durch <color-interpolation-method> überschrieben werden.

Interpolation mit fehlenden Komponenten

Interpolation von Farben im selben Raum

Wenn Farben interpoliert werden, die genau im Interpolationsfarbraum liegen, werden fehlende Komponenten einer Farbe durch vorhandene Werte derselben Komponenten der anderen Farbe ersetzt. Zum Beispiel sind die folgenden beiden Ausdrücke gleichwertig:

css
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, fehlt diese Komponente nach der Interpolation.

Interpolation von Farben aus verschiedenen Räumen: analoge Komponenten

Falls eine Farbe, die interpoliert werden soll, nicht im Interpolationsfarbraum liegt, werden ihre fehlenden Komponenten in die konvertierte Farbe auf Basis von analogen Komponenten derselben Kategorie übertragen, wie in der folgenden Tabelle beschrieben:

Kategorie Analoge Komponenten
Rottöne R, X
Grüntöne G, Y
Blautöne B, Z
Helligkeit L
Farbigkeit C, S
Farbton H
a a
b b

Zum Beispiel:

  • X (0.2) in color(xyz 0.2 0.1 0.6) ist analog zu R (50%) in rgb(50% 70% 30%).
  • H (0deg) in hsl(0deg 100% 80%) ist analog zu H (140) in oklch(80% 0.1 140).

Verwenden Sie Oklch als Interpolationsfarbraum und die beiden unten stehenden Farben als Beispiel:

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

Das Vorverarbeitungsverfahren ist:

  1. Ersetzen Sie die fehlenden Komponenten in beiden Farben durch einen Nullwert:

    css
    lch(80% 30 0)
    color(display-p3 0.7 0.5 0)
    
  2. Konvertieren Sie beide Farben in den Interpolationsfarbraum:

    css
    oklch(83.915% 0.0902 0.28)
    oklch(63.612% 0.1522 78.748)
    
  3. Wenn eine Komponente der konvertierten Farben analog zu einer fehlenden Komponente in der entsprechenden ursprünglichen Farbe ist, setzen Sie sie als fehlende Komponente zurück:

    css
    oklch(83.915% 0.0902 none)
    oklch(63.612% 0.1522 78.748)
    
  4. Ersetzen Sie jede fehlende Komponente durch dieselbe Komponente der anderen konvertierten Farbe:

    css
    oklch(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 Übermittlung einer bestimmten Nachricht, Aktion oder Ergebnis zu verwenden. Siehe Farbe und Farbkontrast für weitere Informationen.

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()> |
<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

Beispiele

Erkunden von Farbwerten

In diesem Beispiel bieten wir ein <div> und ein Texteingabefeld an. Wenn Sie eine gültige Farbe in das Eingabefeld eingeben, übernimmt das <div> diese Farbe, sodass Sie unsere Farbwerte testen können.

HTML

html
<div></div>
<hr />
<label for="color">Enter a valid color value:</label>
<input type="text" id="color" />

Ergebnis

Erzeugung vollständig gesättigter sRGB-Farben

Dieses Beispiel zeigt vollständig gesättigte sRGB-Farben im sRGB-Farbraum.

HTML

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

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

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

CSS

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 unterschiedlicher Sättigung im sRGB-Farbraum.

HTML

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

CSS

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

BCD tables only load in the browser

Siehe auch