CSS3 im Detail: Background Gradients
Etwas verspätet nun auch der vierte Teil von CSS3 im Detail!
Dieses mal erwarten euch lineare und radiale Farbverläufe (engl. gradients) in CSS, mit deren Hilfe wir einige ganz hübsche Effekte erzielen können. Benutzt werden sie überall dort, wo wir eine url() angeben können. In den folgenden Beispielen werden wir sie aber im Zusammenhang mit background verwenden, indem wir statt einem Hintergrundbild den gewünschten Verlauf angeben.
Browserunterstützung
Folgende Browser unterstützen diese Technik bereits:
Syntax
Prinzipiell muss man zwischen zwei Arten von Farbverläufen unterscheiden:
- Lineare Verläufe, geradliniger Farbverlauf von zwei oder mehr Farben
- Radiale Verläufe, kreisförmiger Farbverlauf zwischen zwei Farben
Linearer Verlauf
Zuerst einmal ein einfacher, linearer Verlauf:
1 2 3 4 5 6 7 8 | div.lin_grad { background:-moz-linear-gradient(top, #fff, #adf); /* Firefox */ background:-webkit-gradient(linear, left top, left bottom, from(#fff), to(#adf)); /* Safari, Chrome */ background:-webkit-linear-gradient(top, #fff, #adf); /* Safari, Chrome - neue Syntax! */ background:-o-linear-gradient(top, #fff, #adf); /* Opera */ background:-ms-linear-gradient(top, #fff, #adf); /* IE */ background:linear-gradient(top, #fff, #adf); /* W3C Standard */ } |
Anmerkung: Das Firefox Logo im Vordergrund wird als zusätzlicher Background eingebunden, siehe Teil 2.
Prinzipiell haben die Verlauf-Funktionen 4 Argumente um einen Farbverlauf näher zu beschreiben. Die Argumente sind einmal linear oder gradient, welche angeben um welchen Typ von Verlauf es sich handelt. Firefox bietet 2 separate Funktionen dafür an, Safari/Chrome nutzen eine Funktion für beide Typen. Es folgen dann der Start- bzw. Endpunkt und somit die Richtung des Verlaufs. Zu guter Letzt werden noch die Farbcodes für Start- und Endfarbe benötigt.
Bei den Webkit-Browsern erscheint mir dir Syntax insgesamt etwas komplizierter. Also es kann sein, dass es auch kürzer geht aber ich bin ehrlich gesagt froh, dass ich überhaupt einen funktionierenden Verlauf mit Safari hinbekommen habe.
Update: Mittlerweile hat Webkit die Syntax an die von Gecko angepasst, auch Opera unterstützt ab Version 11.10 lineare Verläufe mit einem eigenen Prefix.
Update 2: Die heute herausgegebene Platform Preview des Internet Explorer 10 unterstützt beide Arten von Verläufen.
Update 3: Opera 12 11.6 unterstützt radiale Verläufe per Prefix.
Radialer Verlauf
1 2 3 4 5 6 7 8 | div.rad_grad { background:-moz-radial-gradient(center, #fff, #adf); /* Firefox */ background:-webkit-gradient(radial, center center, 80, center center, 400, from(#fff), to(#adf)); /* Safari, Chrome */ background:-webkit-radial-gradient(center, #fff, #adf); /* Safari, Chrome - neue Syntax! */ background:-o-radial-gradient(center, #fff, #adf); /* Opera, funktioniert noch nicht, aber sicherlich bald */ background:-ms-radial-gradient(center, #fff, #adf); /* IE */ background:radial-gradient(center, #fff, #adf); /* W3C Standard */ } |
Um einen radialen Verlauf zu bekommen, gehen wir genauso vor wie oben. Im Firefox ist es ganz einfach: Startpunkt, Startfarbe, Endfarbe. Webkit bereitet mir etwas Kopfzerbrechen.. soweit ich das verstanden habe, muss man hier zwei Kreise angeben mit jeweils einem Startpunkt und den Radius des Kreises, sowie Start- und Endfarbe.
Ich will das jetzt mal nicht weiter vertiefen und euch verwirren. Am besten ihr lest euch mal die Spezifikationen durch..
-moz-linear-gradient und -moz-radial-gradient für Firefox und -webkit-gradient für Safari und Chrome (beides auf Englisch).
Fazit
Background Gradients könnten in Zukunft recht interessant werden. Lineare Verläufe werden heutzutage bereits auf fast allen Webseiten eingesetzt (Hintergründe, Buttons). Radiale Verläufe machen sich sicherlich gut, um bestimmte Sachen zu highlighten. Der größte Vorteil ist, dass somit keine Grafiken mehr gebraucht werden, die sinnlos Zeit und Bandbreite vergeuden. Die Syntax ist zwar nicht die einfachste aber mit etwas Geduld und Übung lernt man sie schon kennen. Ich hoffe, dass Webkit hier trotzdem nochmal nachbessert und die Funktion irgendwie vereinfacht. Mit Firefox hingegen kommt man recht schnell ans Ziel.
Lange Rede, kurzer Sinn: Probiert euch am besten selbst mal an den Verläufen, kombiniert eventuell das Ganze dann noch mit mehreren Backgrounds und/oder Background-Size und ihr werdet auf einige lustige Ergebnisse stoßen. Viel Spaß damit.





20 Kommentare RSS
Social comments and analytics for this post…
This post was mentioned on Twitter by _Poldi: Currently reading: http://www.normansblog.de/css3-im-detail-background-gradients/
Das ist nicht CSS3, sondern browserspezifische Erweiterungen zu CSS. Es gibt noch keine standardisierte Syntax für Verläufe.
Erst das lesen, dann nochmal herkommen und rummotzen.
Natürlich stelle ich hier browserspezifische Implementierungen des Standards vor. Mehr als Implementierungsentwürfe darf es übrigens auch noch gar nicht geben, vor allem, weil sie ja noch Einfluss auf den Standard haben können. Erst wenn der Standard abgesegnet ist, gibt es auch eine standardisierte Implementierung. Bis es soweit ist, müssen wir uns mit dem zufrieden geben, das wir vorgesetzt bekommen.
Funktionieren auch Verläufe von oder nach Transparent?
Liebe Grüße,
Gast
Jap, natürlich. Du kannst z.B. einfach
rgba(0,0,0,0)als einen der Farbwert-Parameter benutzen.[...] Mit css3 CSS3 im Detail: Background Gradients – Norman's Blog [...]
wie bindet man den HG dann ein, wenn man die definitionen hat?
Hallo Chris, wie meinst du das? Das schreibst du einfach in deine CSS Datei.
Wenn du noch nicht viel von CSS verstehst, hilft dir vielleicht mein kleiner Einführungskurs weiter.
Danke für deine Antwort.
Ich hab es reingeschrieben
div.rad_grad {
background:-moz-radial-gradient(center, #fff, #adf); /* Firefox */
background:-webkit-gradient(radial, center center, 80, center center, 400, from(#fff), to(#adf)); /* Safari, Chrome */
}
und der HG ändert sich nicht.
Was mache ich falsch?
Danke
1. wo hast du das reingeschrieben?
2. brauchst du im quellcode dann natürlich ein
divmit der Klasse rad_gradalso ich hab es ungefähr so:
@import “menu/menu_style.css”;>
div.rad_grad {
background:-moz-radial-gradient(center, #fff, #adf); /* Firefox */
background:-webkit-gradient(radial, center center, 80, center center, 400, from(#fff), to(#adf)); /* Safari, Chrome */
}
<div class ="div.rad_grad"
RESTLICHE SEITE
klappt aber nicht. woran könnte das liegen?
schönen Dank!
ware ueber hilfe sehr dankbar zur einbindung
Hi Chris, sry ich mach tagsüber auch noch andere Sachen
Also ich weiß nicht genau, wo du das oben her hast aber es sieht mir ziemlich falsch aus.. lies dir doch mal das hier bisschen durch http://de.selfhtml.org/css/formate/einbinden.htm da wird gezeigt, wie man CSS richtig einbindet. Wenn du dann immer noch nicht weiterkommst, kannst du mir auch ne E-Mail schreiben. Viel Erfolg
Weils sehr gut passt.. bin auf dieses Framework gestoßen: http://7synth.com/dev/gradients . Leider nicht css-only, aber dafür in wirklich jedem Browser lauffähig.
Wäre auf jedenfall schön, wenn HTML&CO endlich auch mal in der Praxis zum Standard werden, aber ich glaube das werde ich nicht mehr erleben..
Die Möglichkeiten von CSS 3 erfüllen endlich jede Design-Träume. Schaut mal mit aktuellem Firefox oder Chrome auf diesen Blog, da sieht man in praktischer Anwendung, was alles möglich ist. Runde Ecken, Transparenzeffekte, Farbverläufe, Schatten, CSS3-Buttons. Eine wahre Freude! Wer mit dem IE vorbeikommt, kriegt nur eine Fallback-Lösung.
Hallo Norman
Deine Browser-Angaben kann ich nicht nachvollziehen. Ich habe auf Windows7 folgende Browser getestet (deine Webseite)
Avant, Flock, Opera11,Safari5,IE9, Firefox 3.6 und Chrome neueste Version. Nur Firefox und Chrome haben den Verlauf gezeigt, alle anderen nur eine leere Fläche
Auf dem Mac ein ähnliches Bild. Nur Firefox (Chrome habe ich nicht getestet) zeigt den Verlauf. Weder Safari noch Opera machen da mit.
Schade eigentlich
Manfred
Hallo Manfred, danke dass du mich auf das Problem aufmerksam gemacht hast.
Folgendes:
) jedenfalls ist die Zeile wieder drin und die Beispiele funktionieren in Safari wieder prächtig.
1) Safari scheint doch noch nicht die neue Syntax zu unterstützen, ich hatte mir die extra Zeile bei den Beispielen gespart und nur im Chrome geprüft (Faulheit zahlt sich eben nur selten aus
2) Damit die Beispiele (zumindest für lineare Verläufe) auch in Opera funktioneren, brauchst du die aktuelle Beta Version 11.10, mit dem 11.0 Release wirst du keinen Erfolg haben.
3) Was die anderen Browser angeht, kann ich keine großen Auskünfte machen. Ich weiß nur, dass IE9 es derzeit nicht unterstützt. Wenn es so wäre, hätte ich ihn weiter oben mit aufgelistet.
Ich hoffe, das hilft dir weiter und danke nochmal.
Vielen Dank für die Tipps,
ich komme immer mal wieder hier hin um mir das anzuschauen
Für die Verläufe sollte es endlich mal eine Vereinheitlichung geben, alle Browser wollen immer was anderes, das nervt auf Dauer tierisch ~.~!
Vor allem weil ich in eines meiner neueren Projekte diese Verläufe nutze
Grüße!
@Manfred: Falls du für Opera noch eine Unterstützung des Farbverlaufes für ältere Versionen benötigst kann ich dir noch einen SVG Ansatz für den linearen Farbverlauf, den ich im letzten Jahr in meinem Blog (entschuldige die “Werbung” Norman) näher vorgestellt habe.
Danke Dir! Ein sehr cooles Tutorial!