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 funktionale Notation rgba()
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 aus, basierend auf ihren Rot-, Grün- und Blau-Komponenten. Eine optionale Alpha-Komponente 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 Alpha-Kanalwert 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
Im Folgenden werden die erlaubten Werte sowohl für absolute als auch relative Farben beschrieben.
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 Schlüsselwortnone
(äquivalent zu0%
in diesem Fall) dargestellt werden. Diese Werte repräsentieren die Rot-, Grün- und Blau-Kanäle. A
Optional-
Ein
<alpha-value>
der den Alpha-Kanalwert der Farbe darstellt, wobei die Zahl0
0%
(vollständig transparent) und1
100%
(vollständig opak) entspricht. Zusätzlich kann das Schlüsselwortnone
verwendet werden, um explizit keinen Alpha-Kanal anzugeben. Wenn derA
-Kanalwert nicht explizit angegeben wird, ist der Standardwert 100%. Wenn eingeschlossen, wird der Wert durch einen Schrägstrich (/
) vorangestellt.
Hinweis:
Weitere Informationen über die Wirkung 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
wird immer angegeben, wenn eine relative Farbe definiert wird, gefolgt von einem<color>
Wert, der die Ursprungsfarbe repräsentiert: Dies ist die ursprüngliche Farbe, auf der die relative Farbe basiert. Die Ursprungsfarbe kann jede gültige<color>
Syntax enthalten, einschließlich einer weiteren relativen Farbe. R
,G
,B
-
Jeder Wert kann als
<number>
zwischen0
und255
, als<percentage>
zwischen0%
und100%
oder als Schlüsselwortnone
(äquivalent zu0%
in diesem Fall) dargestellt werden. Diese Werte repräsentieren die Rot-, Grün- und Blau-Kanalwerte der Ausgabefarbe. A
Optional-
Ein
<alpha-value>
, der den Alpha-Kanalwert der Ausgabefarbe darstellt, wobei die Zahl0
0%
(vollständig transparent) und1
100%
(vollständig opak) entspricht. Zusätzlich kann das Schlüsselwortnone
verwendet werden, um explizit keinen Alpha-Kanal anzugeben. Wenn derA
-Kanalwert nicht explizit angegeben wird, ist der Standardwert der Alpha-Kanalwert der Ursprungsfarbe. Wenn eingeschlossen, wird der Wert durch einen Schrägstrich (/
) vorangestellt.
Hinweis:
Um die Darstellung des gesamten sichtbaren Farbspektrums vollständig zu ermöglichen, wird die Ausgabe von relativen rgb()
-Farbfunktionen zu color(srgb)
serialisiert. Das bedeutet, dass bei einer Abfrage des Ausgabefarbwerts über die HTMLElement.style
Eigenschaft oder die CSSStyleDeclaration.getPropertyValue()
Methode der Ausgabewert als color(srgb ...)
zurückgegeben wird.
Definieren der Ausgabekanalkomponenten für relative Farben
Beim Verwenden relativer Farbsyntax innerhalb einer rgb()
-Funktion konvertiert der Browser die Ursprungsfarbe in eine gleichwertige RGB-Farbe (wenn sie nicht bereits als solche spezifiziert ist). Die Farbe wird als drei verschiedene Farbkanalwerte definiert — r
(rot), g
(grün) und b
(blau) — plus ein Alphakanalwert (alpha
). Diese Kanalwerte werden innerhalb der Funktion zur Verfügung gestellt, um bei der Definition der Ausgabefarbkanalwerte verwendet zu werden:
- Die
r
,g
undb
Werte werden jeweils in<number>
-Werte zwischen0
und255
aufgelöst. - Der
alpha
Kanal wird in einen<number>
zwischen0
und1
aufgelöst.
Beim Definieren einer relativen Farbe können die verschiedenen Kanäle der Ausgabefarbe auf mehrere verschiedene Arten ausgedrückt werden. Nachfolgend untersuchen wir einige Beispiele, um diese zu veranschaulichen.
In den ersten beiden Beispielen verwenden wir relative Farbsyntax. Das erste Beispiel gibt jedoch dieselbe Farbe aus wie die Ursprungsfarbe, und das zweite Beispiel gibt eine Farbe aus, die überhaupt nicht auf der Ursprungsfarbe basiert. Sie erzeugen wirklich keine relativen Farben! Es ist unwahrscheinlich, dass Sie diese jemals in einem realen Code verwenden würden, und vermutlich würden Sie stattdessen einfach einen absoluten Farbwert verwenden. Wir haben diese Beispiele als Ausgangspunkt für das Erlernen der relativen 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 der Ursprungsfarbe (255
, 0
und 0
) als Ausgabekanalwerte:
rgb(from hsl(0 100% 50%) r g b)
Die Ausgabe dieser Funktion ist das sRGB color()
-Äquivalent von rgb(255 0 0)
: color(srgb 1 0 0)
.
Die nächste Funktion verwendet absolute Werte für die Ausgabefarbkanalwerte und gibt eine völlig andere Farbe aus, die nicht auf der Ursprungsfarbe basiert:
rgb(from hsl(0 100% 50%) 132 132 224)
In diesem Fall ist die Ausgabefarbe das sRGB color()
-Äquivalent von rgb(132 132 224)
: color(srgb 0.517647 0.517647 0.878431)
.
Die folgende Funktion erstellt eine relative Farbe, die auf der Ursprungsfarbe basiert:
rgb(from hsl(0 100% 50%) r 80 80)
In diesem Beispiel:
- Wird die Ursprungsfarbe (
hsl(0 100% 50%)
) in einrgb()
-Äquivalent (rgb(255 0 0)
) umgewandelt. - Der
R
-Kanalwert für die Ausgabefarbe wird auf denR
-Kanalwert desrgb()
-Äquivalents der Ursprungsfarbe gesetzt —255
. - Die
G
- undB
-Kanalwerte der Ausgabefarbe werden auf neue Werte gesetzt, die nicht auf der Ursprungsfarbe basieren:80
und80
, jeweils.
Die endgültige 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 konvertiert, damit sie auf eine Weise dargestellt werden kann, die kompatibel ist (d.h. unter Verwendung derselben Kanäle).
In den Beispielen, die wir bisher in diesem Abschnitt gesehen haben, wurden die Alphakanäle weder für die Ursprungs- noch für die Ausgabefarben explizit spezifiziert. Wenn der Alphakanal der Ausgabefarbe nicht spezifiziert ist, wird er standardmäßig auf denselben Wert wie der Alphakanal der Ursprungsfarbe gesetzt. Wenn der Alphakanal der Ursprungsfarbe nicht spezifiziert ist (und es sich nicht um eine relative Farbe handelt), ist der Standardwert 1
. Daher sind die alpha Kanalwert sowohl für die Ursprungs- als auch die Ausgabefarben in den oben genannten Beispielen 1
.
Schauen wir uns einige Beispiele an, die Ursprungs- und Ausgabefarbenwerte für Alphakanäle spezifizieren. Im ersten Beispiel wird der Ausgabefarbenwert für den Alphakanal gleich dem Ursprungswert für den Alphakanal angegeben, während im zweiten Beispiel ein anderer Ausgabefarbenwert für den Alphakanal angegeben wird, der nichts mit dem Ursprungswert für den Alphakanal zu tun hat.
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 Ursprungsfarbe hsl()
wiederum in eine rgb()
-Darstellung konvertiert — rgb(255 0 0)
. 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 von 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 Ursprungsfarbkanalwerte in <number>
-Werte aufgelöst werden, müssen Sie ihnen bei der Verwendung in Berechnungen Zahlen hinzufügen, selbst in Fällen, in denen ein Kanal normalerweise <percentage>
, <angle>
oder andere Werttypen akzeptieren würde. Zum Beispiel funktioniert das Hinzufügen eines <percentage>
zu einem <number>
nicht.
Formale Syntax
Beispiele
Grundlegende Syntax
In diesem Beispiel haben wir drei <div>
-Elemente mit verschiedenen 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()
-Funktion festgelegt. Die drei Farben sind gleich. Die dritte ist halbtransparent, deshalb haben wir einen repeating-linear-gradient()
auf dem <body>
eingefügt, um die Transparenz von Alphakanälen 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
Verwenden relativer Farben mit rgb()
In diesem Beispiel werden drei <div>
-Elemente mit unterschiedlichen Hintergrundfarben gestylt. Das linke Element erhält die unveränderte --base-color
, während die mittleren und rechten Elemente Varianten dieser --base-color
erhalten, die sukzessiv mehr aus dem Rotkanal entfernen und mehr zum Blaukanal hinzufügen.
Diese Varianten werden unter Verwendung relativer Farben definiert — die --base-color
benutzerdefinierte Eigenschaft wird in eine rgb()
-Funktion übergeben, und die Ausgabefarbe hat ihre Rot- und Blau-Kanäle modifiziert, um den gewünschten Effekt über calc()
-Funktionen zu erzielen, während der Grünkanal 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
Legacy-Syntax: kommagetrennte Werte
Aus Legacy-Gründen akzeptiert die rgb()
-Funktion ein Format, bei dem alle Werte durch Kommata getrennt werden.
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
BCD tables only load in the browser
Siehe auch
- Der
<color>
Datentyp für eine Liste aller Farbnotationen - sRGB Farbpicker und Konvertierungswerkzeug
- Verwendung relativer Farben
- CSS-Farben Modul