rgb()
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since January 2020.
* Some parts of this feature may have varying levels of support.
Hinweis:
Die rgba()
Funktionsnotation ist ein Alias für rgb()
. Sie sind genau gleichwertig. Es wird empfohlen, rgb()
zu verwenden.
Die rgb()
Funktionsnotation drückt eine Farbe im sRGB Farbraum entsprechend ihrer Rot-, Grün- und Blaukomponenten aus. Eine optionale Alphakomponente repräsentiert die Transparenz der Farbe.
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
/* Absolute values */
rgb(255 255 255)
rgb(255 255 255 / 50%)
/* Relative values */
rgb(from green r g b / 0.5)
rgb(from #0000FF 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 Wert des Alphakanals genau 1 ist, und ansonsten als rgba()
Farben. In beiden Fällen wird die alte Syntax verwendet, mit Kommata als Trennzeichen (zum Beispiel rgb(255, 0, 0)
).
Werte
Im Folgenden finden Sie Beschreibungen der zulässigen Werte für sowohl absolute als auch relative Farben.
Absolute Wertsyntax
rgb(R G B[ / A])
Die Parameter sind wie folgt:
R
,G
,B
-
Jeder Wert kann als
<number>
zwischen0
und255
, als<percentage>
zwischen0%
und100%
oder als das Schlüsselwortnone
(entspricht in diesem Fall0%
) dargestellt werden. Diese Werte repräsentieren die Rot-, Grün- und Blaukanäle. A
Optional-
Ein
<alpha-value>
Wert, der den Alphakanalwert der Farbe darstellt, wobei die Zahl0
0%
(vollständig transparent) und1
100%
(vollständig deckend) entspricht. Zusätzlich kann das Schlüsselwortnone
verwendet werden, um explizit keinen Alphakanal anzugeben. Wenn der KanalwertA
nicht explizit angegeben wird, ist der Standardwert 100%. Falls enthalten, geht dem Wert ein Schrägstrich (/
) voraus.
Hinweis:
Siehe Fehlende Farbkomponenten für weitere Informationen über die Wirkung von none
.
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 ursprüngliche Farbe, 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 ein
<number>
zwischen0
und255
, als ein<percentage>
zwischen0%
und100%
oder als das Schlüsselwortnone
(entsprechend0%
in diesem Fall) dargestellt werden. Diese Werte stellen die Rot-, Grün- und Blaukanalwerte der Ausgabefarbe dar. A
Optional-
Ein
<alpha-value>
Wert, der den Alphakanalwert der Ausgabefarbe darstellt, wobei die Zahl0
0%
(vollständig transparent) und1
100%
(vollständig deckend) entspricht. Zusätzlich kann das Schlüsselwortnone
verwendet werden, um explizit keinen Alphakanal anzugeben. Wenn der KanalwertA
nicht explizit angegeben wird, entspricht er dem Alphakanalwert der Ursprungsfarbe. Falls enthalten, geht dem Wert ein Schrägstrich (/
) voraus.
Hinweis:
Um sicherzustellen, dass das gesamte Spektrum sichtbarer Farben dargestellt werden kann, wird die Ausgabe von relativen rgb()
Farb-Funktionen zu color(srgb)
serialisiert. Das bedeutet, dass beim Abfragen des Ausgabefarbwertes über die HTMLElement.style
Eigenschaft oder die CSSStyleDeclaration.getPropertyValue()
Methode der Ausgabefarbwert als color(srgb ...)
zurückgegeben wird.
Definition der Ausgangskanalwerte relativer Farben
Beim Verwenden der relativen Farbsyntax in einer rgb()
Funktion konvertiert der Browser die Ursprungsfarbe in eine gleichwertige RGB-Farbe (falls sie nicht bereits so angegeben ist). Die Farbe wird als drei separate Farbkanalwerte definiert — r
(rot), g
(grün) und b
(blau) — sowie einem Alphakanalwert (alpha
). Diese Kanalwerte stehen innerhalb der Funktion zur Verfügung, um bei der Definition der Ausgangsfarbkanalwerte verwendet zu werden:
- Die
r
,g
undb
Werte werden jeweils zu<number>
s zwischen0
und255
aufgelöst. - Der
alpha
Kanal wird zu einem<number>
zwischen0
und1
aufgelöst.
Bei der Definition einer relativen Farbe können die verschiedenen Kanäle der Ausgabefarbe auf verschiedene Arten ausgedrückt werden. Im Folgenden sehen wir uns einige Beispiele zur Verdeutlichung an.
In den ersten beiden Beispielen unten verwenden wir die relative Farbsyntax. Allerdings gibt das erste Beispiel dieselbe Farbe wie die Ursprungsfarbe aus und das zweite erzeugt eine Farbe, die überhaupt nicht auf der Ursprungsfarbe basiert. Sie erzeugen eigentlich keine relativen Farben! Sie würden diese wahrscheinlich nie in einem realen Code verwenden und stattdessen einfach einen absoluten Farbwert verwenden. Wir haben diese Beispiele als Ausgangspunkt für das Lernen über relative rgb()
Syntax aufgenommen.
Beginnen wir mit einer Ursprungsfarbe von hsl(0 100% 50%)
(entspricht rgb(255 0 0)
). Die folgende Funktion gibt dieselbe Farbe wie die Ursprungsfarbe aus — sie verwendet die r
, g
und b
Kanalwerte (255
, 0
und 0
) der Ursprungsfarbe als Ausgangskanalwerte:
rgb(from hsl(0 100% 50%) r g b)
Die Ausgabe dieser Funktion ist das color()
Pendant zu rgb(255 0 0)
: color(srgb 1 0 0)
.
Die nächste Funktion verwendet absolute Werte für die Ausgangskanalwerte und gibt eine völlig andere Farbe aus, die nicht auf der Ursprungsfarbe basiert:
rgb(from hsl(0 100% 50%) 132 132 224)
Im obigen Fall ist die Ausgabefarbe das color()
Äquivalent zu rgb(132 132 224)
: color(srgb 0.517647 0.517647 0.878431)
.
Die folgende Funktion erstellt eine relative Farbe basierend auf der Ursprungsfarbe:
rgb(from hsl(0 100% 50%) r 80 80)
Dieses Beispiel:
- Konvertiert die Ursprungsfarbe (
hsl(0 100% 50%)
) in einrgb()
Äquivalent (rgb(255 0 0)
). - Setzt den
R
Kanalwert für die Ausgabefarbe auf denR
Kanalwert des Ursprungsfarb-rgb()
-Äquivalents —255
. - Setzt die
G
undB
Kanalwerte der Ausgabefarbe auf neue Werte, die nicht auf der Ursprungsfarbe basieren:80
und80
beziehungsweise.
Die endgültige Ausgabefarbe ist das Äquivalent zu 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 konvertiert, sodass sie auf eine Weise dargestellt werden kann, die kompatibel ist (d.h. dieselben Kanäle verwendet).
In den Beispielen, die wir in diesem Abschnitt bisher gesehen haben, sind die Alphakanäle weder für die Ursprungs- noch für die Ausgabefarben explizit angegeben. Wenn der Alphakanal der Ausgabefarbe nicht angegeben ist, entspricht er dem gleichen Wert wie der Alphakanal der Ursprungsfarbe. Wenn der Alphakanal der Ursprungsfarbe nicht angegeben ist (und es sich nicht um eine relative Farbe handelt), ist der Standardwert 1
. Daher haben der Ursprungs- und der Ausgangs-Alphakanal in den obigen Beispielen den Wert 1
.
Schauen wir uns einige Beispiele an, die Ursprungs- und Ausgabefarb-Alphakanalwerte spezifizieren. Das erste Beispiel spezifiziert den Ausgabefarb-Alphakanalwert als den gleichen wie den Ursprungs-Alphakanalwert, während das zweite ein anderes Ausgabefarb-Alphakanalwert spezifiziert, der nicht mit dem Ursprungs-Alphakanalwert zusammenhängt.
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 — rgb(255 0 0)
— konvertiert. calc()
Berechnungen werden auf die R
, G
, B
und A
Werte angewendet. Nach der Berechnung sind die R, G, B und A Werte 127.5
, 25
, 175
, und 0.9
. Die endgültige Ausgabefarbe ist das Äquivalent zu rgb(127.5 25 175 / 0.9)
im sRGB Farbraum: color(srgb 0.5 0.0980392 0.686275 / 0.9)
.
rgb(from hsl(0 100% 50%) calc(r/2) calc(g + 25) calc(b + 175) / calc(alpha - 0.1))
Hinweis:
Da die Ursprungsfarb-Kanalwerte zu <number>
Werten aufgelöst werden, müssen Sie ihnen 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. Das Addieren eines <percentage>
zu einem <number>
, funktioniert zum Beispiel nicht.
Formale Syntax
Beispiele
Grundsyntax
In diesem Beispiel haben wir drei <div>
Elemente mit unterschiedlichen Hintergrundfarben, die über einem gestreiften Hintergrund angezeigt werden.
HTML
<div>
<div id="integer"></div>
<div id="percent"></div>
<div id="alpha"></div>
</div>
CSS
Die Hintergrundfarben werden mit der rgb()
Farb-Funktion gesetzt. Die drei Farben sind dieselben. Die dritte ist halbtransparent, deshalb haben wir dem <body>
einen repeating-linear-gradient()
hinzugefügt, um die Transparenz der Alphakanäle besser zu demonstrieren.
body {
background: repeating-linear-gradient(-45deg, #eee 0 2px, #fff 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 Element erhält die unveränderte --base-color
, während die mittlere und rechte Varianten dieser --base-color
erhalten, die sukzessive mehr aus dem roten Kanal entfernen und mehr zum blauen Kanal hinzufügen.
Diese Varianten werden unter Verwendung relativer Farben definiert — die --base-color
benutzerdefinierte Eigenschaft wird an eine rgb()
Funktion übergeben, und die Ausgabefarbe hat ihre roten und blauen Kanäle modifiziert, um den gewünschten Effekt über calc()
Funktionen zu erreichen, während der grüne Kanal unverändert bleibt.
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: kommagetrennte Werte
Aus alten Gründen akzeptiert die rgb()
Funktion eine Form, in der alle Werte mit Kommata getrennt sind.
HTML
<div class="space-separated"></div>
<div class="comma-separated"></div>
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
- Der
<color>
Datentyp für eine Liste aller Farbnotationen - sRGB Farbwähler und Konvertierungswerkzeug
- Verwendung relativer Farben
- CSS-Farben-Modul