So wie man den Hintergrund eines Elements in CSS als Vollfarbe deklarieren kann, kann man ihn auch als Verlauf deklarieren. Die Verwendung von CSS-definierten Verläufen anstelle von tatsächlichen Bilddateien ist besser für die Kontrolle und Leistung.
Verläufe sind typischerweise eine Farbe, die in eine andere übergeht, aber in CSS kann man jeden Aspekt davon steuern, von der Richtung über die Farben (so viele wie man möchte) bis hin zu den Stellen, an denen diese Farbänderungen stattfinden. Gehen wir das alles durch.
Verläufe sind background-image
Während für die Deklaration einer Vollfarbe die `background-color`-Eigenschaft in CSS verwendet wird, verwenden Verläufe `background-image`. Dies erweist sich aus mehreren Gründen als nützlich, auf die wir später eingehen werden. Die Kurzschreibweise `background` kennt Ihre Absicht, wenn Sie das eine oder andere deklarieren.
.gradient {
/* can be treated like a fallback */
background-color: red;
/* will be "on top", if browser supports it */
background-image: linear-gradient(red, orange);
/* these will reset other properties, like background-position, but it does know what you mean */
background: red;
background: linear-gradient(red, orange);
}
Linearer Verlauf
Vielleicht der gebräuchlichste und nützlichste Verläfstyp ist `linear-gradient()`. Die „Achse“ des Verlaufs kann von links nach rechts, von oben nach unten oder in jedem beliebigen Winkel verlaufen.
Wenn kein Winkel angegeben wird, wird von oben nach unten angenommen.
Die durch Kommas getrennten Farben können jede Art von Farbe sein, die Sie normalerweise verwenden: Hex, benannte Farben, rgba, hsla usw.
Um ihn von links nach rechts zu gestalten, übergibt man einen zusätzlichen Parameter am Anfang der `linear-gradient()`-Funktion, der mit dem Wort „to“ beginnt und die Richtung angibt, z. B. „to right“.
Diese „to“-Syntax funktioniert auch für Ecken. Wenn Sie beispielsweise möchten, dass die Achse des Verlaufs in der unteren linken Ecke beginnt und zur oberen rechten Ecke verläuft, könnten Sie „to top right“ sagen.
Wenn diese Box quadratisch wäre, wäre der Winkel dieses Verlaufs 45°, aber da sie es nicht ist, ist er es nicht. Wenn Sie sicherstellen wollten, dass es 45° sind, könnten Sie das deklarieren.
.gradient {
background-image:
linear-gradient(
45deg,
red, #f06d06
);
}
Sie sind auch nicht auf nur zwei Farben beschränkt. Tatsächlich können Sie so viele komma-getrennte Farben haben, wie Sie möchten. Hier sind vier.
.gradient {
background-image:
linear-gradient(
to right,
red,
#f06d06,
rgb(255, 255, 0),
green
);
}
Sie können auch angeben, wo eine bestimmte Farbe „beginnen“ soll. Das nennt man „Farb-Stops“. Sagen wir, Sie möchten, dass Gelb den größten Teil des Platzes einnimmt, aber Rot nur ein wenig am Anfang, dann könnten Sie den Gelb-Farb-Stop ziemlich früh machen.
Wir denken normalerweise an Verläufe als verblassende Farben, aber wenn Sie zwei Farb-Stops haben, die gleich sind, können Sie eine Vollfarbe sofort in eine andere Vollfarbe ändern. Dies kann nützlich sein, um einen Hintergrund in voller Höhe zu deklarieren, der Spalten simuliert.
Browserunterstützung / Präfixe
Bisher haben wir uns nur die neue Syntax angesehen, aber CSS-Verläufe gibt es schon seit einiger Zeit. Die Browserunterstützung ist gut. Wo es knifflig wird, sind Syntax und Präfixe. Es gibt drei verschiedene Syntaxen, die von Browsern unterstützt wurden. Dies sind nicht ihre offiziellen Namen, aber Sie können sie sich so vorstellen:
- Alt: Ursprüngliche WebKit-eigene Methode, mit Dingen wie from() und color-stop()
- Zwischen: Altes Winkelsystem, z. B. „left“
- Neu: Neues Winkelsystem, z. B. „to right“
Und dann noch Präfixe.
Versuchen wir eine Tabelle.
| Chrome | 1-9: Alt, mit Präfix 10-25: Zwischen, mit Präfix 26: Neu, ohne Präfix |
|---|---|
| Safari | 3-: Keine Unterstützung 4-5.0: Alt, mit Präfix 5.1-6.0: Zwischen, mit Präfix 6.1: Neu, ohne Präfix |
| Firefox | 3.5-: Keine Unterstützung 3.6-15: Zwischen, mit Präfix 16: Neu, ohne Präfix |
| Opera | 11.0-: Keine Unterstützung 11.1-11.5: Zwischen, mit Präfix, nur linear 11.6-12: Zwischen, mit Präfix, hinzugefügt radial 12.1: Zwischen, ohne Präfix 15: Neu, ohne Präfix |
| IE | 8-: Keine Unterstützung 9: Nur Filter 10+: Neu, ohne Präfix (unterstützt auch Zwischen mit Präfix) |
| Android | 2.0-: Keine Unterstützung 2.1-3.0: Zwischen, mit Präfix 4.0-4.3: Neu, mit Präfix 4.4+: Neu, ohne Präfix |
| iOS | 3-: Keine Unterstützung 3.2-4.3: Zwischen, mit Präfix 5.0-6.1: Neu, mit Präfix 7.0: Neu, ohne Präfix |
Es gibt einige Überschneidungen. Wenn ein Browser die neue Syntax unterstützt, unterstützt er wahrscheinlich auch die älteren Syntaxen, einschließlich des Präfixes. Best Practice ist: Wenn er die neue Syntax unterstützt, verwenden Sie die neue.
Wenn Sie also die absolut tiefstmögliche Browserunterstützung wünschen, könnte ein linearer Verlauf so aussehen:
.gradient {
/* Fallback (could use .jpg/.png alternatively) */
background-color: red;
/* SVG fallback for IE 9 (could be data URI, or could use filter) */
background-image: url(fallback-gradient.svg);
/* Safari 4, Chrome 1-9, iOS 3.2-4.3, Android 2.1-3.0 */
background-image:
-webkit-gradient(linear, left top, right top, from(red), to(#f06d06));
/* Safari 5.1, iOS 5.0-6.1, Chrome 10-25, Android 4.0-4.3 */
background-image:
-webkit-linear-gradient(left, red, #f06d06);
/* Firefox 3.6 - 15 */
background-image:
-moz-linear-gradient(left, red, #f06d06);
/* Opera 11.1 - 12 */
background-image:
-o-linear-gradient(left, red, #f06d06);
/* Opera 15+, Chrome 25+, IE 10+, Firefox 16+, Safari 6.1+, iOS 7+, Android 4.4+ */
background-image:
linear-gradient(to right, red, #f06d06);
}
Das ist eine Menge Code. Das von Hand zu machen wäre fehleranfällig und viel Arbeit. Autoprefixer leistet gute Arbeit dabei und ermöglicht es Ihnen, die Menge an Code zu reduzieren, wenn Sie entscheiden, welche Browser Sie unterstützen möchten.
Das Compass Mixin kann SVG-Daten-URIs für IE 9 erstellen, falls Ihnen das wichtig ist.
Um die Sache nur *ein wenig* komplizierter zu machen, funktionieren die Grade in der ALTEN vs. NEUEN Syntax ein wenig anders. Die ALTE (und ZWISCHEN - meist mit Präfix) Methode definiert 0 Grad als von links nach rechts und verläuft gegen den Uhrzeigersinn, während die NEUE (meist ohne Präfix) Methode 0 Grad als von unten nach oben definiert und im Uhrzeigersinn verläuft.
ALT (oder ZWISCHEN) = (450 – neu) % 360
oder sogar einfacher
NEU = 90 – ALT
ALT = 90 – NEU
wie
ALT linear-gradient(135deg, rot, blau)
NEU linear-gradient(315deg, rot, blau)
IE-Filter
Internet Explorer (IE) 6-9 unterstützt zwar nicht die CSS-Gradienten-Syntax, bietet aber eine programmatische Möglichkeit, Hintergrundverläufe zu erstellen.
/* "Invalid", but works in 6-8 */
filter: progid:DXImageTransform.Microsoft.gradient(GradientType=0, startColorstr=#1471da, endColorstr=#1C85FB);
/* Valid, works in 8-9 */
-ms-filter: "progid:DXImageTransform.Microsoft.gradient (GradientType=0, startColorstr=#1471da, endColorstr=#1C85FB)";
Es gibt einige Überlegungen, ob man dies verwenden sollte oder nicht.
- `filter` wird generell als schlechte Praxis für die Leistung angesehen,
- `background-image` überschreibt `filter`, also wenn Sie dies als Fallback verwenden müssen, fallen Filter weg. Wenn eine Vollfarbe ein akzeptabler Fallback ist (`background-color`), ist Filter eine Möglichkeit.
Auch wenn Filter nur mit Hex-Werten funktionieren, können Sie immer noch Alpha-Transparenz erhalten, indem Sie dem Hex-Wert die Transparenzhöhe von 00 (0 %) bis FF (100 %) voranstellen. Beispiel:
rgba(92,47,90,1) == #FF5C2F5A
rgba(92,47,90,0) == #005C2F5A
Radiale Verläufe
Radiale Verläufe unterscheiden sich von linearen dadurch, dass sie an einem einzelnen Punkt beginnen und sich nach außen ausbreiten. Verläufe werden oft verwendet, um Beleuchtung zu simulieren, die, wie wir wissen, nicht immer gerade ist, daher können sie nützlich sein, um einem Verlauf eine natürlichere Wirkung zu verleihen.
Standardmäßig beginnt die erste Farbe in der Mitte des Elements (center center) und verblasst zur Endfarbe hin zum Rand des Elements. Das Verblassen geschieht mit gleicher Geschwindigkeit, unabhängig von der Richtung.
Man sieht, wie dieser Verlauf eine elliptische Form bildet, da das Element nicht quadratisch ist. Das ist der Standard (ellipse, als erster Parameter), aber wenn wir sagen, dass wir einen Kreis wollen, können wir ihn dazu zwingen.
.gradient {
background-image:
radial-gradient(
circle,
yellow,
#f06d06
);
}
Beachten Sie, dass der Verlauf kreisförmig ist, aber nur bis zur Endfarbe entlang des weitesten Randes verblasst. Wenn wir möchten, dass der Kreis vollständig innerhalb des Elements liegt, können wir dies sicherstellen, indem wir angeben, dass der Verlauf durch „closest-side“ als durch Leerzeichen getrennter Wert von der Form enden soll, z. B.:
Die möglichen Werte sind: `closest-corner`, `closest-side`, `farthest-corner`, `farthest-side`. Man kann sich das so vorstellen: „Ich möchte, dass dieser radiale Verlauf vom Mittelpunkt zum __________, verblasst, und überall sonst füllt sich, um das zu ermöglichen.“
Ein radialer Verlauf muss nicht standardmäßig in der Mitte beginnen. Sie können einen bestimmten Punkt angeben, indem Sie „at ______“ als Teil des ersten Parameters verwenden, z. B.:
Ich mache es hier deutlicher, indem ich das Beispiel quadratisch mache und einen Farb-Stop anpasse.
Die Browserunterstützung für radiale Verläufe ist weitgehend dieselbe wie für `linear-gradient()`, mit der Ausnahme einer sehr alten Version von Opera, gerade als sie begannen, Verläufe zu unterstützen, unterstützten sie nur lineare und keine radialen.
Aber ähnlich wie bei linearen Verläufen hat `radial-gradient()` einige Syntaxänderungen durchlaufen. Es gibt wieder: „Alt“, „Zwischen“ und „Neu“.
/* Example of Old */
background-image:
-webkit-gradient(radial, center center, 0, center center, 141, from(black), to(white), color-stop(25%, blue), color-stop(40%, green), color-stop(60%, red), color-stop(80%, purple));
/* Example of Tweener */
background-image:
-webkit-radial-gradient(45px 45px, farthest-corner, #F00 0%, #00F 100%) repeat scroll 0% 0% rgba(0, 0, 0, 0);
/* Example of New */
background-image:
radial-gradient(circle farthest-side at right, #00F, #FFF);
Die Kennzeichen sind:
- Alt: Mit `-webkit-` vorangestellt, Dinge wie `from()` und `color-stop()`
- Zwischen: Der erste Parameter war der Ort des Zentrums. Dies wird nun in Browsern, die die neue Syntax ohne Präfix unterstützen, völlig fehlschlagen, stellen Sie also sicher, dass jede Zwischen-Syntax mit einem Präfix versehen ist.
- Neu: Ausführlicher erster Parameter, wie „circle closest-corner at top right“
Auch hier würde ich Autoprefixer dies regeln lassen. Sie schreiben in der neuesten Syntax, er erstellt Fallbacks. Radiale Verläufe sind schwieriger zu durchschauen als lineare, daher würde ich empfehlen, sich einfach mit der neuesten Syntax vertraut zu machen und damit fortzufahren (und wenn nötig, zu vergessen, was Sie über ältere Syntaxen wissen).
Konische Verläufe
Ein konischer Verlauf ist einem radialen Verlauf ähnlich. Beide sind kreisförmig und verwenden die Mitte des Elements als Quellpunkt für Farb-Stops. Während sich die Farb-Stops eines radialen Verlaufs jedoch von der Mitte des Kreises ausbreiten, platziert ein konischer Verlauf sie um den Kreis herum.

Sie werden „konisch“ genannt, weil sie wie die Form eines von oben betrachteten Kegels aussehen. Zumindest wenn ein deutlicher Winkel angegeben ist und der Kontrast zwischen den Farb-Werten groß genug ist, um einen Unterschied zu erkennen.
Die Syntax für konische Verläufe ist auf Englisch leichter zu verstehen:
Erstellen Sie einen konischen Verlauf, der sich an [einem bestimmten Punkt] befindet, der mit [einer Farbe] bei einem bestimmten Winkel beginnt und mit [einer anderen Farbe] bei [einem bestimmten Winkel] endet.
Auf seiner grundlegendsten Ebene sieht es so aus:
.conic-gradient {
background: conic-gradient(#fff, #000);
}
...wobei angenommen wird, dass der Verlauf in der Mitte des Elements beginnt (50% 50%) und gleichmäßig zwischen weißen und schwarzen Farbwerten verteilt ist.
Wir hätten dies auf verschiedene andere Arten schreiben können, die alle gültig sind:
.conic-gradient {
/* Original example */
background-image: conic-gradient(#fff, #000);
/* Explicitly state the location center point */
background: conic-gradient(at 50% 50%, #fff, #000);
/* Explicitly state the angle of the start color */
background: conic-gradient(from 0deg, #fff, #000);
/* Explicitly state the angle of the start color and center point location */
background: conic-gradient(from 0deg at center, #fff, #000);
/* Explicitly state the angles of both colors as percentages instead of degrees */
background: conic-gradient(#fff 0%, #000 100%);
/* Explicitly state the angle of the starting color in degrees and the ending color by a full turn of the circle */
background: conic-gradient(#fff 0deg, #000 1turn);
}
Wenn wir für die Farben keinen Winkel angeben, wird angenommen, dass der Verlauf gleichmäßig zwischen den Farben aufgeteilt wird, beginnend bei 0deg und endend bei 360deg. Das erzeugt eine harte Grenze, bei der die Farben bei 0deg und 360deg direkt aufeinander stoßen. Wenn unsere Startfarbe irgendwo anders im Kreis beginnen würde, sagen wir ein Viertel des Weges bei 90deg, dann erzeugt das einen glatteren Verlauf und wir bekommen diese coole, kegelartige Perspektive.
.conic-gradient {
background: conic-gradient(from 90deg, #fff, #000);
}

Mit konischen Verläufen können wir Spaß haben. Zum Beispiel können wir damit die gleiche Art von Muster erstellen, die man vielleicht in einem Farbwähler oder dem berüchtigten sich drehenden Apple-Ball-Indikator sieht.
.conic-gradient {
background: conic-gradient(red, yellow, lime, aqua, blue, magenta, red);
}

Oder versuchen wir ein einfaches Tortendiagramm, indem wir harte Stopps zwischen drei Farb-Werten hinzufügen.
.conic-gradient {
background: conic-gradient(lime 40%, yellow 0 70%, red 0);
}

Leider gibt es zum Zeitpunkt der Erstellung dieses Dokuments keine Browserunterstützung für `conic-gradient`. Es ist derzeit Teil der Spezifikation CSS Image and Replaced Content Module Level 4, die sich noch im Arbeitsentwurf befindet. In der Zwischenzeit stellt Lea Verou (die zur Spezifikation beigetragen hat) einen Polyfill zur Verfügung, der sie ermöglicht.
Diese Daten zur Browser-Unterstützung stammen von Caniuse, wo Sie weitere Details finden. Eine Zahl gibt an, dass der Browser die Funktion ab dieser Version unterstützt.
Desktop
| Chrome | Firefox | IE | Edge | Safari |
|---|---|---|---|---|
| 69 | 83 | Nein | 79 | 12.1 |
Mobil / Tablet
| Android Chrome | Android Firefox | Android | iOS Safari |
|---|---|---|---|
| 127 | 127 | 127 | 12.2-12.5 |
Wiederholende Verläufe
Mit *geringfügig* weniger Browserunterstützung gibt es wiederholende Verläufe. Sie sind sowohl in linearen als auch in radialen Varianten verfügbar.
Es gibt einen Trick mit nicht wiederholenden Verläufen, um den Verlauf so zu erstellen, dass er, wenn er ein kleines, winziges Rechteck wäre, mit anderen kleinen, winzigen Rechteckversionen von sich selbst übereinstimmen würde, um ein wiederholendes Muster zu erzeugen. Im Wesentlichen erstellt man diesen Verlauf und setzt `background-size`, um dieses kleine, winzige Rechteck zu erstellen. Das machte es einfach, Streifen zu erzeugen, die man dann drehen oder was auch immer konnte.
Mit `repeating-linear-gradient()` muss man diesen Trick nicht anwenden. Die Größe des Verlaufs wird durch den letzten Farb-Stop bestimmt. Wenn dieser bei 20px liegt, ist die Größe des Verlaufs (der sich dann wiederholt) ein 20px mal 20px Quadrat.
Dasselbe gilt für radial.
Fehlerhaftes Laden von Fallbacks
Wie wir bereits besprochen haben, unterstützen einige sehr alte Browser keine CSS-Gradienten-Syntax. Wenn Sie einen Fallback benötigen, der immer noch ein Verlauf ist, kann ein Bild (.jpg / .png) helfen. Das Beängstigende daran ist, dass einige etwas weniger alte Browser, die gerade erst begannen, CSS-Verläufe zu unterstützen, das Fallback-Bild geladen haben. Das heißt, die HTTP-Anfrage für das Bild wurde gemacht, obwohl der CSS-Verlauf gerendert wurde.
Firefox 3.5.8 tat dies (siehe Screenshot), ebenso wie Chrome 5- und Safari 5.0.1. Siehe

Die gute Nachricht ist, dass dies kein großes Problem mehr darstellt. Die einzigen problematischen Browser waren Chrome und Safari, und Chrome tut dies seit Version 6 nicht mehr, und Safari seit Version 5.1 nicht mehr, seit über drei Jahren.
Additional Resources
- Schnappen Sie sich einen Block des CSS, der alle Präfixe/Syntaxen abdeckt, von CSS3 Please!
- Can I Use zu Verläufen
- Mozilla-Dokumentation für lineare Verläufe, wiederholende lineare Verläufe, radiale Verläufe und wiederholende lineare Verläufe.
- Galerie von Verläufen (man kann verrückte Muster mit Verläufen erstellen)
FYI: Unterschiedliche Syntax für verschiedene Rendering-Engines, „Rendering“ ist falsch geschrieben.
:)
Tolle Veröffentlichung! Ich wünschte wirklich, es gäbe mehr Browser und Benutzer, die CSS3 verwenden würden.
Ja. Es lohnt sich jetzt auf jeden Fall. Mit serverseitiger Skriptsprache und etwas JavaScript erhöht sich die Möglichkeit mit CSS3 exponentiell.
Gut zu wissen.
Jeffrey Way hat vor kurzem ein großartiges Screencast dazu gemacht, hier http://bit.ly/9zFMQR
Vielen Dank für die Veröffentlichung des Links. Die bereitgestellten Informationen waren für mich sehr nützlich, ebenso wie der Artikel selbst. Ich habe viel gelernt.
Toller Artikel, Chris! Ich werde sie auf jeden Fall ausprobieren!
Können wir Mozilla und Webkit nicht bitten (oder sie anzeigen?), das Fallback-Bild nicht anzufordern? So etwas wie ein Bug/Feature-Request?
Kürzere Schreibweise für Firefox, wenn man nicht zu verspielt sein möchte.
Wo man top durch bottom, left oder right ersetzen kann.
Toller Artikel! Webkit hat die beste Syntax.
Schöne Zusammenfassung, aber die Demo für das 180-Grad-Beispiel zeigt in Safari 4.0.4 immer noch 90 Grad an. Außerdem, wenn wir IE (Trident) nicht zu dieser Party einladen, weil es keine Leistungsgewinne gibt, dann gilt das Gleiche für Safari/Webkit, da es ebenfalls das Bild lädt. Des Weiteren, und das habe ich noch nicht getestet, würde die Verwendung eines bedingten Kommentars, um IE mit seinem Filter mit `!important` zu targeten, die Trident-Engine dazu zwingen, den Verlauf anstelle des Bildes zu verwenden?
Das Problem mit Trident ist zweifach:
• Es lädt trotzdem das Fallback-Bild.
• Wenn ein Fallback-Bild deklariert ist, wird dieses anstelle des Verlaufsfilters verwendet.
Also ja, wenn Sie einen Weg finden könnten, es zumindest dazu zu bringen, den Verlaufsfilter anstelle des Bildes zu verwenden, gäbe es einen Vorteil (programmatische Deklaration der Farbe) bei seiner Verwendung. Aber wie in diesem Artikel geschrieben, gibt es keinen.
Wir können IE (vielleicht mit bedingten Kommentaren oder dem Unterstrich-Hack) ansprechen und `background` auf „none“ setzen und den Filter deklarieren. Ein bisschen mehr Arbeit, aber es bedeutet, das Bild nicht zu laden, was sich lohnt.
Entschuldigung! Ich habe Ihren letzten Absatz nicht gesehen.
Es gibt tatsächlich einen proprietären IE-Filter, um Verläufe in IE 5.5+ zu nutzen. Man erhält nur einen Start- und Stoppwert, nicht die feingranulare Kontrolle, die wir in Webkit und Mozilla haben.
und ich gehe davon aus, dass Sie das mit „filter“ meinten.
Ich mag die Fallback-Bildlösung, sie erscheint am logischsten.
Wie Sean erwähnte, gibt es einen kleinen Tippfehler im Demo-Code. Es ist jedoch der Code für 180 Grad, der falsch ist. Webkit-Browser zeigen in beiden Beispielen 90-Grad-Verläufe mit dem aktuellen Code an.
Ich glaube, es sollte heißen:
background-image: -webkit-gradient(linear, 0% 0%, 100% 0%, from(#1a82f7), to(#2F2727)) !important;
oder in diesem Fall einfacher zu verstehen:
background-image: -webkit-gradient(linear, left top, right top, from(#1a82f7), to(#2F2727)) !important;
Danke für einen interessanten Artikel!
Danke, ich habe das korrigiert… es war nur, dass ich damit herumgespielt und Dinge geändert habe, während ich lernte, wie man es benutzt.
Ich werde die Schlüsselwortversion, die Sie vorgeschlagen haben, beibehalten, damit es Beispiele für beide Wege gibt.
Wirklich nützlich zu wissen und definitiv empfehlenswert, jetzt zu implementieren.
Mein Problem mit progressiver Verbesserung war bisher, dass sie nur für persönliche Websites und Blogs praktikabel ist. Versuchen Sie, einem Kunden zu erklären, dass die schönen Verläufe, die er/sie im Mockup sieht, nicht für einen großen Teil der Website-Besucher sichtbar sein werden. Jetzt sehen alle das beabsichtigte Design, ohne auf eine bedingte Stylesheet-Datei zurückgreifen zu müssen.
CSS-Verläufe sind cool und sexy, aber ich bin immer noch nicht überzeugt. Wenn sie nicht über herstellerspezifische Syntax deklariert würden und ihre Syntax standardisiert wäre, würde ich die gesamte Enhancement-Magie nutzen (wie ich es bei rgba() und text-shadow tue). Aber jetzt ist ihr Code für mich zu unübersichtlich. Obwohl die ganze Idee einfach genial ist.
Ich könnte nicht mehr zustimmen. Es ist seltsam, wie alle Semantik- und sauberen Code-Liebhaber diese browserspezifischen „CSS-Hacks“ verwenden.
Während ich es cool finde, fortschrittlich zu bleiben und neue Dinge auszuprobieren, ist es gleichzeitig widersprüchlich.
Ab Safari 5 und Chrome 10 ist die Syntax standardisiert, und da Benutzer dieser Browser stark zum Aktualisieren aufgefordert werden (oder im Fall von Chrome automatisch aktualisiert werden), könnte man argumentieren, dass wir die ältere Webkit-Syntax nicht mehr bereitstellen müssen, sondern uns einfach auf das Bild-Fallback für die winzige Minderheit verlassen, die davon betroffen wäre.
Obwohl ich das großartig finde, habe ich es ein wenig satt, dass all diese Dinge 3 Zeilen in der Stylesheet benötigen, damit sie funktionieren. Diese herstellerspezifische Syntax ist ärgerlich. Und dann muss man noch Umwege für IE-Schrott machen? Bah!
Ich bin bei Mike oben… Wenn Sie einen Kunden haben, der einen älteren Browser verwendet und entweder nicht aufrüsten kann oder nicht will, versuchen Sie ihm zu sagen, dass es für andere großartig aussieht, aber für ihn nur ok.
Oder, hey Herr Kunde, das sieht auf dem von Ihnen verwendeten Browser großartig aus, aber für viele Ihrer Besucher werden einige Dinge fehlen oder anders aussehen.
Kunden wollen das nicht hören. Sie wollen, dass es überall gleich ist. Progressive Enhancement bedeutet ihnen nicht viel. Um es schlimmer zu machen, überwacht das Unternehmen, für das ich arbeite, die Browser, die die Besucher unserer Kunden verwenden… und IE6 ist immer noch bei etwa 25-30 %.
Ich glaube nicht, dass es nützlich ist.
Ein seriöser Webdesigner würde sowieso Sprites verwenden, daher sind Anfragen hier kein Problem (wenn Sie 8 Verläufe auf Ihrer Seite haben, werden Sie wahrscheinlich keine 8 Dateien speichern, wenn Sie Ahnung haben)…
Nicht in IE zu funktionieren ist ein Problem. Nicht richtig in Webkit-basierten Browsern zu funktionieren (immer noch die Anfrage stellen) ist ein Problem.
Ich bleibe bei Sprites. Und die meisten meiner Verläufe haben viele Effekte, die CSS (noch) nicht einfach reproduzieren kann.
Entschuldigen Sie, dass ich Sie korrigieren muss, Chris, aber Firefox 3.6 unterstützt radiale Verläufe.
Die Syntax ist recht einfach: Anstatt `-moz-linear-gradient` zu verwenden, verwendet man einfach `-moz-radial-gradient`.
Schauen Sie sich diesen Artikel mit weiteren Informationen an: CSS Gradients in Firefox 3.6
Sie können sich auch mein Tutorial ansehen: Schöne Photoshop-ähnliche Schaltflächen mit CSS3-Tutorial, das radiale Verläufe in Firefox verwendet.
Trotzdem eine schöne Zusammenfassung von CSS-Verläufen, danke!
Mozilla unterstützt radiale Verläufe, es ist nur eine andere Eigenschaft: `-moz-radial-gradient`.
Schauen Sie sich die Referenzseite im Mozilla Developer Center an.
Ich werde CSS-Verläufe unterstützen, wenn ich nur eine Syntax und keine separaten Browser-Deklarationen benötige.
Derzeit deuten Sie auf verdammt hässliche rechteckige Kästen mit einem Verlauf hin.
Sobald das Design mehr Details erfordert, wird es schwierig.
Ich weiß, dass CSS3 auch Schatten und abgerundete Ecken und alles haben wird, aber wir sind noch weit davon entfernt, dass all diese Features gut zusammenarbeiten (miteinander und mit Fallback-Bildern/-Farben).
Mein Rat wäre also: „Warten“.
Da mein Chef nicht damit einverstanden sein wird, dass eine Website nicht wie das Design aussieht (ja, Pixel für Pixel, und ja, in allen wichtigen Browsern, einschließlich meines schlimmsten Feindes IE6).
Sander
Ich finde es erstaunlich, wie viele Leute gegen die Idee der progressiven Verbesserung sind und wütende Chefs und Kunden anführen.
Aber denken Sie daran…
In diesem Fall ist es nicht „wie es aussieht“ progressive Verbesserung, es ist „wie es funktioniert“ progressive Verbesserung. Da wir Fallbacks verwenden können, wird das Aussehen hier gleich sein.
Es sind solche kleinen Details, die modernes Webdesign so unterhaltsam machen. Die Fähigkeit, diese Dinge außerhalb von Photoshop zu erreichen, wird die Art und Weise, wie Websites gestaltet werden, völlig verändern>
Chris, ich habe den Verläufen einen ernsten Versuch gegeben. Habe es mit aller Kraft versucht. Ich habe festgestellt, dass in vielen Fällen die Spezifikationen für verschiedene Browser nicht gut miteinander harmonierten.
Das heißt, die Angabe für sowohl Mozilla als auch Webkit hat den einen oder anderen ignoriert. Und wenn man Opera mit ins Spiel brachte, wurden sie ALLE ignoriert. Und die vorgeschlagene W3-Spezifikation hinzuzufügen... nun ja... nada.
Ich habe die Spezifikationen in allen Reihenfolgen ausprobiert (die eine zuerst, die andere zuerst, usw.). Ich habe es mit EINEM background-Statement versucht, dann mit einem für jedes. Kein Erfolg. Also gab ich auf und zog mich auf ein Bild zurück.
Ich bin ein Verlaufs-Fan. Ich würde sie LIEBEND gerne über die Spezifikation verwenden. Vielleicht mache ich etwas furchtbar falsch. Aber bisher kein Erfolg.
Da die CSS 3-Unterstützung noch nicht so gut ist, würde ich einen anderen Ansatz vorschlagen – die Verwendung von SVG für Hintergründe mit wenig Javascript (zur Unterstützung aller wichtigen Browser).
Werfen Sie einen Blick auf diesen Artikel auf AListApart.com
http://www.alistapart.com/articles/using-svg-for-flexible-scalable-and-fun-backgrounds-part-i/.
Gute Idee! Daran hätte ich nicht gedacht, weil ich nicht daran gewöhnt bin, mit SVG zu arbeiten. Aber ich werde diesem Ansatz eine Chance geben.
Da bleibt also die Frage:
Warum überhaupt Fallbacks in Kauf nehmen?
Wenn bestimmte Browser nicht alle Aspekte von CSS2 unterstützen und noch nicht beginnen, CSS3 zu unterstützen, warum sollten wir uns dann um ihre Benutzer kümmern?
„Aber dann werden die Dinge nicht gleich aussehen!“
Ich sage: Na und?
Als Designer und Entwickler halte ich es für höchste Zeit, davon abzurücken, alles in jedem Browser gleich aussehen zu lassen. Solange die Einhaltung von Standards und die natürliche Verschlechterung berücksichtigt werden, sollte dies kein Problem sein. Wenn bestimmte Elemente in bestimmten Browsern nicht angezeigt werden, erhalten diese Benutzer eine weniger reichhaltige Benutzererfahrung als andere. Solange die Website weiterhin korrekt funktioniert, spielt das keine Rolle.
Bravo... NICHT. Warum sollten Sie sich um ihre Benutzer kümmern? Weil sie diejenigen sind, für die die Website bestimmt ist!
Ich liebe Progressive Enhancement (nicht Graceful Degradation) und möchte CSS3 wirklich so viel wie möglich nutzen, aber ich werde niemals zulassen, dass ein IE7-Benutzer (zum Beispiel) eine schlechtere *Erfahrung* hat als ein Chrome-Benutzer, nur um auf dem neuesten Stand zu sein.
Wenn einer meiner Designer ein tolles Design erstellt hat, dann sollen meiner Meinung nach so viele Menschen wie möglich die Gelegenheit bekommen, es zu erleben.
Und oft sieht die „gracefully degraded“-Version schockierend aus – nehmen Sie die abgerundeten Ecken, den Verlauf und den Schatten von einem Button weg, und alles, was Sie bekommen, ist eine Box.
So, das kleine Gejammer ist vorbei, vielen Dank Chris! Ein sehr informativer Beitrag!
Ich stehe irgendwo in der Mitte. Graceful Degradation sollte professionell betrachtet werden. Man sollte sich seinen Zielmarkt/seine Benutzerbasis/sein Budget ansehen und bewerten, wie viel Zeit für Verbesserungen für ältere Browser aufgewendet werden sollte.
@Matt – Glauben Sie mir, Sie werden von Kunden hören, wenn Sie eine Website erstellen, die in Ihrem Browser so aussieht, wie sie soll, und nicht in ihrem.
@Jonathan – Ich würde nicht so weit gehen zu sagen, dass ein Benutzer unter mangelndem Design „leidet“. Ich stimme zu, dass Websites in älteren Browsern immer noch einigermaßen attraktiv aussehen sollten, aber es ist durchaus akzeptabel, mit einem begrenzten Budget älteren Browsern mitzuteilen, dass sie bei einem Upgrade die „vollständige“ Erfahrung genießen können.
Guter Beitrag Chris.
Toller Artikel Chris! Ich muss das ausprobieren.
Ich bin sicher, die meisten hier haben modernizr gesehen, das erkennt, welche Browser welche HTML5- und CSS3-Eigenschaften unterstützen. Das löst das Problem des Fallback-Bildes, führt aber eine 3,9 KB große JS-Datei mit dem HTTP-Request und der Client-seitigen Verarbeitung ein. Ich bin neugierig, wie andere hier über Modernizr denken und ob es den Request, die Größe und die Verarbeitung wert ist.
Eines der Dinge, die wir uns für Modernizr 2.0 wünschen, ist ein Build-System, damit Sie nur die Tests einbeziehen können, die Sie möchten.
Bis dahin denke ich, es ist völlig in Ordnung, die Erkennungstechnik zu verwenden, die wir intern selbst nutzen.
Und außerdem sind 3,9k nicht so riesig. :)
Es ist sehr aufregend, von Version 2.0 zu hören! 3,9k ist meiner Meinung nach winzig und ich benutze es auf all meinen neuen Websites. Ich wollte herausfinden, was andere gedacht haben, die es benutzt haben oder darüber nachgedacht haben, es zu benutzen.
Höchstwahrscheinlich, wenn Sie CSS3-Verläufe verwenden, verwenden Sie auch andere CSS3-Funktionen wie border-radius, box-shadow usw., was meiner Meinung nach die JS-Datei mehr als rechtfertigt. Ich bin noch kein Optimierungsexperte.
Ich muss mich aufraffen und mit Modernizr anfangen... Ich mag alles daran.
Wenn es darum geht, einige dieser cooleren CSS3-Technologien in ihren frühen Stadien zu verwenden, ist die andere Frage, die Sie sich vielleicht stellen möchten, wie gut und schnell der Browser das CSS3 rendert.
Wenn die CSS3-Abkürzung länger dauert als der eigentliche Bildabruf, können wir genauso gut das Bild abrufen.
Was die browserspezifischen Deklarationen angeht, wäre etwas wie http://lesscss.org/ ideal.
großartig, danke, ich werde definitiv anfangen, CS3 zu verwenden, gibt es Cross-Browser-Probleme mit CSS3?
Habe hier einen schönen interaktiven Gradientengenerator gefunden: http://gradients.glrzad.com/
Ich bevorzuge
http://westciv.com/tools/gradients/index.html
Die Liste hat mir sehr geholfen.
Danke für das Teilen!
Ich habe kürzlich Verläufe für eine Website verwendet, da sie visuell vorteilhaft sind, da sich der Verlauf dehnen kann, um die Höhe beispielsweise eines Hintergrunds anzupassen. Hier ist die Website
http://www.bronzetouchwf.com/
Vergleichen Sie eine kurze Seite mit einer langen oder verwenden Sie Strg+Mausrad (funktioniert in Chrome unter Windows), um herauszuzoomen (Dokument > Zoomen, um das zu beheben).
Es ist subtil, aber schön... Vergleichen Sie es mit IE oder einem anderen Browser ohne Verläufe und Sie können den Unterschied sehen.
Benutze es bereits. Verbreiten Sie die Nachricht!
Ich stimme dem „benutze es bereits“ zu
Chris, wie immer gute Arbeit, vielen Dank
Ich kann ziemlich faul werden, wenn ich sogar nur ein einfaches Bild erstellen muss, indem ich Photoshop aufrufe. CSS-Verläufe sind so viel einfacher und ich bin bereit, das mit einer soliden Farbe zu sichern für Leute, die den Verlauf sehen können.
Außerdem habe ich ein kleines Dienstprogramm geschrieben, um verschiedene Webstatistiken anzuzeigen, und ich hasse es zu sehen, wie Bildressourcen die Liste der meisten HTTP-Anfragen anführen. Ich bin gerade dabei, Bildressourcen zu kürzen, wo ich kann. Das hilft definitiv dabei.
Nur eine seltsame Anmerkung, aber sieht der Fußbereich dieser Website in IE7 für jemanden komisch aus?
nm... es ist, wenn man die Fenstergröße verkleinert. Der Fußbereich bewegt sich nicht.
Ich habe letzten Monat angefangen, CSS-Verläufe zu verwenden, nachdem ich ein paar Nettut-Artikel darüber gesehen hatte.
Bisher habe ich sie nur für Drop-Schatten auf Divs verwendet, um ein wenig Tiefe für Leute mit Firefox, Chrome und Safari zu erzielen. Ich vermeide es jedoch, sie für Elemente zu verwenden, die davon abhängig sind.
Die Frage, die ich mir stelle: „Würde die Kunst darunter leiden?“ Wenn die Antwort „Ja“ lautet, verwende ich ältere, zuverlässigere Methoden auf Kosten der Seitenladezeit.
Schön! Ich habe gezögert, CSS-Verläufe mit einem Fallback zu verwenden, da die meisten Browser, die ich getestet habe, das Bild sowieso heruntergeladen haben.
Es ist nur ein Browser und nur ein HTTP-Request, aber es kostet nicht viel Mühe und wird Leistungsgewinne bringen
Sehr schöner Artikel. Ich werde das auf jeden Fall ausprobieren.
Ich benutze derzeit JS-Verläufe, es funktioniert in allen Browsern mit der gleichen Syntax, und es ist für mich einfach, alles leichter zu laden. SVG zu verwenden ist auch ein großer Vorteil, aber es funktioniert nicht in IE ohne ein Adobe-Plugin
Eine weitere Möglichkeit, sie zu betrachten, ist, dass wenn Sie subtile Verläufe in Ihrer Website verwenden, der Fallback kein Verlauf sein kann, sondern nur eine solide Farbe. Die Website wird also in IE8 und früher, FF3.5 und früher, Opera 9 und früher usw. nicht gut aussehen. Jeder Browser, der kein CSS3 (auch nicht teilweise) unterstützt und die Verlaufsregel nicht unterstützt, sieht eine solide Farbe. Aber sehr bald wird IE9 veröffentlicht, und vielleicht in anderthalb Jahren könnte dieser subtile Verlaufs-Fallback, einfach eine solide Farbe, akzeptabel sein.
Toller Artikel Chris. Ich werde einige CSS3-Verläufe in mein nächstes Projekt einbauen
-Anthony
Toller Artikel! Ich habe vor einiger Zeit viel Zeit damit verbracht, und ich wünschte, ich hätte Ihren Artikel früher gefunden – er hätte mir viel Zeit gespart.
Für diejenigen, die nicht zu viel Zeit mit dem Erstellen ihrer CSS-Verläufe verbringen wollen (wie ich), habe ich ein kleines Werkzeug erstellt
http://www.display-inline.fr/projects/css-gradient/
Es gibt auch Unterstützung für Opera-Verläufe, die SVG-Hintergründe verwenden.
Hallo Chris, schöner Bericht!
Ich füge nur eine neue Wendung hinzu: Wie wäre es, Ihren Verlauf als data-URI direkt in Ihre background-Eigenschaft einzubetten? Das würde auch Bandbreite sparen und in allen modernen Browsern funktionieren (außer..., IE natürlich).
Zusätzlich könnten Sie dann den IE-Filter anwenden, da IE diese „seltsame“ background-Eigenschaft nicht versteht.
PS: Ja, IE kennt das proprietäre Data-URI-Äquivalent von MHTML, aber das ist unter IE7 auf >= Vista fehlerhaft...
Danke für diesen Artikel und besonders für die Demo. Wenn ich einen Verlauf erstellen muss, gehe ich zu Ihrer Demo und kopiere den Code. Das ist sehr nützlich!
Es scheint, dass dieser Fallback nicht nur mit Verläufen funktioniert, sondern auch mit RGBA-Hintergründen.
Zum Beispiel, wenn Sie einen halbtransparenten Hintergrund wünschen, können Sie verwenden
Firefox 3.6 lädt das Hintergrundbild nicht herunter.
Danke für den großartigen Beitrag.
FYI, ich habe einen kleinen Tippfehler im Link „Demo anzeigen“ oben gesehen. Bei /examples/CSS3Gradient/ haben Sie auf dieser Seite dieselben Webkit-Eigenschaften für zwei Verläufe, obwohl die Verläufe unterschiedlich sind.
Toller Beitrag! Ich habe etwas mehr über CSS 3-Verläufe gelernt.
Wenn Sie verwenden
-webkit-gradient(linear, 0 0, 0 100, from(#0f82f7), to(#072727));anstelle von
-webkit-gradient(linear, 0% 0%, 0% 100%, from(#0f82f7), to(#072727));Der Verlauf wird sich nicht dehnen.
Sie können SVG für den Fallback wie folgt verwenden:
background-image:url('data:image/svg+xml,');Das heißt, schreiben Sie übliches SVG als data:url, Sie müssen nur „#“ durch „%23“ ersetzen. Vorteile: Sie können Verläufe direkt in CSS ändern. Nachteile: sehr große Syntax.
Falscher Code, der richtige
background-image:url(‘data:image/svg+xml,<svg xmlns=”http://www.w3.org/2000/svg”><defs><linearGradient id=”g” x2=”0″ y2=”100%”><stop offset=”0″ stop-color=”%232F2727″/><stop offset=”100%” stop-color=”%231a82f7″/></linearGradient></defs><rect width=”100%” height=”100%” style=”fill:url(%23g)”/></svg>’);
Ich verstehe es nicht. Wenn ein Bild nicht unterstützt wird, warum fügen Sie dann ein weiteres Bild hinzu?
Vielen Dank! Sie haben mir gerade etwa dreizehn Monate erspart, in denen ich versucht habe, das selbst herauszufinden!
CSS-Verläufe werden endlich ziemlich gut unterstützt, danke für den Hinweis.
Nur eine Sache, Mozilla ist keine Rendering-Engine, es heißt Gecko.
Nun gut, um den Kommentar von Sunny Singh zu ergänzen: Opera ist keine Rendering-Engine, es heißt Presto (Layout-Engine). =)
Ich benutze CSS3 Gradients, Opera, Safari und Mozilla unterstützen sie großartig..
Ich benutze einen Gradientengenerator, der moz und webkit Gradienten generiert, und einen Filter für IE.. aber trotzdem lösche ich den Filter für IE und gehe zu Bildern..
Ja, der CSS wird riesig, wenn ich jedes Mal 3-4 Hintergründe für dasselbe Element angeben muss. Aber es ist nicht die gleiche Größe wie das Hintergrundbild, und ich schreibe meinen Code ordentlich, also leicht zu aktualisieren, ich spare die Anfragen bei Browsern, die es unterstützen, und etwas Datenverkehr. Warum also nicht nutzen, denke ich nur..
Wenn möglich, werde ich nie Photoshop öffnen, wenn ich Websites erstelle... weil ich die benötigten Grafiken codieren kann, und um Chrome und IE usw. zu reparieren, mache ich einen schönen Screenshot von der Website. Ich beginne dann, die Grafiken in Vorschau auf dem Mac zu schneiden. Funktioniert großartig. Und dann optimiere ich die Bilder danach, damit es perfekt funktioniert :)
Das ist meine Art, Websites zu erstellen, und sie sind irgendwie schnell :)
Wenn Sie Fallback-Bilder als Daten-URI einfügen, laden alle Browser sie und überspringen CSS-Verläufe. Das Hinzufügen von !important zu Gradientendeklarationen zwingt Browser, sie zu verwenden. Außerdem funktioniert in IE9, wenn Sie IE-Filter und abgerundete Ecken verwenden, das einfach nicht. IE9 schneidet den Hintergrund nicht am Rand ab.
Eine einfache Abhilfe ist, Verläufe für unterstützte Browser und Fallback-Bilder in einem bedingten IE-Stylesheet zu deklarieren. Die Leistung von IE wird leiden, aber das ist nur der Preis für die Nutzung eines schlechten Browsers.
Noch ein toller Trick hier... die Demo ist gut, hoffe, den Quellcode herunterladen zu können, damit ich ihn sofort testen kann.
Ich habe kürzlich begonnen, CSS-Verläufe zu verwenden, und abgesehen von der browserspezifischen Syntax (http://www.colorzilla.com/gradient-editor/ hilft sehr) funktionieren sie großartig.
Der größte Vorteil gegenüber Sprites ist, dass sie vertikal skalierbar sind. Selbst IE6 funktioniert einwandfrei mit linearen Verläufen, was wahrscheinlich die häufigste Anwendung dafür ist.
Ich verwende Verläufe im Menü für unsere Website. Ich wollte die Bildnutzung mit CSS3-Techniken (viele davon habe ich von Ihnen gelernt) so gering wie möglich halten. Das Ergebnis ist für mich tatsächlich eine Website, die weitaus visuell ansprechender, befriedigender und erfolgreicher in ihren Zielen ist als mit der vollen Macht von Photoshop, die mir zur Verfügung stand. Die Nichtverwendung von Bildern ist argumentativ einschränkender, aber dann hat die Implementierung mich fast gezwungen, ein saubereres und funktionaleres Design zu erstellen, das nicht übermäßig mit visuellen Goodies überladen ist.
Beim Fallback bleibe ich bei einer soliden Farbe.
Wo hast du Opera 11.10 gefunden?
Link im Fußbereich von Opera.com
Hier ist ein interessanter Artikel, den ich darüber gefunden habe, wie man SVG verwendet, um Verläufe in IE9 auf nicht-ms-filter-Weise zum Laufen zu bringen
http://css3wizardry.com/2010/10/29/css-gradients-for-ie9/
Ich habe es noch nicht ausprobiert, weiß nicht, wie es sich auf HTTP-Anfragen auswirkt und fügt möglicherweise nur eine unnötige Komplexitätsebene hinzu, aber es könnte sich lohnen, es zu untersuchen?
Ich freue mich zu sehen, dass Sie die IE9 SVG-Korrektur für die Verwendung von Verläufen nicht verwendet haben. Ich glaube, ein alternatives (altmodisches) Hintergrundbild ist in Ordnung.
Das ist die richtige Lösung, danke und sie funktioniert auch für meine neuen Websites. Ich habe immer danach gesucht und es gab keine Lösung für pagespeed.
Ich habe versucht, einen Farbverlauf als Hintergrund für eine Website zu implementieren, an der ich gerade arbeite, aber ich habe nicht viel bezüglich Cross-Browser-Unterstützung gefunden.
http://www.denisebeaudet.com/new-index.html
Zum Beispiel: Dies funktioniert in FF4 auf einem Mac gut und ist für FF4 für Windows nicht existent. Nervig.
Das andere, was ziemlich störend ist, ist der fehlerhafte Aspekt, dass, wenn Ihr Browserfenster weniger als Vollbild ist und Sie dann nach unten scrollen, um zu sehen, was „unter dem Fold“ ist (d.h. unter dem unteren Rand des Ansichtsfensters), es zum Startfarbton zurückkehrt. Sehr nervig und visuell störend.
Ideen? Bitte?
Danke!
Die Verwendung des richtigen Codes würde wahrscheinlich helfen. Sie haben die neue Syntax für Chrome vergessen, Sie brauchen die alte Syntax für Chrome nicht wirklich (meiner Meinung nach), da Chrome automatisch aktualisiert. Sie verwenden auch SVG für Opera, warum? Verläufe werden in Opera unterstützt.
Gehen Sie diesen Artikel durch und lesen Sie alles noch einmal, Sie werden Ihre Probleme ziemlich schnell sehen.
Nun, es wird sicherlich die Geschwindigkeit Ihrer Website erhöhen. Aber was ist mit den Kompatibilitätsproblemen? Für IE müssen wir den JS-Code verwenden, um den BG-Verlauf zu erhalten.
Vielen Dank für diesen Artikel.
Ich verwende einige Verläufe auf meiner neuesten Website.
Es funktioniert großartig.
Traurigerweise gibt es immer noch Leute, die mit IE6 auf meinen Websites surfen.
Aber mit nur 3% bin ich einer der Glücklichen.
Genial!!! Danke für die Aufschlüsselung!
Wirklich cooler Trick, den ich nicht kannte. Ich denke, ich werde es auf einer meiner Websites ausprobieren.
Nur eine Anmerkung: Obwohl Sie IE abgetan haben, kann ich das nicht tun, da 95 % unserer Besucher IE7-9 verwenden. Ich habe festgestellt, dass einfache lineare Verläufe wie folgt verwendet werden können:
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=’#FFFAE5′, endColorstr=’#FFDB95′);
Ich hoffe, das hilft einigen Benutzern, die in der realen Welt leben müssen.
Dick
Das Web ist gerade viel bunter geworden. Ich habe ein Tool, das den CSS-Code für jeden linearen Verlauf generiert – und den Verlauf auch in IE6 mit einer einfachen Verhalten-Datei, die ich für IE geschrieben habe, erstellt.
Viel Spaß (siehe Link in meinen Kontaktdaten)!
Ron
Tolle Ressource und Tipps für Verläufe. Ich habe jedoch daran gearbeitet, Rauschen zu einem CSS-Verlauf hinzuzufügen und online nicht viel Hilfe gefunden, daher wollte ich meine Lösung teilen.
Wow! CSS3 ist wie Magie! Danke für dieses Tutorial!
Sie können fast 100 % der Verläufe unterstützenden Browser mit nur zwei Zeilen abdecken.
Die erste Zeile ist nur für iOS 6-, Safari 6.1- und Android 4.3- notwendig.
Wie Sie bereits erwähnt haben, ist der `filter` für IE hässlich (übrigens geht es nicht nur um Leistung – er deaktiviert auch ClearType), daher benötigen Sie Fallback-Bilder, wenn Ihre Verläufe kritisch und nicht rein dekorativ sind.
Diese Fallback-Bilder decken auch den extrem geringen Prozentsatz von Browsern ab, die immer noch Präfixe benötigen, wie ältere Versionen von Desktop-Opera (`-o-`), Konquerer (`-khtml-`) und Personen, die keine automatischen Updates für Chrome und Firefox erhalten (laut StatCounter kaum jemand).
Für Opera Mini (wo wir den HTTP-Request für das Bild vermeiden wollen) gibt es keine Hilfe, da es `linear-gradient` mit oder ohne Präfix nicht unterstützt.
Viele Seiten enthalten die `-ms-`-Variante, aber diese war nur für eine Entwicklervorschau von IE 10 notwendig, nicht für eine öffentliche Veröffentlichung.
Kleine Klarstellungen
Denken Sie daran, sehr vorsichtig mit der Tweener-Syntax umzugehen. Für Ihr Beispiel von oben nach unten ist das in Ordnung, aber ich möchte nicht, dass Leute denken: „Oh, ich werde nur das Präfixieren selbst mit der Syntax, die ich bereits kenne, handhaben... und das hier machen.
Denn das wird nicht funktionieren. Die ungepräfixte Version verwendet dort die Tweener-Syntax und bricht sie. Sie müssen Folgendes tun:
was ich persönlich schwer zu merken und leicht zu vermasseln fand.
Außerdem bin ich mir nicht sicher, ob es jemals einen öffentlichen Browser gab, der `-khtml-` für Verläufe benötigte, oder?
Tolle neue Tools: Gradient Generator
Bitte nehmen Sie es nicht persönlich. Ich bevorzuge vorerst immer noch die Version mit Hintergrundbild. Jedenfalls kann ich die Bildgröße immer noch auf 1 Pixel Breite einstellen und sie in eine
base64-Version umwandeln.Besser für die Kontrolle, aber vielleicht nicht für die Leistung. Die Verwendung von CSS-Verläufen (insbesondere mehrerer CSS-Verläufe) macht die Webseiten schwer zu scrollen.
CSS-Verläufe sind wahrscheinlich nur dann geeignet, wenn sie für skalierbare Verläufe auf der Containergröße verwendet werden, die nicht fest ist. Tatsächlich erstelle ich Verläufe häufiger für eine feste Größe oder eine bestimmte Höhe und lasse den Rest als reine Farbe ohne Verläufe.
Ich müsste einige reale Tests sehen, die beweisen, dass Bildverläufe für die Scroll-Leistung besser sind. Haben Sie einen zur Verfügung? Ich bin sicher, es ist möglich, aber ich mag es nicht, solche Aussagen herumzuwerfen.
Entschuldigung. Verschiedene Betriebssysteme können zu unterschiedlichen Ergebnissen führen. Zumindest ist das mein Gefühl (langsam). Wenn ich auf Google nach dem Stichwort CSS3+gradient+slow+scroll suche, erhalte ich einige dieser Links
http://stackoverflow.com/a/4023133/1163000
https://bugzilla.mozilla.org/show_bug.cgi?id=657603
http://yannesposito.com/Scratch/en/blog/2010-07-07-CSS-rendering-problems-by-navigator
http://www.tricedesigns.com/2013/03/11/performance-ux-considerations-for-successful-phonegap-apps (siehe unter Keep Graphics Simple)
Als Live-Beispiel können Sie versuchen, http://lea.verou.me/css3patterns mit einem ziemlich kleinen Bildschirm zu besuchen, dann nach unten scrollen und fühlen.
Klicken Sie dann auf das Muster Carbon oder Carbon Fibre, scrollen Sie erneut und fühlen Sie.
Beispielseite für Bildmuster mit besserer Scroll-Leistung: http://subtlepatterns.com
CodePen-Beispiel: Hintergrundbild vs. CSS3-Verlauf
Ich bin überrascht, dass niemand CSS3Pie erwähnt hat, das CSS3-Verläufe ziemlich gut für ältere IE-Browser bereitstellt.
CSS3 Pie verwendet auch IE-Filter, um die Verläufe im alten IE zu realisieren, aber wir können sie selbst schreiben (wenn wir wirklich, wirklich müssen).
Ich hatte Probleme mit der Farb-Fallback-Unterstützung, insbesondere mit IE7 und IE8, bei der Verwendung von
backgroundoderbackground-image. Daher schreibe ich meinen Code beginnend wie folgthttp://codepen.io/anon/pen/cuCql
Anstatt zweier Hintergrund-Eigenschaften für Fallback und SVG, setze sie auf eine Zeile. Das funktioniert einwandfrei für ältere IE und SVG funktioniert für IE9.
Ich komme normalerweise nicht hierher, um zu kommentieren, aber dieser Artikel ist so vollständig und durchdacht, dass ich mich bedanken musste: Danke, Mann!
Das ist großartig. Aber es funktioniert nicht in IE9. Haben Sie eine Regel für IE9?
Großartige Aktualisierung des neuen Weges für CSS-Verläufe, Chris. Sie haben wirklich großartige und gründliche Arbeit geleistet, machen Sie weiter so!
Hier ist etwas, das ich immer benutze, um sie für mich zu generieren: http://colorzilla.com/gradient-editor/.
Es generiert Ihnen den CSS-Code mit optionaler IE9-Unterstützung.
Ich denke, die Verwendung von Bildern anstelle von CSS-Eigenschaften hat ihre Vor- und Nachteile. Erstens macht die Verwendung von CSS zum Erstellen von Verläufen es schwieriger, dass sie in alten Browsern und Computern funktionieren. Ich neige normalerweise dazu, Photoshop anstelle von CSS-Eigenschaften für Verläufe zu verwenden. Die Verwendung von CSS ist schnell, ohne dass eine Drittanbietersoftware wie Photoshop oder andere Grafikprogramme benötigt wird.
Das ist es, was ich benutze (mit LESS)
Und dann rufe ich das einfach überall auf, wo ich den Verlauf als Hintergrund brauche
Im Artikel gibt es einen Fehler. Seit Version 11.60 unterstützt Opera die neue "to"-Syntax für Verläufe. Und seit 12.10 sind die Gradienten-Eigenschaften ungeprefixter. Sie wären nicht ungeprefixter, wenn sie eine veraltete, von der standardisierten abweichende Syntax hätten.
Die neueste Presto-basierte Opera-Version unterstützt jede gradientenbezogene Funktion (linear und radial, optional wiederholt) und ist diesbezüglich mit den W3C-Standards kompatibel.
Die richtige Liste wäre also
11.00-: Keine Unterstützung
11.10-11.50: Tweener, geprefixt, nur linear
11.60-12.00: Neu und Legacy Tweener, geprefixt, Radial hinzugefügt
12.10-12.16, 15+: Neu, ungeprefixt
Version 12.16 wird immer noch verwendet, daher ist sie relevant.
(Auch ein kleiner Tippfehler: „wiederholte liner-Verläufe“)
Wow! Das ist das erste Mal, dass ich von RADIAL-Verläufen höre. Das ist ziemlich großartig. Ich werde es auf jeden Fall ausprobieren. Ehrlich gesagt erinnere ich mich einmal, wie man einen ziemlich browserfreundlichen Verlauf schreibt. Aber jetzt benutze ich einfach ein Online-Tool, um alles für mich zu generieren.
Ja, da stimme ich zu. Ziemlich cool, dass man so etwas erstellen und all diese Bilder loswerden kann.
Es ist auch toll zu sehen, dass viele Browser keine Vendor-Präfixe mehr benötigen. Reduziert definitiv die Dateigrößen.
Tolle Demo, ich suchte nach einem umfassenden Skript, das ich in unserem neuen Design für einen blauen Himmelverlauf implementieren kann. Ich hoffe, es gibt keine Einschränkungen bei einigen Browsern.
Ich mag es nicht, über Anforderungen wie mögliche Fallbacks nachzudenken. Hoffentlich kann ich eines Tages LESS und ähnliches vergessen und moderner und intuitiver sein. Wir sind auf dem richtigen Weg. Jedenfalls war „repeating-radial-gradient“ für mich neu.
Großartig, dass man Grad-Angaben machen und auch radiale Verläufe verwenden kann.