CSS e web

Gradiente lineare in CSS: la guida completa a linear-gradient()

Ogni parte di linear-gradient() spiegata con un esempio dal vivo accanto al suo codice, dalla direzione predefinita ai punti netti, ai riflessi a più livelli e alle sfumature OKLCH più morbide.

GradientlyAccount Gradiently verificato··7 min di lettura
Copertina: Waking Hour · GR·RKP7·GN

In breve

  • Un gradiente lineare CSS è un’immagine che il browser disegna lungo una linea retta, scritta con la funzione linear-gradient() e usata ovunque sia accettata un’immagine, di solito background-image.
  • Senza una direzione, un gradiente lineare va dall’alto verso il basso, cioè 180deg; 0deg punta in alto e gli angoli girano in senso orario.
  • I punti di colore senza posizioni sono distribuiti in modo uniforme, e due punti nella stessa posizione creano un bordo netto invece di una sfumatura.
  • Più gradienti si possono sovrapporre in un solo background-image, separati da virgole, con il primo disegnato in cima.
  • Aggiungere un metodo di interpolazione come in oklch mantiene luminoso il centro di una sfumatura invece di lasciarlo diventare grigio.
In questa pagina

Un gradiente lineare in CSS è un’immagine che il browser disegna lungo una linea retta, sfumando da un colore al successivo. Lo scrivi con la funzione linear-gradient() e lo usi ovunque il CSS accetti un’immagine, più spesso in background-image. Non richiede alcun file, scala a qualsiasi dimensione senza sfocarsi e non costa nulla da scaricare. La versione utile più breve ha due colori: linear-gradient(#0f172a, #38bdf8) sfuma da un blu notte in alto a un azzurro cielo in basso.

css
.hero {
  background-color: #0f172a; /* shown if the gradient fails */
  background-image: linear-gradient(#0f172a, #38bdf8);
}
Il gradiente lineare più semplice: due colori, direzione predefinita, con un colore piatto sotto come riserva.
Da blu notte a cielo, dall’alto al bassolinear-gradient(#0f172a, #38bdf8)
Il codice qui sopra, disegnato. Senza direzione significa dall’alto al basso.

Questa guida percorre ogni parte della funzione nell’ordine in cui la incontri. Se vuoi il quadro più ampio su come i gradienti lineari si confrontano con quelli radiali, conici e mesh, parti dai tipi di gradienti.

La sintassi di linear-gradient()

La funzione accetta una direzione facoltativa, un metodo di interpolazione del colore facoltativo e poi un elenco di almeno due punti di colore. Tutto è separato da virgole tranne la direzione e il metodo di interpolazione, che condividono il primo argomento.

ParteEsempioCosa fa
Direzione come angolo135deg, 0.25turnImposta l’angolo della linea del gradiente. 0deg punta in alto, gli angoli girano in senso orario.
Direzione con parole chiaveto right, to top leftPunta la linea verso un lato o un angolo del riquadro.
Metodo di interpolazionein oklch, in srgbSceglie lo spazio colore in cui si calcola la sfumatura.
Punto di colore#38bdf8 40%Un colore, facoltativamente con una o due posizioni lungo la linea.
Indicazione di colore30% tra due puntiSposta il punto medio della sfumatura tra i suoi vicini.
I pezzi di linear-gradient(), nell’ordine in cui compaiono. Solo i punti di colore sono obbligatori.

Il riferimento completo si trova nella pagina MDN su linear-gradient(), che documenta anche l’esatta grammatica della specifica CSS Images.

Angoli del gradiente e parole chiave di direzione

Gli angoli seguono una bussola: 0deg punta in alto, 90deg a destra, 180deg in basso e 270deg a sinistra. Il gradiente parte dal lato opposto e viaggia verso la direzione che indichi, quindi 90deg va da sinistra a destra. Puoi scrivere anche turn, rad o grad, dove 0.25turn equivale a 90deg. Se non indichi nulla, l’impostazione predefinita è to bottom.

Una coppia da indaco a rosa a quattro angoli. Il primo colore sta sempre all’inizio della linea.

Le parole chiave di angolo non sono uguali agli angoli di 45 gradi. to top right inclina la linea in modo che il colore centrale passi esattamente tra gli altri due angoli, qualunque sia la forma del riquadro. Su un banner largo quella linea è molto più piatta di 45deg, che punta sempre a 45 gradi e ignora la forma del riquadro. Usa le parole chiave quando la sfumatura deve rispettare gli angoli, e gli angoli quando più elementi di forme diverse devono condividere una sola direzione. Altro sulla scelta delle direzioni negli angoli dei gradienti.

Punti di colore, posizioni e indicazioni

I punti senza posizioni sono distribuiti in modo uniforme, quindi tre colori stanno a 0%, 50% e 100%. Dai a un punto una posizione in percentuale o in lunghezza per spostarlo. Dagliene due e il colore resta pieno tra di esse. Metti una percentuale isolata tra due punti e diventa un’indicazione: il punto in cui la sfumatura raggiunge il colore intermedio, che rende una parte della transizione più rapida dell’altra.

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);
Tre modi di modellare la stessa sfumatura. Le posizioni possono anche essere lunghezze come 120px.
La stessa palette dall’oceano profondo al ghiaccio, modellata in tre modi da posizioni e indicazioni.

Punti netti per strisce e divisioni

Quando due punti condividono una posizione, non c’è spazio per sfumare, e ottieni un bordo netto. I browser riportano anche alla posizione precedente un punto che viene prima di quello che lo precede, il che dà una scorciatoia utile: #f97316 50%, #1e293b 0 significa che il secondo colore parte esattamente dove finisce il primo. Ripeti l’idea con repeating-linear-gradient() e ottieni le strisce.

I punti netti disegnano forme invece di sfumature. Ce ne sono molte altre nei motivi CSS.

Sovrapporre più gradienti in un solo sfondo

background-image accetta un elenco separato da virgole, e la prima immagine viene dipinta in cima. I livelli si vedono l’uno attraverso l’altro solo dove sono trasparenti, quindi i gradienti superiori di solito sfumano verso transparent. I browser moderni sfumano in alfa premoltiplicato, quindi sfumare verso transparent non trascina più una tinta grigia nel colore come accadeva una volta. Abbina i livelli a background-size e background-repeat quando un livello deve coprire solo una parte del riquadro.

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);
}
Un riflesso sovrapposto a un gradiente di base. Il primo gradiente dell’elenco viene disegnato in cima.

Sovrapporre è anche la base di effetti più ricchi: bagliori radiali a più livelli creano un gradiente mesh in CSS, e un sottile livello di rumore in cima nasconde i gradini, come spiegato nel banding nei gradienti.

Sfumature più morbide con l’interpolazione del colore

Quando ogni colore è scritto in un formato tradizionale come esadecimale, rgb() o hsl(), il browser sfuma in sRGB per compatibilità. Le sfumature sRGB tra tonalità distanti passano per centri spenti e grigiastri: da blu a giallo è il caso classico. Aggiungere in oklab o in oklch chiede uno spazio colore percettivo, che mantiene il centro più chiaro e uniforme. La guida dedicata ai gradienti OKLCH in CSS tratta direzioni della tonalità e alternative di riserva.

Da blu a giallo in tre modi. Cambia solo il metodo di interpolazione.

Da evitare

  • Lunghe sfumature tra tonalità opposte in semplice sRGB
  • to top right quando più schede di forme diverse devono condividere una sola direzione
  • Sfumare verso white quando vuoi dissolvere; usa transparent
  • Sfumature molto morbide, scure e larghe senza grana, che fanno banding su molti schermi

Da fare

  • Aggiungere in oklch o un punto intermedio per mantenere vivide le sfumature
  • Usare un solo angolo, come 135deg, per un sistema coerente
  • Sfumare i livelli verso transparent così si vede ciò che sta sotto
  • Aggiungere un debole livello di rumore sopra i grandi gradienti scuri

Supporto dei browser e alternative di riserva

linear-gradient() funziona senza prefissi in ogni browser attuale, quindi le vecchie versioni con -webkit- possono sparire. I metodi di interpolazione, i punti a due posizioni e le indicazioni sono più recenti; controlla caniuse per i dettagli. Lo schema più sicuro è un background-color piatto per primo, poi il gradiente, poi una versione migliorata in una dichiarazione successiva, che i browser più vecchi saltano perché non riescono a interpretarla.

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);
}
Miglioramento progressivo: ogni riga sostituisce la precedente solo se il browser la capisce.

Se preferisci partire da una sfumatura che ha già carattere invece di regolare i punti a mano, un generatore di gradienti o una libreria di sfondi già pronti fa risparmiare tempo. In ogni caso conserva il codice: un gradiente in CSS resta nitido a ogni dimensione e pesa pochi byte.

Le domande più frequenti

Come creo un gradiente lineare in CSS?

Imposta background-image: linear-gradient(direzione, colore1, colore2) su un elemento, ad esempio linear-gradient(90deg, #0f172a, #38bdf8). Aggiungi prima un background-color come riserva.

Qual è la direzione predefinita di un gradiente lineare CSS?

Dall’alto verso il basso, uguale a to bottom o 180deg. Il primo colore compare in alto e l’ultimo in basso.

Come faccio una linea netta in un gradiente lineare?

Dai a due punti vicini la stessa posizione, come #f97316 50%, #1e293b 50%, oppure usa 0 come seconda posizione così viene riportata al punto precedente.

Perché il centro del mio gradiente sembra grigio?

I colori esadecimali sfumano in sRGB per impostazione predefinita, il che spegne il punto medio tra tonalità distanti. Aggiungi in oklch o in oklab dopo l’angolo, oppure inserisci un punto intermedio più luminoso.

45deg è uguale a to top right?

Solo su un quadrato. 45deg punta sempre a 45 gradi, mentre to top right adatta il suo angolo in modo che il colore centrale passi tra gli altri due angoli del riquadro.

Condividi questa guida

Scritto da GradientlyAccount Gradiently verificato

Il team dietro Gradiently, uno strumento di design costruito attorno ai Mark: gradienti vivi che fanno sembrare tuo tutto ciò che progetti.

Vedi il nostro profilo
Tutte le guide su CSS e web