Der opacity
Stil wirkt sich auf das gesamte Element und alles darin aus. Die richtige Antwort darauf ist, stattdessen eine RGBA-Hintergrundfarbe zu verwenden.
Das CSS ist ziemlich einfach:
.myelement {
background: rgba(200, 54, 54, 0.5);
}
... wobei die ersten drei Zahlen die roten, grünen und blauen Werte für Ihre Hintergrundfarbe sind und die vierte der Alpha-Kanalwert, der genauso funktioniert wie der opacity
Wert.
Weitere Informationen finden Sie auf dieser Seite: http://css-tricks.com/rgba-browser-support/
Der Nachteil ist, dass dies in IE8 oder niedriger nicht funktioniert. Die Seite, die ich oben verlinkt habe, listet auch einige andere Browser auf, in denen es nicht funktioniert, aber sie sind mittlerweile alle sehr alt. Alle derzeit verwendeten Browser außer IE6 / 7/8 funktionieren mit RGBA-Farben.
Die gute Nachricht ist, dass Sie den IE auch dazu zwingen können, mit einem Hack namens CSS3Pie zu arbeiten . CSS3Pie erweitert ältere IE-Versionen um eine Reihe moderner CSS3-Funktionen, einschließlich der Hintergrundfarben für RGBA.
Um CSS3Pie für Hintergründe zu verwenden, müssen Sie -pie-background
Ihrem CSS eine bestimmte Deklaration sowie den PIE- behavior
Stil hinzufügen , damit Ihr Stylesheet folgendermaßen aussieht :
.myelement {
background: rgba(200, 54, 54, 0.5);
-pie-background: rgba(200, 54, 54, 0.5);
behavior: url(PIE.htc);
}
Hoffentlich hilft das.
[BEARBEITEN]
Wie bereits erwähnt, können Sie für das, was es wert ist, den IE- filter
Stil mit dem gradient
Schlüsselwort verwenden. Die CSS3Pie-Lösung verwendet tatsächlich dieselbe Technik hinter den Kulissen, macht jedoch das direkte Herumspielen mit den IE-Filtern überflüssig, sodass Ihre Stylesheets viel sauberer sind. (Es fügt auch eine ganze Reihe anderer netter Funktionen hinzu, aber das ist für diese Diskussion nicht relevant.)