Menu

Gradienti CSS: radial-gradient, linear e conic

I gradienti CSS sono immagini che il browser disegna a partire dai colori. Impara radial-gradient (forma, dimensione, posizione), linear-gradient (direzione e angoli), conic-gradient, i color stop, gli stop netti per le strisce, i gradienti ripetuti e il testo sfumato.

Questa pagina include editor eseguibili: modifica, esegui e vedi subito l'output.

Gradienti radiali

radial-gradient() sfuma i colori verso l'esterno a partire da un punto centrale. Come ogni gradiente CSS, è un'immagine, quindi va in background-image (o nella forma abbreviata background):

La sintassi completa è radial-gradient(shape size at position, color stops). Tutto ciò che precede i colori è facoltativo.

ParteValoriPredefinito
Formacircle, ellipseellipse
Dimensioneclosest-side, closest-corner, farthest-side, farthest-corner, o lunghezzefarthest-corner
Posizioneat center, at top left, at 30% 70%, at 20px 40pxat center
Color stopDue o più colori, ognuno con una posizione facoltativa

La parola chiave della dimensione decide dove si raggiunge l'ultimo colore: al lato più vicino del box, all'angolo più lontano e così via. Cambia i valori qui e guarda il gradiente ridisegnarsi:

Prova circle farthest-corner at 30% 50%, #f59e0b, #2563eb, ellipse at bottom, white, #16a34a e circle 40px, #f59e0b 99%, transparent (un punto con il bordo netto).

Gradienti lineari

linear-gradient() sfuma lungo una linea retta. Metti prima una direzione o un angolo, poi i colori:

Gli angoli partono da 0deg, che punta verso l'alto, e girano in senso orario, quindi 90deg equivale a to right e 180deg è il valore predefinito to bottom. to right resta fisico nelle pagine da destra a sinistra; specchialo tu se il gradiente deve seguire la direzione di lettura.

Color stop e stop netti

Ogni colore può avere una posizione. Senza posizioni, i colori sono distribuiti in modo uniforme. Quando due colori condividono una posizione, il cambio è istantaneo, ed è così che disegni strisce, bandiere e barre di avanzamento:

Uno stop può anche avere due posizioni, #111827 12px 24px, che disegna una fascia piena da 12px a 24px.

Gradienti conici

conic-gradient() fa ruotare i colori attorno a un punto centrale, come le lancette di un orologio. Con gli stop netti disegna un grafico a torta senza immagini né JavaScript:

Un grafico disegnato in CSS è invisibile per gli screen reader, quindi metti i numeri anche nel testo.

Testo sfumato

Ritaglia uno sfondo sfumato sulle lettere e rendi trasparente il testo stesso:

.gradient-text {
  background: linear-gradient(90deg, #2563eb, #db2777);
  -webkit-background-clip: text; /* older browsers need the prefix */
  background-clip: text;
  color: transparent;
}

Tieni presente un color semplice di riserva: se il ritaglio non funziona, il testo sparisce. Il testo sfumato ha anche un contrasto irregolare, quindi usalo solo per i titoli grandi.

I gradienti si sovrappongono a immagini e ad altri gradienti in un unico elenco background-image; la pagina sulle immagini di sfondo spiega livelli, dimensione e posizione.

Errori comuni

  • background-color: linear-gradient(...). Un gradiente è un'immagine: usa background-image o background.
  • Gradi nella direzione sbagliata. 0deg punta verso l'alto, non a destra. 90deg va verso destra.
  • Un gradiente su un elemento senza altezza. Non si vede nulla; dagli del contenuto o una dimensione.
  • Colori intermedi spenti. Sfumare due colori saturi opposti, come rosso e verde, passa per un grigio marrone in sRGB. Aggiungi uno stop intermedio, oppure sfuma in un altro spazio colore: linear-gradient(in oklch, red, green).
  • Bande visibili su gradienti grandi e delicati. Colori molto vicini su un'area grande mostrano dei gradini; un po' più di contrasto tra gli stop aiuta.

Domande frequenti

Come creo un gradiente radiale in CSS?

Usa background-image: radial-gradient(#93c5fd, #1e3a8a);. Aggiungi una forma e una posizione prima dei colori, per esempio radial-gradient(circle at top left, #93c5fd, #1e3a8a).

Che differenza c'è tra circle ed ellipse in radial-gradient?

ellipse (il valore predefinito) si allarga secondo le proporzioni del box, quindi è largo in un box largo. circle mantiene il gradiente rotondo qualunque sia la forma del box.

Come imposto la direzione di un gradiente lineare?

Metti per prima una direzione o un angolo: linear-gradient(to right, red, blue) o linear-gradient(45deg, red, blue). Il valore predefinito è to bottom (180deg); 0deg punta verso l'alto e gli angoli girano in senso orario.

Come faccio strisce nette invece di una sfumatura morbida?

Dai a due colori la stessa posizione di stop: linear-gradient(90deg, #2563eb 50%, #f59e0b 50%) cambia colore a metà senza sfumatura. repeating-linear-gradient ripete uno schema di stop di questo tipo.

Posso usare un gradiente come background-color?

No. Un gradiente è un'immagine, quindi va in background-image o nella forma abbreviata background. background-color: linear-gradient(...) non è valido e viene ignorato.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA