Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

rgb()

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.

Hinweis: Die rgba() Funktionsnotation ist ein Alias für rgb(). Sie sind genau identisch. Es wird empfohlen, rgb() zu verwenden.

Die rgb() Funktionsnotation drückt eine Farbe im sRGB Farbraum entsprechend ihrer roten, grünen und blauen Komponenten aus. Eine optionale Alpha-Komponente stellt die Transparenz der Farbe dar.

Probieren Sie es aus

background: rgb(31 120 50);
background: rgb(30% 20% 50%);
background: rgb(255 122 127 / 80%);
background: rgb(255 122 127 / 0.2);
<section id="default-example">
  <div class="transition-all" id="example-element"></div>
</section>
#example-element {
  min-width: 100%;
  min-height: 100%;
  padding: 10%;
}

Syntax

css
/* Absolute values */
rgb(255 255 255)
rgb(255 255 255 / 50%)

/* Relative values */
rgb(from green r g b / 0.5)
rgb(from #123456 calc(r + 40) calc(g + 40) b)
rgb(from hwb(120deg 10% 20%) r g calc(b + 200))

/* Legacy 'rgba()' alias */
rgba(0 255 255)

/* Legacy format */
rgb(0, 255, 255)
rgb(0, 255, 255, 50%)

Hinweis: Aus Kompatibilitätsgründen werden Web-API-serialisierte Farbwerte als rgb()-Farben ausgedrückt, wenn der Alpha-Kanal-Wert genau 1 ist, und als rgba()-Farben andernfalls. In beiden Fällen wird die alte Syntax verwendet, mit Kommas als Trennzeichen (zum Beispiel rgb(255, 0, 0)).

Werte

Nachfolgend sind die Beschreibungen der zulässigen Werte für sowohl absolute als auch relative Farben aufgeführt.

Absolute Wertsyntax

rgb(R G B[ / A])

Die Parameter sind wie folgt:

R, G, B

Jeder Wert kann als <number> zwischen 0 und 255, als <percentage> zwischen 0% und 100% oder als Schlüsselwort none (in diesem Fall gleichbedeutend mit 0%) dargestellt werden. Diese Werte repräsentieren die roten, grünen und blauen Kanäle.

A Optional

Ein <alpha-value>, das den Alpha-Kanal-Wert der Farbe repräsentiert, wobei die Zahl 0 0% (vollständig transparent) und 1 100% (vollständig undurchsichtig) entspricht. Außerdem kann das Schlüsselwort none verwendet werden, um explizit kein Alpha-Kanal anzugeben. Wenn der A-Kanalwert nicht explizit angegeben ist, wird er standardmäßig auf 100% gesetzt. Falls enthalten, wird der Wert durch einen Schrägstrich (/) angeführt.

Hinweis: Weitere Informationen zu den Auswirkungen von none finden Sie unter Fehlende Farbkomponenten.

Relative Wertsyntax

rgb(from <color> R G B[ / A])

Die Parameter sind wie folgt:

from <color>

Das Schlüsselwort from ist immer enthalten, wenn eine relative Farbe definiert wird, gefolgt von einem <color>-Wert, der die Ursprungsfarbe darstellt: Dies ist die Originalfarbe, auf der die relative Farbe basiert. Die Ursprungsfarbe kann jede gültige <color>-Syntax sein, einschließlich einer anderen relativen Farbe.

R, G, B

Jeder Wert kann als <number> zwischen 0 und 255, als <percentage> zwischen 0% und 100% oder als Schlüsselwort none (in diesem Fall gleichbedeutend mit 0%) dargestellt werden. Diese Werte repräsentieren die roten, grünen und blauen Kanalwerte der Ausgabefarbe.

A Optional

Ein <alpha-value>, das den Alpha-Kanal-Wert der Ausgabefarbe repräsentiert, wobei die Zahl 0 0% (vollständig transparent) und 1 100% (vollständig undurchsichtig) entspricht. Außerdem kann das Schlüsselwort none verwendet werden, um explizit keinen Alpha-Kanal anzugeben. Wenn der A-Kanalwert nicht explizit angegeben ist, wird er standardmäßig auf den Alpha-Kanalwert der Ursprungsfarbe gesetzt. Falls enthalten, wird der Wert durch einen Schrägstrich (/) angeführt.

Hinweis: Um die vollständige Darstellung des sichtbaren Farbspektrums zu ermöglichen, wird die Ausgabe der relativen rgb()-Farbensyntax als color(srgb) serialisiert. Das bedeutet, dass beim Abfragen des Ausgabefarbwerts über die HTMLElement.style-Eigenschaft oder die CSSStyleDeclaration.getPropertyValue()-Methode der Ausgabefarbwert als color(srgb ...)-Wert zurückgegeben wird.

Definieren der Kanalkomponenten der relativen Farbenausgabe

Beim Verwenden der relativen Farbensyntax innerhalb einer rgb()-Funktion wandelt der Browser die Ursprungsfarbe in eine äquivalente RGB-Farbe um (falls sie nicht bereits als solche angegeben wurde). Die Farbe wird als drei unterschiedliche Farbkanalwerte definiert — r (rot), g (grün) und b (blau) — sowie einem Alpha-Kanal-Wert (alpha). Diese Kanalwerte stehen innerhalb der Funktion zur Verfügung, um zur Definition der Kanalausgabewerte verwendet zu werden:

  • Die r-, g- und b-Werte werden jeweils zu <number>-Werten zwischen 0 und 255 aufgelöst.
  • Der alpha-Kanal wird zu einem <number> zwischen 0 und 1 aufgelöst.

Beim Definieren einer relativen Farbe können die verschiedenen Kanäle der Ausgabefarbe auf mehrere verschiedene Weisen ausgedrückt werden. Im Folgenden werden wir einige Beispiele studieren, um diese zu veranschaulichen.

In den ersten beiden Beispielen verwenden wir die relative Farbsyntax. Allerdings gibt das erste Beispiel die gleiche Farbe wie die Ursprungsfarbe aus, und das zweite Beispiel gibt eine Farbe aus, die überhaupt nicht auf der Ursprungsfarbe basiert. Tatsächlich erstellen sie keine relativen Farben! Sie würden diese wahrscheinlich in einem echten Codebasis nie verwenden und stattdessen nur einen absoluten Farbwert verwenden. Wir haben diese Beispiele als Ausgangspunkt zum Erlernen der relativen rgb()-Syntax aufgenommen.

Beginnen wir mit einer Ursprungsfarbe von hsl(0 100% 50%) (äquivalent zu rgb(255 0 0)). Die folgende Funktion gibt die gleiche Farbe wie die Ursprungsfarbe aus — sie verwendet die r-, g- und b-Kanalwerte der Ursprungsfarbe (255, 0 und 0) als die Ausgabekanäle:

css
rgb(from hsl(0 100% 50%) r g b)

Die Ausgabe dieser Funktion ist das sRGB-Äquivalent von color() rgb(255 0 0): color(srgb 1 0 0).

Die nächste Funktion verwendet absolute Werte für die Ausgabekanäle und gibt eine vollständig andere Farbe aus, die nicht auf der Ursprungsfarbe basiert:

css
rgb(from hsl(0 100% 50%) 132 132 224)

In diesem Fall ist die Ausgabefarbe das sRGB-Äquivalent von rgb(132 132 224): color(srgb 0.517647 0.517647 0.878431).

Die folgende Funktion erstellt eine relative Farbe basierend auf der Ursprungsfarbe:

css
rgb(from hsl(0 100% 50%) r 80 80)

Dieses Beispiel:

  • Wandelt die Ursprungsfarbe (hsl(0 100% 50%)) in ein äquivalentes rgb() um (rgb(255 0 0)).
  • Setzt den R-Kanalwert für die Ausgabefarbe auf den R-Kanalwert des rgb()-Äquivalents der Ursprungsfarbe — 255.
  • Setzt die G- und B-Kanalwerte der Ausgabefarbe auf neue Werte, die nicht auf der Ursprungsfarbe basieren: Jeweils 80 und 80.

Die finale Ausgabefarbe ist das Äquivalent von rgb(255 80 80) im sRGB-Farbraum — color(srgb 1 0.313726 0.313726).

Hinweis: Wie oben erwähnt, wenn die Ausgabefarbe ein anderes Farbmodell als die Ursprungsfarbe verwendet, wird die Ursprungsfarbe im Hintergrund in dasselbe Modell oder denselben Raum wie die Ausgabefarbe umgewandelt, sodass sie in einer Weise dargestellt werden kann, die kompatibel ist (d.h. mit denselben Kanälen).

In den Beispielen, die wir in diesem Abschnitt bisher gesehen haben, wurden die Alpha-Kanäle weder für die Ursprungsfarbe noch für die Ausgabefarbe explizit angegeben. Wenn der Alpha-Kanal der Ausgabefarbe nicht angegeben ist, wird er standardmäßig auf denselben Wert wie der Alpha-Kanal der Ursprungsfarbe gesetzt. Wenn der Alpha-Kanal der Ursprungsfarbe nicht angegeben ist (und es sich nicht um eine relative Farbe handelt), wird er standardmäßig auf 1 gesetzt. In den obigen Beispielen sind also die Alpha-Kanal-Werte der Ursprungs- und Ausgabefarbe 1.

Lassen Sie uns einige Beispiele betrachten, die die Alpha-Kanal-Werte der Ursprungs- und Ausgabefarbe angeben. Das erste Beispiel gibt den gleichen Alpha-Kanal-Wert für die Ausgabefarbe an wie für die Ursprungsfarbe, während das zweite einen anderen Alpha-Kanal-Wert für die Ausgabefarbe angibt, ohne Bezug auf den Alpha-Kanal der Ursprungsfarbe.

css
rgb(from hsl(0 100% 50% / 0.8) r g b / alpha)
/* Computed output color: color(srgb 1 0 0 / 0.8) */

rgb(from hsl(0 100% 50% / 0.8) r g b / 0.5)
/* Computed output color: color(srgb 1 0 0 / 0.5) */

Im folgenden Beispiel wird die hsl()-Ursprungsfarbe erneut in eine rgb()-Darstellung umgewandelt — rgb(255 0 0). calc()-Berechnungen werden auf die R, G, B und A-Werte angewendet. Nach den Berechnungen sind die R-, G-, B- und A-Werte 127.5, 25, 175 bzw. 0.9. Die finale Ausgabefarbe ist das Äquivalent von rgb(127.5 25 175 / 0.9) im sRGB-Farbraum: color(srgb 0.5 0.0980392 0.686275 / 0.9).

css
rgb(from hsl(0 100% 50%) calc(r/2) calc(g + 25) calc(b + 175) / calc(alpha - 0.1))

Hinweis: Da die Kanalwerte der Ursprungsfarbe zu <number>-Werten aufgelöst werden, müssen Sie Zahlen hinzufügen, wenn Sie sie in Berechnungen verwenden, auch in Fällen, in denen ein Kanal normalerweise <percentage>, <angle> oder andere Werttypen akzeptieren würde. Zum Beispiel funktioniert es nicht, ein <percentage> zu einem <number> hinzuzufügen.

Formale Syntax

<rgb()> = 
<legacy-rgb-syntax> |
<modern-rgb-syntax>

<legacy-rgb-syntax> =
rgb( <percentage>#{3} , <alpha-value>? ) |
rgb( <number>#{3} , <alpha-value>? )

<modern-rgb-syntax> =
rgb( [ from <color> ]? [ <number> | <percentage> | none ]{3} [ / [ <alpha-value> | none ] ]? )

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

Beispiele

Grundsyntax

In diesem Beispiel haben wir drei <div>-Elemente mit unterschiedlichen Hintergrundfarben, die über einem gestreiften Hintergrund angezeigt werden.

HTML

html
<div>
  <div id="integer"></div>
  <div id="percent"></div>
  <div id="alpha"></div>
</div>

CSS

Die Hintergrundfarben werden mit der rgb()-Farbfunktion gesetzt. Die drei Farben sind gleich. Die dritte ist halbtransparent, daher haben wir einen repeating-linear-gradient() auf dem <body> hinzugefügt, um die Transparenz von Alpha-Kanälen besser zu demonstrieren.

css
body {
  background: repeating-linear-gradient(-45deg, #eeeeee 0 2px, white 2px 6px);
  padding: 10px;
}

#integer {
  background-color: rgb(189 85 218);
}

#percent {
  background-color: rgb(74% 33% 85%);
}

#alpha {
  background-color: rgb(189 85 218 / 0.25);
}

Ergebnis

Verwendung relativer Farben mit rgb()

Dieses Beispiel gestaltet drei <div>-Elemente mit unterschiedlichen Hintergrundfarben. Das linke erhält die unveränderte --base-color, während die mittleren und rechten Varianten dieser --base-color erhalten, bei denen sukzessive mehr aus dem roten Kanal entfernt und mehr zum blauen Kanal hinzugefügt wird.

Diese Varianten werden unter Verwendung von relativen Farben definiert — die benutzerdefinierte Eigenschaft --base-color wird in eine rgb()-Funktion eingefügt, und die Ausgabefarbe hat ihren roten und blauen Kanal über calc()-Funktionen modifiziert, während der grüne Kanal unverändert bleibt.

CSS

css
:root {
  --base-color: orange;
  /* equal to rgb(255 165 0) */
}

#one {
  background-color: var(--base-color);
}

#two {
  background-color: rgb(from var(--base-color) calc(r - 76.5) g calc(b + 76.5));
  /* 76.5 is 30% of 255 */
}

#three {
  background-color: rgb(from var(--base-color) calc(r - 153) g calc(b + 153));
  /* 153 is 60% of 255 */
}

/* Use @supports to add in support for old syntax that requires r g b values to
   be specified as percentages (with units) in calculations. This is required
   for Safari 16.4+. */
@supports (color: rgb(from red r g calc(b + 30%))) {
  #two {
    background-color: rgb(from var(--base-color) calc(r - 30%) g calc(b + 30%));
  }

  #three {
    background-color: rgb(from var(--base-color) calc(r - 60%) g calc(b + 60%));
  }
}

Ergebnis

Alte Syntax: durch Kommas getrennte Werte

Aus Kompatibilitätsgründen akzeptiert die rgb()-Funktion eine Form, bei der alle Werte durch Kommas getrennt sind.

HTML

html
<div class="space-separated"></div>
<div class="comma-separated"></div>

CSS

css
div {
  width: 100px;
  height: 50px;
  margin: 1rem;
}

div.space-separated {
  background-color: rgb(255 0 0 / 50%);
}

div.comma-separated {
  background-color: rgb(255, 0, 0, 0.5);
}

Ergebnis

Spezifikationen

Specification
CSS Color Module Level 5
# relative-RGB
CSS Color Module Level 4
# rgb-functions

Browser-Kompatibilität

Siehe auch