RGBa ist eine Möglichkeit, eine Farbe in CSS zu deklarieren, die Alpha-Transparenz unterstützt. Sie sieht so aus:
div {
background: rgba(200, 54, 54, 0.5);
}
Dies ermöglicht es uns, Bereiche mit transparenter Farbe zu füllen. Die ersten drei Zahlen repräsentieren die Farbe in RGB-Werten und die vierte eine Transparenz von 0 bis 1 (null ist vollständig transparent und eins ist vollständig opak). Wir haben schon lange dieopacityEigenschaft, die ähnlich ist, aberopacityalle untergeordneten Elemente dazu zwingt, ebenfalls transparent zu werden, und es gibt keine Möglichkeit, dies zu verhindern (außer seltsamen Positions-Hacks). Browserübergreifende Opazität ist ebenfalls etwas unsauber.
Mit RGBa können wir eine Box transparent machen und ihre untergeordneten Elemente unverändert lassen.

Deklarieren einer Fallback-Farbe
Nicht alle Browser unterstützen RGBa, daher sollten Sie, wenn das Design es zulässt, eine „Fallback“-Farbe deklarieren. Diese Farbe wird höchstwahrscheinlich **massiv** (vollständig opak) sein. Wenn Sie kein Fallback deklarieren, wird in Browsern, die es nicht unterstützen, keine Farbe angewendet. Dieses Fallback schlägt bei einigen *wirklich* alten Browsern fehl.
div {
background: rgb(200, 54, 54); /* The Fallback */
background: rgba(200, 54, 54, 0.5);
}
Seien Sie sich jedoch dieses Fehlers bewusst, der mit der Nichtverwendung von Kurzschriften in IE 6 und 7 zusammenhängt.
Browserunterstützung für RGBa
Zuletzt aktualisiert 05/14/2010
| Browser, Version, Plattform | Ergebnis | Fallback |
|---|---|---|
| Mozilla Firefox 3.x (und neuer) | Funktioniert | — |
| Mozilla Firefox 2.x (und älter) | Funktioniert nicht | Massive Farbe |
| Google Chrome (jede Version) | Funktioniert | — |
| WebKit – Safari 3.x (und neuer) | Funktioniert | — |
| WebKit – Safari 2.x (und älter) | Funktioniert nicht | — |
| Mobiles Safari (iPhone / iPod Touch / iPad) | Funktioniert | — |
| Opera 10.x (und neuer) | Funktioniert | — |
| Opera 9.x (und älter) | Funktioniert nicht | Massive Farbe |
| Internet Explorer 9 Preview | Funktioniert | — |
| Internet Explorer 8 (bis 6) | Funktioniert nicht | Massive Farbe |
| Internet Explorer 5.5 (und älter) | Funktioniert nicht | Keine Farbe |
| Netscape (jede Version) | Funktioniert nicht | Massive Farbe |
| BlackBerry Storm Browser | Funktioniert | — |
Daten gesammelt aus dieser Demo, die eine vollständigere Liste der Browserkompatibilität enthält.
Ein besseres Fallback für IE
Da IE bedingte Stylesheets unterstützt, können wir diese und einen proprietären Microsoft CSS-Filter verwenden, um das gleiche Ergebnis zu erzielen.
<!--[if IE]>
<style type="text/css">
.color-block {
background:transparent;
filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#50990000,endColorstr=#50990000);
zoom: 1;
}
</style>
<![endif]-->
UPDATE: Wie von einigen Leuten angemerkt, sollte der Alpha-Wert die beiden Ziffern am Anfang des Strings sein, nicht am Ende. Daher habe ich den obigen Code korrigiert. (z. B. startColorstr=#50990000 statt startColorstr=#99000050)
WEITERES UPDATE: Wir sind über den Punkt hinaus, an dem Sie wahrscheinlich nie wieder Filter-Verläufe verwenden müssen. Aber nichtsdestotrotz ist die erste zweistellige Zahl (oben „50“) nicht 50 %. Sie müssen „hexadezimal“ verwenden. Wie Julio Loayza mir schrieb:
rgba(255, 255, 255, 0.5) wäre nicht äquivalent zu (startColorstr=#50FFFFFF, endColorstr=#50FFFFFF)
rgba(255, 255, 255, 0.5) wäre äquivalent zu (startColorstr=#7FFFFFFF, endColorstr=#7FFFFFFF)
00 ist transparent und FF opak. Hier ist die vollständige Zuordnung:
100% — FF
95% — F2
90% — E6
85% — D9
80% — CC
75% — BF
70% — B3
65% — A6
60% — 99
55% — 8C
50% — 80
45% — 73
40% — 66
35% — 59
30% — 4D
25% — 40
20% — 33
15% — 26
10% — 1A
5% — 0D
0% — 00
Weitere Informationen
- Tim Kadlec: Nicht so klar, wie es scheint: CSS3 Opazität und RGBA
- Andy Clarke: Ist CSS3 RGBa bereit, abzugehen?
- Lea Verou: PHP-Bibliothek zum Erstellen von PNG-Dateien mit Alpha-Transparenz als Fallback für RGBa.
Weitere Beispiele



Farbvarianten
Anstatt sich eine Reihe verschiedener Hex-Werte für Graustufen merken oder nachschlagen zu müssen, können Sie einfach RGBa verwenden, um reines Schwarz in einen passenden Farbton anzupassen, z. B. rgba(0, 0, 0, 0.3); Vorausgesetzt, Transparenz ist für die Anwendung akzeptabel (großartig für Schatten, nicht großartig für Text). Es muss natürlich auch nicht schwarz sein, Sie könnten auf diese Weise ein ganzes monochromes Farbschema mit jeder Farbe erstellen.
Außerdem ist HSLa etwas einfacher zu handhaben als RGBa, wenn Sie Farben manuell per Code anpassen müssen.
Toller Artikel, Chris!
Sie haben es wirklich gut abgedeckt.
Schöne Diskussion über rgba… verwende rgb-Farben nicht oft, aber sobald dies browserübergreifender ist, wird es sicher häufiger verwendet.
Ich war mir des IE-Hacks nicht bewusst… sehr gut!
Stimme Brenelz zu, und ja, danke, dass du den IE-Hack von Hedger so klar dargelegt hast.
Ich hoffe, die Browser fangen an, dies zu nutzen, da es eine vernünftige Methode zu sein scheint, einfach zu programmieren/zu lernen.
FYI, IE 8 RC1 auf Vista unterstützt es auch nicht. :(
Können wir IE einfach abschaffen? Ich habe es satt, so viel Zeit damit zu verbringen, es zu pampern.
Schön! Das kannte ich noch nicht.
IE 5.5 unterstützt es nicht? Verständlich.
IE 8? Unentschuldbar. Ich werde das einfach auf die unglaublich lange Liste von Gründen setzen, warum ich rasend werde, wenn mir jemand sagt, dass er IE benutzt.
Camino 1.6.6 fällt auf eine massive Farbe zurück.
Camino 2.0b1 funktioniert ordnungsgemäß.
Sehr nützlich!
Große Überraschung, dass IE das nicht unterstützt, nicht einmal IE8.
IE unterstützt es nicht? Klingt nach etwas Neuem! ;-) Guter Hack, weiter so.
IE macht mich so fertig.
Opera 10 wird auch RGBa unterstützen, Quelle: http://dev.opera.com/articles/view/presto-2-2-and-opera-10-a-first-look/#opacity
Und kann das nicht auch mit einem PNG-Bild gemacht werden?
Sie sollten das Apostroph hier entfernen.
Opera 10 Alpha und neuere Versionen unterstützen RGBA und HSLA vollständig.
Erst gestern las ich einen Artikel über die Verwendung von Opazität und wollte über RGBa als einen moderneren, sogar zukunftsorientierteren Ansatz schreiben.
Toller Artikel, Chris. Persönlich würde ich den IE-Fix nicht verwenden, da ich glaube, dass die Verwendung von CSS-Ausdrücken die Leistung beeinträchtigt (wenn die Leistung für die betreffende Website ein Problem darstellt), stimme aber zu, dass er den Artikel zur Erörterung der Methode vervollständigt.
Persönlich würde ich mich mit einer massiven Farbe für IE zufriedengeben, aber Projektmeetings könnten das anders diktieren ;-)
Ich habe dies bereits im letzten Monat auf einer von uns gestalteten Website verwendet. Das Fallback funktionierte gut, da es sowieso ein dunkler, grunge-artiger Hintergrund war. Wenn Sie neugierig sind: http://www.2x3campaign.com der Pre-Footer-Teil.
Danke für das Teilen.
Bitte, liebe Designer, haltet euch von IE-Hacks fern! Ich kann sie nicht mehr ertragen.
Wirklich schick… Ich habe immer ein 1 Pixel semi-transparentes PNG verwendet, um den gleichen Effekt zu erzielen. Die einzige Enttäuschung ist die mangelnde breite Browserunterstützung.
Sehr schöner und informativer Artikel, Chris. Ich kannte das IE-Fallback nicht, das ist ein schöner Trick.
Wie auch immer, ich werde RGBa meiden, bis die Browserunterstützung (sprich: IE (außerdem hat in meinem Heimatland Opera einen größeren Marktanteil als weltweit)) aufgeholt hat.
Danke fürs Teilen… :D
Biju Subhash
Ich freue mich darauf, mehr von **den Vorteilen von CSS3** in Aktion zu sehen und **die Web-Welt sich im Laufe der Zeit verbessern** zu sehen… Wie immer, danke für all die großartigen Tipps & Tricks.
Hm, ich habe dieses Fallback verwendet
background:url(cyan_transparent_50.png);
background:rgba(0,255,255,.5);
Ich kannte die Filter-Sache nicht, ich werde es versuchen.
Zustimmung. Das PNG-Fallback deckt IE *und* die meisten anderen nicht unterstützenden Browser ab; weniger Code, weniger Arbeit. Außerdem haben es alle seit Jahren so gemacht, also ist es weniger verwirrend.
Ähm… Der Trick mit dem Fallback funktioniert nur mit der
/* Das Fallback */ Kommentar im CSS, oder?
Nein, das ist nur zur Referenz.
Toller Artikel! Ich war anfangs nicht so sehr an dem Transparent-Ding interessiert und daher auch nicht so sehr am Artikel, bis ich die Website sah, die Sie in „24 Wege“ angegeben haben.
Das ist eine großartige Verwendung von Transparenz und sehr inspirierend…
Inspiriert und wissbegierig, wie man das erreicht und IE sich benehmen lässt, ist dieser Artikel pures Gold.
LEGENDE!
Wie jedes Mal, wenn dies geschieht, lobe ich Ihre Arbeit von Css Tricks.
Hallo Hallo aus Brüssel.
Toller Artikel. Ich habe das gelegentlich verwendet, mich aber nie mit IE-Fallbacks beschäftigt, obwohl ich es sollte.
Jetzt können wir allen Browsern ermöglichen, gut zusammenzuspielen. Danke, Chris!
IE SOLL STERBEN
bitte
Wäre es nicht einfacher, ein 1px mal 1px großes PNG zu verwenden und das „belated“ PNG-Fix-Skript für IE zu nutzen?
Habe es gerade getestet, und rgba funktioniert auch im Palm WebOS-Browser (Palm Pre/+ Palm Pixi/+), was Sinn macht, da er Webkit-basiert ist.
Ich wollte meinen Tag mit etwas Neuem beginnen, und das ist genau das, was ich bekommen habe.
(Chris, ich folge dir auf Twitter (*_*)
Schönes kurzes Tutorial, danke Chris.
Warum ist dein Farbcode #99000050? Ist das ein Tippfehler oder lerne ich hier zwei Dinge?
Das ist für das IE-Fallback. Die ersten sechs sind der Hex-Code und die letzten beiden sind der Alpha-Wert.
Entschuldigung, falsch!!
Die ERSTEN 2 Zeichen sind der Alpha-Wert (AARRGGBB)
FF = 1,0 Opazität, also 99 = 0,6 Opazität im Beispiel.
Übrigens funktioniert dieser Filter in allen IE-Versionen bis 5.5.
Hallo Chris,
Können Sie den Kommentar von Deos unten überprüfen?
Sollte eine 10%ige Opazität von Weiß #10FFFFFF oder #FFFFFF10 sein?
Danke!
Große Überraschung, dass IE das nicht unterstützt, nicht einmal IE8.
Vielen Dank für Ihren Artikel, Chris. Tatsächlich wäre es sehr interessant, auch einen Artikel über die Unterstützung von HSLa in modernen Browsern zu sehen. Außerdem wäre ein allgemeinerer Artikel über HSL nett – ehrlich gesagt habe ich nicht viele davon gesehen.
Danke für deinen Besuch, Vitaly =)
Ich weiß nicht viel über HSL. Ich sehe in meinem Photoshop CS5 Farbwähler, dass diese Werte vorhanden sind, sodass diese Werte leicht zu ermitteln und zu verwenden wären. Ich bin mir nur nicht sicher, welche Vorteile es hat? Auf den ersten Blick scheint es eine einfachere Syntax zum Erstellen von Farbvariationen zu sein, ohne zu einem Farbwähler wechseln zu müssen (z. B. ein stumpferes Grün benötigt, einfach den Sättigungswert senken). Ich werde das als etwas notieren, das ich mir genauer ansehen muss. =)
Haben Sie die Rick Wilcox-Website entworfen? Sieht ziemlich großartig aus.
Was? IE unterstützt es nicht?? Nun, das ist ja unerhört!! (Sarkasmus-Meter explodiert…)
Toller Tipp, Chris – ich werde das definitiv versuchen, in eine meiner nächsten Websites zu integrieren. Danke!
Die Unterstützung in den neuen Versionen von Webbrowsern sieht gut aus. Wahrscheinlich gibt es keinen Grund, sich um die alten zu kümmern, da Benutzer ihre Software aktualisieren und Anbieter automatische Update-Funktionen in ihre Browser integriert haben. Und Internet Explorer 9 soll 2011 veröffentlicht werden – http://en.wikipedia.org/wiki/Internet_Explorer#Internet_Explorer_9
Chris, das ist fantastisch. Hat wie am Schnürchen funktioniert. Danke!
Die Website hedgerwow.com scheint offline zu sein… :(
Toller Artikel und genau das, was ich brauchte. Ich habe mit einer neuen Website gekämpft, die viel Transparenz verwendet, und das könnte mich retten!
Hier ist eine ausführlichere Erklärung des IE-Hacks für rgba-Transparenz. Es gibt sogar ein praktisches Werkzeug, um die rgba-Werte in Hex-Code umzuwandwandeln. Nett.
http://kilianvalkhof.com/2010/css-xhtml/how-to-use-rgba-in-ie/
Hallo,
Ich bin zwar kein Freund von IE, aber in diesem Fall sollten Sie bedenken, dass CSS2 Standard ist. RGBA als CSS3 ist kein Standard!
Es ist also nicht wirklich ein Fehler in IE.
Übrigens: In einigen Fällen lohnt es sich, zweimal nachzudenken, bevor man IE verurteilt. Ich hatte verschiedene Probleme in IE, während in Firefox alles in Ordnung war, obwohl der Fehler in meinem Quellcode lag und Firefox einfach nicht so „streng“ war.
Und in letzter Zeit habe ich auch einige Probleme mit Firefox.
Zum Beispiel ein Flackern mit jQuery (funktioniert perfekt in IE6-8 und Safari).
Wie auch immer,
Danke für die Lösung in IE8 – in meinem Fall
filter: alpha(opacity=’80’);
war gut genug.
Aber ich werde die Gradienten-Workaround im Hinterkopf behalten.
Danke!
Sithlord
Der IE-Fallback funktioniert nur mit der „background“-Eigenschaft, nicht mit „background-color“ (in IE6 & IE7 – IE8 ist nett). Es ist so traurig :(
Hat jemand eine Lösung gefunden, um den IE-Fallback (Filterverlauf) mit Sass/Less/Compass oder auf andere Weise zu berechnen?
Dies ist eine einfache (JavaScript) Methode, um das Alpha-Präfix für den IE-Filter-Nonsens zu berechnen.
parseInt((n/100) * 255, 10).toString(16).toUpperCase();
Geben Sie das in die Konsole ein. Ersetzen Sie n durch den Prozentsatz, und es wird der HEX-Wert für das Alpha-Präfix ausgegeben.
ODER
Als Funktion ausgedrückt, etwa so…
http://codepen.io/fliptopbox/pen/eLsCh
ps: Danke Chris, dass du die Vorarbeit geleistet hast. :D
Hallo Chris. Nenn mich verrückt faul, aber gibt es eine Abkürzung für rgba weiß?
Ich kann Ihnen gar nicht sagen, wie müde ich davon bin, 255,255,255 zu schreiben, LOL.
Ich weiß, ich weiß, SASS, LESS. Ich werde bald da sein.
~ s
Hallo Scott,
Warum nicht einfach das Wort „white“ verwenden?
color: white;Oder ich verwende lieber Hex-Codes.
color: #FFFFFF;