CSS und Web

CSS linear-gradient(): der vollständige Leitfaden

Jeder Teil von linear-gradient() erklärt, mit einem Live-Beispiel neben dem Code: von der Standardrichtung über harte Stopps und geschichteten Glanz bis zu weicheren OKLCH-Mischungen.

GradientlyVerifiziertes Gradiently-Konto··6 Min. Lesezeit
Cover: Waking Hour · GR·RKP7·GN

Die Kurzfassung

  • Ein linearer CSS-Farbverlauf ist ein Bild, das der Browser entlang einer geraden Linie zeichnet, geschrieben mit der Funktion linear-gradient() und überall einsetzbar, wo ein Bild akzeptiert wird, meist bei background-image.
  • Ohne Richtung läuft ein linearer Verlauf von oben nach unten, das entspricht 180deg; 0deg zeigt nach oben, und Winkel drehen im Uhrzeigersinn.
  • Farbstopps ohne Positionen werden gleichmäßig verteilt, und zwei Stopps an derselben Position ergeben eine harte Kante statt einer Mischung.
  • Mehrere Farbverläufe lassen sich in einem background-image schichten, durch Kommas getrennt, wobei der erste oben gezeichnet wird.
  • Eine Interpolationsmethode wie in oklch hält die Mitte einer Mischung leuchtend, statt sie grau werden zu lassen.
Auf dieser Seite

Ein linearer CSS-Farbverlauf ist ein Bild, das der Browser entlang einer geraden Linie zeichnet und dabei von einer Farbe zur nächsten überblendet. Du schreibst ihn mit der Funktion linear-gradient() und nutzt ihn überall, wo CSS ein Bild annimmt, meist bei background-image. Er braucht keine Datei, skaliert auf jede Größe ohne Unschärfe und kostet nichts beim Herunterladen. Die kürzeste brauchbare Version sind zwei Farben: linear-gradient(#0f172a, #38bdf8) blendet von tiefem Marineblau oben zu Himmelblau unten über.

css
.hero {
  background-color: #0f172a; /* shown if the gradient fails */
  background-image: linear-gradient(#0f172a, #38bdf8);
}
Der einfachste lineare Farbverlauf: zwei Farben, Standardrichtung, darunter eine einfarbige Fläche als Fallback.
Marine bis Himmel, von oben nach untenlinear-gradient(#0f172a, #38bdf8)
Der Code von oben, gerendert. Keine Richtung bedeutet von oben nach unten.

Dieser Leitfaden geht jeden Teil der Funktion in der Reihenfolge durch, in der du ihm begegnest. Willst du das größere Bild, wie lineare Verläufe im Vergleich zu radialen, konischen und Mesh-Mischungen stehen, beginne mit den Arten von Farbverläufen.

Die Syntax von linear-gradient()

Die Funktion nimmt eine optionale Richtung, eine optionale Methode zur Farbinterpolation und dann eine Liste von mindestens zwei Farbstopps. Alles wird durch Kommas getrennt, außer Richtung und Interpolationsmethode, die sich das erste Argument teilen.

TeilBeispielWas er tut
Richtung als Winkel135deg, 0.25turnLegt den Winkel der Verlaufslinie fest. 0deg zeigt nach oben, Winkel drehen im Uhrzeigersinn.
Richtung als Schlüsselwörterto right, to top leftRichtet die Linie auf eine Seite oder Ecke der Box.
Interpolationsmethodein oklch, in srgbWählt den Farbraum, in dem die Mischung berechnet wird.
Farbstopp#38bdf8 40%Eine Farbe, optional mit einer oder zwei Positionen entlang der Linie.
Farb-Hint30% zwischen zwei StoppsVerschiebt den Halbwegspunkt der Mischung zwischen ihren Nachbarn.
Die Teile von linear-gradient() in der Reihenfolge ihres Auftretens. Nur die Farbstopps sind Pflicht.

Die vollständige Referenz steht auf der MDN-Seite zu linear-gradient(), die auch die genaue Grammatik aus der CSS-Images-Spezifikation dokumentiert.

Verlaufswinkel und Richtungsschlüsselwörter

Winkel folgen einem Kompass: 0deg zeigt nach oben, 90deg nach rechts, 180deg nach unten und 270deg nach links. Der Verlauf beginnt auf der gegenüberliegenden Seite und läuft in die angegebene Richtung, 90deg läuft also von links nach rechts. Du kannst auch turn, rad oder grad schreiben, wobei 0.25turn gleich 90deg ist. Der Standard, wenn du nichts angibst, ist to bottom.

Ein Paar aus Indigo und Pink in vier Winkeln. Die erste Farbe sitzt immer am Anfang der Linie.

Eck-Schlüsselwörter sind nicht dasselbe wie 45-Grad-Winkel. to top right neigt die Linie so, dass die mittlere Farbe genau zwischen den anderen zwei Ecken verläuft, egal welche Form die Box hat. Bei einem breiten Banner ist diese Linie viel flacher als 45deg, das immer auf 45 Grad zeigt und die Form der Box ignoriert. Nutze Schlüsselwörter, wenn die Mischung die Ecken respektieren soll, und Winkel, wenn mehrere Elemente unterschiedlicher Form eine Richtung teilen sollen. Mehr zur Wahl von Richtungen steht in Verlaufswinkel.

Farbstopps, Positionen und Hints

Stopps ohne Positionen werden gleichmäßig verteilt, drei Farben sitzen also bei 0 %, 50 % und 100 %. Gib einem Stopp eine Position in Prozent oder eine Länge, um ihn zu verschieben. Gibst du ihm zwei Positionen, hält die Farbe dazwischen einfarbig. Setzt du einen einzelnen Prozentwert zwischen zwei Stopps, wird er zum Hint: der Punkt, an dem die Mischung ihre Halbwegsfarbe erreicht, was eine Seite des Übergangs schneller macht als die andere.

css
/* even spacing */
background-image: linear-gradient(90deg, #0c4a6e, #22d3ee, #f0f9ff);

/* a hint: the midpoint arrives early, at 20% */
background-image: linear-gradient(90deg, #0c4a6e, 20%, #22d3ee);

/* two positions: cyan holds solid from 35% to 65% */
background-image: linear-gradient(90deg, #0c4a6e, #22d3ee 35% 65%, #f0f9ff);
Drei Wege, dieselbe Mischung zu formen. Positionen können auch Längen wie 120px sein.
Dieselbe Palette von tiefem Ozean bis Eis, durch Positionen und Hints auf drei Arten geformt.

Harte Stopps für Streifen und Teilungen

Teilen sich zwei Stopps eine Position, bleibt kein Raum für eine Mischung, und du bekommst eine scharfe Kante. Browser begrenzen zudem einen Stopp, der vor dem vorherigen liegt, was eine praktische Abkürzung ergibt: #f97316 50%, #1e293b 0 heißt, dass die zweite Farbe genau dort beginnt, wo die erste endet. Wiederhole die Idee mit repeating-linear-gradient(), und du hast Streifen.

Harte Stopps zeichnen Formen statt Mischungen. Viele weitere stehen in CSS-Muster.

Mehrere Farbverläufe in einem Hintergrund schichten

background-image akzeptiert eine durch Kommas getrennte Liste, und das erste Bild wird oben gezeichnet. Ebenen scheinen nur dort durcheinander, wo sie transparent sind, daher blenden die oberen Verläufe meist zu transparent aus. Moderne Browser mischen mit vormultipliziertem Alpha, sodass das Ausblenden zu transparent keinen grauen Stich mehr in die Farbe zieht wie früher. Kombiniere Ebenen mit background-size und background-repeat, wenn eine Ebene nur einen Teil der Box bedecken soll.

css
.card {
  background-color: #111827;
  background-image:
    /* top: a soft sheen across the upper third */
    linear-gradient(180deg, rgb(255 255 255 / 0.12), transparent 35%),
    /* bottom: the colour itself */
    linear-gradient(135deg, #312e81, #7c3aed 55%, #db2777);
}
Ein Glanz über einem Basisverlauf. Der erste Verlauf in der Liste wird oben gezeichnet.

Schichten ist auch die Grundlage reicherer Effekte: Geschichtete radiale Leuchten ergeben einen Mesh-Verlauf in CSS, und eine dünne Rauschebene darüber verbirgt Stufen, wie in Banding im Farbverlauf erklärt.

Weichere Mischungen durch Farbinterpolation

Ist jede Farbe in einem älteren Format wie Hex, rgb() oder hsl() geschrieben, mischt der Browser aus Gründen der Abwärtskompatibilität in sRGB. sRGB-Mischungen zwischen weit entfernten Farbtönen führen durch stumpfe, gräuliche Mitten: Blau zu Gelb ist der klassische Fall. in oklab oder in oklch verlangt einen wahrnehmungsbasierten Farbraum, der die Mitte heller und gleichmäßiger hält. Der eigene Leitfaden zu OKLCH-Farbverläufen in CSS behandelt Farbtonrichtungen und Fallbacks.

Blau zu Gelb auf drei Arten. Nur die Interpolationsmethode ändert sich.

Vermeiden

  • Lange Mischungen zwischen Gegenfarben in schlichtem sRGB
  • to top right, wenn mehrere unterschiedlich geformte Karten eine Richtung teilen sollen
  • Zu white ausblenden, wenn du ausblenden willst; nimm transparent
  • Sehr weiche, dunkle, breite Mischungen ohne Körnung, die auf vielen Bildschirmen Banding zeigen

Besser

  • in oklch oder einen mittleren Stopp ergänzen, damit Mischungen lebhaft bleiben
  • Einen Winkel wie 135deg für ein einheitliches System nutzen
  • Ebenen zu transparent ausblenden, damit das Darunterliegende durchscheint
  • Eine zarte Rauschebene über große dunkle Verläufe legen

Browserunterstützung und Fallbacks

linear-gradient() funktioniert ohne Präfix in jedem aktuellen Browser, die alten -webkit--Versionen können also weg. Interpolationsmethoden, Stopps mit zwei Positionen und Hints sind neuer; Details findest du bei caniuse. Das sicherste Muster ist zuerst eine einfarbige background-color, dann der Verlauf, dann eine erweiterte Version in einer späteren Deklaration, die ältere Browser überspringen, weil sie sie nicht verstehen.

css
.banner {
  background-color: #1e3a8a;
  background-image: linear-gradient(90deg, #1e3a8a, #f59e0b);
  /* browsers that understand interpolation methods use this line */
  background-image: linear-gradient(90deg in oklch, #1e3a8a, #f59e0b);
}
Progressive Erweiterung: Jede Zeile überschreibt die vorherige nur, wenn der Browser sie versteht.

Wenn du lieber mit einer Mischung startest, die schon Charakter hat, statt Stopps von Hand abzustimmen, spart ein Farbverlaufsgenerator oder eine Bibliothek fertiger Hintergründe Zeit. So oder so: Behalte den Code. Ein Farbverlauf in CSS bleibt in jeder Größe scharf und wiegt ein paar Bytes.

Häufige Fragen

Wie mache ich einen linearen Farbverlauf in CSS?

Setze background-image: linear-gradient(Richtung, Farbe1, Farbe2) auf ein Element, zum Beispiel linear-gradient(90deg, #0f172a, #38bdf8). Setze davor eine background-color als Fallback.

Was ist die Standardrichtung eines linearen CSS-Farbverlaufs?

Von oben nach unten, dasselbe wie to bottom oder 180deg. Die erste Farbe erscheint oben und die letzte unten.

Wie mache ich eine harte Linie in einem linearen Farbverlauf?

Gib zwei benachbarten Stopps dieselbe Position, etwa #f97316 50%, #1e293b 50%, oder nimm 0 als zweite Position, damit sie auf den vorherigen Stopp begrenzt wird.

Warum sieht die Mitte meines Farbverlaufs grau aus?

Hex-Farben mischen standardmäßig in sRGB, was die Mitte zwischen weit entfernten Farbtönen stumpf macht. Füge in oklch oder in oklab hinter dem Winkel ein oder setze einen helleren mittleren Stopp.

Ist 45deg dasselbe wie to top right?

Nur bei einem Quadrat. 45deg zeigt immer auf 45 Grad, während to top right seinen Winkel so anpasst, dass die mittlere Farbe zwischen den anderen zwei Ecken der Box verläuft.

Diesen Artikel teilen

Geschrieben von GradientlyVerifiziertes Gradiently-Konto

Das Team hinter Gradiently, einem Designtool rund um Marks: lebendige Farbverläufe, durch die alles, was du gestaltest, nach dir aussieht.

Unser Profil ansehen