Menu

Come centrare un'immagine in HTML e CSS

Un <img> è inline, quindi si centra come il testo: text-align: center sul genitore. Oppure rendilo un blocco con margin: 0 auto, o centralo con flexbox o grid, anche in verticale. Ogni metodo gira dal vivo e misura il risultato.

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

La risposta rapida: text-align sul genitore

Un <img> è un elemento inline: sta in una riga di testo come una parola. Quindi lo centri come centri il testo, con text-align: center sul genitore:

Lo stile va sul div, non sull'immagine. Mettere text-align: center sull'<img> stesso non fa nulla, perché l'immagine non contiene testo da allineare.

Metodo 2: display block e margin auto

Se preferisci dare stile all'immagine stessa, trasformala in un blocco e dalle margini laterali automatici. Lo spazio libero sui due lati viene diviso in parti uguali:

L'immagine grigia ha margin: 0 auto ma resta all'inizio della riga: i margini automatici non hanno effetto su un elemento inline. Il pezzo mancante è display: block. max-width: 100% con height: auto evita che l'immagine esca da uno schermo stretto e ne conserva le proporzioni.

Metodo 3: flexbox o grid, anche in verticale

Per centrare un'immagine in entrambe le direzioni dentro un box, dai un'altezza al box e centrane il contenuto con grid o flexbox:

L'equivalente con flexbox è display: flex; justify-content: center; align-items: center;. In entrambi i casi il box deve avere un'altezza maggiore dell'immagine, altrimenti non c'è spazio in cui centrare. Gli stessi metodi centrano qualsiasi elemento; la pagina su come centrare un div li mette tutti a confronto.

Centrare un'immagine con didascalia

Una foto con didascalia va in un <figure>. Centra il contenuto della figura, e immagine e didascalia si allineano insieme:

Più immagini in una riga centrata

Una riga di loghi o miniature è un lavoro da flexbox. justify-content: center centra il gruppo, gap lo distanzia e flex-wrap lo fa andare a capo sugli schermi piccoli restando centrato:

Quale metodo usare

SituazioneUsa
Un'immagine in un paragrafo o in un blocco semplicetext-align: center sul genitore
Puoi dare stile solo all'immaginedisplay: block; margin: 0 auto;
Centrare in entrambe le direzioni dentro un boxGrid place-items: center (o flexbox) sul box
Una riga di immaginiFlexbox con justify-content: center
Un'immagine con didascalia<figure> con text-align: center
Un'immagine di sfondo, non un contenutobackground-position: center, vedi background-image

I vecchi metodi, e perché no

Li troverai ancora nei tutorial datati:

<!-- obsolete: do not use -->
<center><img src="logo.png" alt="Logo"></center>
<img src="logo.png" alt="Logo" align="center">

<center> e l'attributo align sono stati rimossi dall'HTML. I browser mostrano ancora <center> per compatibilità con il passato, e align="center" su un'immagine non la centra nemmeno in orizzontale: i browser lo trattano come un allineamento verticale nella riga. Usa uno dei metodi CSS qui sopra.

Errori comuni

  • text-align: center sull'<img>. Mettilo sul genitore.
  • margin: 0 auto su un'immagine inline. Aggiungi display: block.
  • Centraggio verticale senza altezza sul genitore. Il box si restringe all'immagine e non resta spazio in cui centrare.
  • float: center. Questo valore non esiste. I float vanno solo su un lato.
  • Dimenticare alt. Anche un'immagine centrata ha bisogno di un testo alternativo; usa alt="" solo per le immagini puramente decorative.
  • Un'immagine deformata. Impostare in CSS sia width sia height con valori di proporzioni diverse la distorce. Impostane uno e usa height: auto, oppure aggiungi object-fit: cover.

Domande frequenti

Come centro un'immagine in HTML?

Metti text-align: center sull'elemento che la contiene, per esempio <p style="text-align: center;"><img src="logo.png" alt="Logo"></p>. Un'immagine è inline per impostazione predefinita, quindi si centra come una parola di testo.

Come centro un'immagine con margin auto?

Prima rendi l'immagine un blocco: img { display: block; margin: 0 auto; }. I margini automatici non centrano gli elementi inline, e un'immagine resta inline finché non lo cambi.

Come centro un'immagine in verticale e in orizzontale?

Trasforma il suo contenitore in una griglia (o in un flexbox) con un'altezza: .box { display: grid; place-items: center; height: 300px; }. L'immagine si posiziona così al centro del box.

Posso usare il tag <center> o align="center" per centrare un'immagine?

No. <center> e l'attributo align su <img> sono obsoleti in HTML5. I browser mostrano ancora <center> per le pagine vecchie, ma align="center" su un'immagine la allinea in verticale nella riga, non in orizzontale. Usa il CSS.

Perché c'è un piccolo spazio sotto la mia immagine centrata?

Un'immagine inline poggia sulla linea di base del testo e lascia sotto di sé lo spazio per le parti discendenti delle lettere. Imposta display: block sull'immagine, oppure vertical-align: middle, e lo spazio sparisce.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA