Menu

Immagine di sfondo CSS: size, position, repeat e cover

background-image mette un'immagine o un gradiente dietro il contenuto di un elemento. Impara url() e i gradienti, background-size (cover e contain), background-position, background-repeat, come sovrapporre più sfondi e la forma abbreviata background.

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

Come aggiungere un'immagine di sfondo

background-image dipinge un'immagine dietro il contenuto, il padding e il bordo dell'elemento. Per impostazione predefinita parte dall'angolo in alto a sinistra del padding box, mantiene la sua dimensione naturale e si ripete fino a riempire il box:

In un progetto reale url() punta a un file: url("images/hero.jpg"). Il percorso è relativo al foglio di stile che lo contiene (o alla pagina, per un elemento <style>). Gli esempi di questa pagina usano piccole immagini SVG scritte inline come URL data: così funzionano ovunque.

Due cose da sapere fin da subito:

  • Uno sfondo non dà dimensioni a un elemento. Un div vuoto con un'immagine di sfondo è alto 0px. Dagli del contenuto, del padding, un height o un aspect-ratio.
  • Un'immagine di sfondo è decorazione. Gli screen reader la saltano e non ha testo alternativo. Un'immagine che trasmette un significato va in un elemento <img>.

background-size: cover, contain e lunghezze

background-size ridimensiona l'immagine. Le due parole chiave ne mantengono le proporzioni:

L'immagine è larga il doppio di quanto è alta e ogni box è quadrato.

ValoreRisultato
auto (predefinito)La dimensione propria dell'immagine
coverSi ingrandisce finché il box è completamente pieno; l'eccesso viene ritagliato
containSi ridimensiona finché l'immagine intera ci sta; restano bande grigie su due lati
200pxLarga 200px, altezza in proporzione
50% autoMetà della larghezza del box, altezza in proporzione
100% 100%Esattamente la dimensione del box; deforma l'immagine se le proporzioni sono diverse

cover è la scelta abituale per banner e schede. contain è per loghi e illustrazioni che non devono mai essere tagliati.

background-position e background-repeat

background-position colloca l'immagine dentro il box, con parole chiave (top, center, bottom, left, right), percentuali o lunghezze. background-repeat controlla la ripetizione. Prova qualche valore:

Prova le posizioni top right, bottom 10px right 20px e 25% 75%, e i valori di ripetizione repeat-x, repeat-y, space (ripetizioni con spazi in modo che nessuna venga tagliata) e round (ripetizioni ridimensionate perché ne entri un numero intero).

Livelli: più sfondi e testo sovrapposto

background-image accetta un elenco separato da virgole. Il primo livello viene disegnato sopra. L'uso tipico è un gradiente semitrasparente sopra una foto, così il testo bianco resta leggibile:

aspect-ratio dà un'altezza al box vuoto, e background-size: cover si applica a entrambi i livelli. Per altre ricette con i gradienti, vedi gradienti CSS.

La forma abbreviata background

background imposta tutte le proprietà dello sfondo in una riga. La dimensione deve venire subito dopo la posizione, separata da una barra, e il colore va nell'ultimo livello:

.hero {
  background: url("hero.jpg") center / cover no-repeat, #1f2937;
}
/* the same as */
.hero {
  background-image: url("hero.jpg");
  background-position: center;
  background-size: cover;
  background-repeat: no-repeat;
  background-color: #1f2937;
}

Il colore di riserva si vede mentre l'immagine si carica, e se il caricamento fallisce. Ogni proprietà che ometti dalla forma abbreviata torna al suo valore predefinito, quindi scrivi prima la forma abbreviata e dopo le proprietà singole.

Altre proprietà dello sfondo

ProprietàCosa fa
background-attachment: fixedL'immagine resta ferma mentre la pagina scorre (ignorato su Safari per iOS)
background-originSe la posizione parte dal bordo, dal padding o dal contenuto
background-clipDove viene dipinto lo sfondo, compreso text per riempire le lettere
background-blend-modeFonde i livelli tra loro, per esempio con multiply

Errori comuni

  • Un percorso sbagliato. url() in un foglio di stile è relativo al file CSS, non alla pagina HTML.
  • Un elemento vuoto. Non ha altezza, quindi l'immagine non ha dove comparire.
  • Dimenticare no-repeat con contain o con un'immagine piccola: si ripete.
  • Deformare con 100% 100% quando intendevi cover.
  • Immagini importanti come sfondi. Usa <img> con testo alternativo per i contenuti; gli sfondi sono invisibili agli screen reader.
  • Virgolette mancanti attorno a un URL data: che contiene spazi o virgolette. Scrivi sempre url("...").

Domande frequenti

Come aggiungo un'immagine di sfondo in CSS?

Usa background-image: url("photo.jpg"); sull'elemento. Il percorso è relativo al file CSS (o alla pagina, per un attributo style o un elemento <style>). Dai una dimensione all'elemento, perché uno sfondo non fa mai crescere un elemento vuoto.

Come faccio a far coprire all'immagine di sfondo tutto l'elemento?

Usa background-size: cover; con background-position: center;. L'immagine si ridimensiona fino a riempire completamente il box, mantenendo le proporzioni, e ciò che avanza viene ritagliato.

Che differenza c'è tra cover e contain?

cover riempie tutto il box e ritaglia ciò che non ci sta. contain mostra l'immagine intera e lascia spazio vuoto su due lati quando le proporzioni sono diverse.

Come faccio a non far ripetere un'immagine di sfondo?

Aggiungi background-repeat: no-repeat;. Per impostazione predefinita un'immagine di sfondo si ripete in entrambe le direzioni per riempire l'elemento.

Perché la mia immagine di sfondo non si vede?

Le cause più comuni sono un percorso sbagliato in url() (è relativo al file CSS), un elemento senza altezza perché non ha contenuto, oppure una forma abbreviata background scritta dopo che ha azzerato l'immagine.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA