In breve
- La proprietà CSS background può contenere più livelli separati da virgole, e il primo livello elencato viene dipinto sopra.
- Un colore di sfondo si può impostare una sola volta, nell’ultimo livello, e compare sotto ogni immagine e gradiente.
- Nella forma abbreviata background, background-size deve seguire background-position con una barra, come in center / cover.
- Mettere un livello di gradiente sopra un livello di immagine in una sola dichiarazione è il modo più semplice di tingere una foto perché il testo sia leggibile.
- Le immagini impostate in CSS vengono scoperte più tardi degli elementi img, quindi un’immagine hero importante può richiedere un suggerimento di precaricamento.
In questa pagina
Uno sfondo CSS è una pila di livelli su un solo elemento. La proprietà background accetta un elenco separato da virgole di immagini e gradienti, dipinti con il primo in cima, più un solo colore in fondo. È tutto ciò che serve per una foto hero tinta, una luce morbida su un gradiente o una texture sopra un colore del brand, senza elementi in più o contenitori. Il resto è sapere come la forma abbreviata legge i suoi valori.
La forma abbreviata background, valore per valore
La forma abbreviata imposta fino a otto proprietà estese insieme. Quelle che ometti vengono riportate ai valori predefiniti, ed è la fonte più comune dei bug «perché è sparita la dimensione del mio sfondo».
background-colorCosa controlla
Valori comuni
#0f0b1e, oklch(20% 0.05 290)background-imageCosa controlla
Valori comuni
url(photo.webp), linear-gradient(…)background-positionCosa controlla
Valori comuni
center, top right, 50% 30%background-sizeCosa controlla
Valori comuni
cover, contain, 200px autobackground-repeatCosa controlla
Valori comuni
no-repeat, repeat, repeat-xbackground-attachmentCosa controlla
Valori comuni
scroll, fixed, localbackground-origin e background-clipCosa controlla
Valori comuni
padding-box, border-box, text.hero {
/* image | position / size | repeat | colour */
background: url("harbour.webp") center 30% / cover no-repeat #0f172a;
}Come si impilano i livelli di sfondo
Elenca i livelli dall’alto al basso, separati da virgole. Ogni livello può avere la sua posizione, dimensione e ripetizione, date nello stesso ordine in ogni proprietà estesa. Solo l’ultimo livello può includere un colore. Pensalo come guardare attraverso una pila di carta da lucido.
.section {
background:
radial-gradient(circle at 80% 20%, #f472b6 0%, transparent 45%),
radial-gradient(circle at 15% 85%, #38bdf8 0%, transparent 50%),
linear-gradient(160deg, #1e1b4b 0%, #0f0b1e 100%)
#0f0b1e;
}Usa transparent negli stop esterni perché le luci si fondano con ciò che sta sotto. Per le forme stesse, vedi gradiente radiale CSS e gradiente mesh CSS.
Un gradiente sopra un’immagine di sfondo
Lo sfondo a livelli più utile tinge una foto perché le parole sopra siano leggibili. Metti prima un livello di gradiente e l’immagine per seconda. Un gradiente scuro dove sta il testo e trasparente altrove conserva molta più foto di un overlay scuro uniforme.
.hero {
background:
linear-gradient(90deg, rgb(10 12 24 / 0.85) 0%, rgb(10 12 24 / 0.4) 45%, transparent 70%),
url("terrace.webp") center / cover no-repeat
#0a0c18;
color: #f8fafc;
}Un overlay uniforme rende leggibile il testo oscurando tutto allo stesso modo.
Un livello direzionale scurisce solo dove sono le parole e lascia luminosa il resto della scena.
Overlay a gradiente ha altre ricette di overlay, e testo sopra un’immagine spiega quando spostare le parole invece di scurire l’immagine.
background-size, position e repeat
coverriempie il riquadro e taglia ciò che sborda. Giusto per foto e hero a tutta larghezza.containfa stare l’intera immagine dentro e lascia spazi. Giusto per loghi e illustrazioni che non devono essere tagliati.- Abbina
covera unbackground-positionvoluto come50% 30%, così il ritaglio tiene in vista il volto del soggetto o il prodotto. - I mosaici di texture vogliono
repeate una dimensione fissa, per esempio200px 200px, così la grana resta uguale a ogni larghezza di schermo. background-attachment: fixedcrea un effetto parallasse sul desktop, ma molti browser mobili lo ignorano, quindi non dipenderne mai.
.card {
background:
url("grain.png") 0 0 / 200px 200px repeat,
linear-gradient(135deg, #7c2d12 0%, #ea580c 55%, #fdba74 100%);
}Un’altra proprietà estesa si guadagna il posto: background-clip: text taglia lo sfondo sulla forma delle lettere, ed è così che si fanno le scritte a gradiente in CSS. Tienila per parole display grandi, imposta un color pieno di riserva e vedi testo con gradiente CSS per lo schema completo.
Errori da evitare
Evita
- Impostare
background-sizee poi la forma abbreviata dopo, che lo azzera - Un colore in un livello qualsiasi tranne l’ultimo
- Nessun colore di riserva, quindi il testo è illeggibile mentre l’immagine carica
- Una foto enorme per un riquadro largo 400 pixel
- Contenuto importante solo in un’immagine di sfondo, invisibile ai lettori di schermo
Fai
- Scrivi prima la forma abbreviata, poi le eventuali proprietà estese che la sovrascrivono
- Un solo colore, in fondo all’elenco
- Un colore di riserva vicino al tono medio dell’immagine
- Immagini dimensionate sul riquadro, servite come WebP o AVIF
- Immagini significative come
imgcon testo alternativo; la decorazione come sfondi
Immagini di sfondo responsive e veloci
image-set() permette al browser di scegliere tra formati o risoluzioni, un po’ come srcset su un img. E poiché le immagini di sfondo vengono scoperte solo quando il CSS è analizzato, uno sfondo hero può arrivare in ritardo; un suggerimento di precaricamento nell’head lo risolve.
<link rel="preload" as="image" href="/hero-1920.avif" type="image/avif" fetchpriority="high">
<style>
.hero {
background: image-set(
url("/hero-1920.avif") type("image/avif"),
url("/hero-1920.webp") type("image/webp"),
url("/hero-1920.jpg") type("image/jpeg")
) center / cover no-repeat #0f172a;
}
</style>Spesso lo sfondo più veloce non è un’immagine. I gradienti a livelli non costano alcun download, e un minuscolo mosaico di grana aggiunge texture per pochi kilobyte. Prestazioni dei gradienti CSS e WebP contro PNG e JPG trattano i compromessi. Se preferisci non rifinire a mano luce e grana, un Mark di Gradiently ti dà uno sfondo finito e distintivo alla misura hero di sito 1920×1080, con lo stesso aspetto dei tuoi post social.
Le domande più frequenti
Come aggiungo un’immagine di sfondo in CSS?
Usa background: url("image.webp") center / cover no-repeat; sull’elemento, con un colore di riserva alla fine nel caso l’immagine carichi lentamente.
Come metto un gradiente sopra un’immagine di sfondo?
Elenca prima il gradiente e per seconda l’immagine in una sola dichiarazione background, separati da una virgola. Il primo livello viene dipinto sopra.
Posso usare più sfondi in CSS?
Sì. Separa i livelli con virgole; ognuno può avere la sua posizione, dimensione e ripetizione, e solo l’ultimo livello può includere un colore.
Che differenza c’è tra background-size cover e contain?
cover riempie tutto l’elemento e taglia ciò che sborda; contain mostra l’intera immagine e può lasciare spazio vuoto attorno.
Perché background-size smette di funzionare?
La forma abbreviata background azzera ogni proprietà estesa che non nomina. Imposta background-size dopo la forma abbreviata, oppure includilo nella forma abbreviata dopo la posizione con una barra.
Scritto da Gradiently
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