Florence Maurice

Webthemen

CSS3-Farbverläufe mit background-image oder background?

Geschrieben am:

Soll man für CSS3-Farbverläufe die Eigenschaft background-image oder background verwenden? Es funktioniert prinzipiell beides:

.beispiel { background-image: linear-gradient(red, yellow); }

aber auch

.beispiel { background: linear-gradient(red, yellow); }

Einen Fall gibt es allerdings, wo man besser zu background als zu background-image greift: Nämlich, wenn man einen Farbverlauf hat, der auf halbtransparente Farben über rgba() setzt, und außerdem eine Fallbackfarbe für ältere Browser angibt.

Im folgenden Beispiel geht der Farbverlauf von einem recht durchsichtigen Rot zu einem ganz opaken Rot.

.eins { background: red; -webkit-background: linear-gradient(rgba(255, 0, 0, 0.1), rgba(255, 0, 0, 1)); background: linear-gradient(rgba(255, 0, 0, 0.1), rgba(255, 0, 0, 1)); }

Verwendet man in diesem Fall hingegen background-image, so gilt die Hintergrundfarbe, die nur als Fallback gedacht war, natürlich ebenfalls für das Element und sieht hinter dem halbtransparenten Rot hervor. Das Ergebnis ist ein durchgängig roter Bereich:

/* nicht das gewünscht Ergebnis */ .zwei { background: red; /* scheint hinter dem Farbverlauf durch */ -webkit-background-image: linear-gradient(rgba(255, 0, 0, 0.1), rgba(255, 0, 0, 1)); background-image: linear-gradient(rgba(255, 0, 0, 0.1), rgba(255, 0, 0, 1)); }

Links Farbverlauf, rechts durgehendesRot

Links Farbverlauf; rechts kein Farbverlauf beim Einsatz von background-image, weil background-color durchscheint

ausprobieren bei JSFiddle

Also: background ist die richtige Wahl bei Farbverläufen, wenn man mit rgba() arbeitet und eine Fallbackfarbe definiert - Letzteres sollte man ja immer machen.