Menu

Inserire un'immagine in HTML: tag img, alt e dimensioni

Come inserire un'immagine in HTML con il tag <img>: src e alt, impostare le dimensioni con width e height, immagini responsive, ritagliare con object-fit, didascalie con figure, lazy loading e lo spazio sotto le immagini.

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

Come inserire un'immagine in HTML

Usa l'elemento <img>. src è il file dell'immagine, alt la descrive, e width e height ne danno la dimensione in pixel. <img> è un elemento vuoto: non ha tag di chiusura.

Qui src è un piccolo SVG scritto nell'URL (un data URI), così l'esempio funziona anche offline. In un sito vero src è il percorso di un file:

srcCarica
photo.jpgphoto.jpg nella stessa cartella del file HTML
images/photo.jpgDalla cartella images accanto al file HTML
../photo.jpgDalla cartella superiore
/images/photo.jpgDalla cartella images nella radice del sito
https://example.com/photo.jpgDa un altro sito (può spostarsi o sparire)

Sulla maggior parte dei server web i percorsi distinguono maiuscole e minuscole: Photo.JPG e photo.jpg sono file diversi.

Testo alternativo (alt)

Il testo alt prende il posto dell'immagine. I lettori di schermo lo leggono ad alta voce, e il browser lo mostra quando l'immagine non si può caricare. Entrambe le immagini qui puntano a file che non esistono:

La prima mostra il suo testo alt, "Coddy logo", al posto dell'immagine. La seconda ha un alt vuoto, quindi non c'è testo da mostrare, e i lettori di schermo la saltano. Come scrivere alt:

  • Descrivi ciò che conta nel contesto. "Grafico a barre: le vendite sono raddoppiate da marzo a giugno" dice più di "grafico".
  • Non iniziare con "Immagine di". I lettori di schermo la annunciano già come immagine.
  • Usa alt="" per le decorazioni (un separatore, un ornamento di sfondo) così i lettori di schermo le saltano.
  • Non omettere mai alt. Senza, alcuni lettori di schermo leggono invece il nome del file, per esempio "IMG trattino basso 4032 punto jpg".
  • Per un'immagine dentro un link, descrivi la destinazione: <a href="/"><img src="logo.svg" alt="Home"></a>.

Impostare le dimensioni dell'immagine

Gli attributi width e height sono in pixel, senza unità. Le dimensioni del CSS li sostituiscono. Il CSS più utile per le immagini è questa coppia, che permette a un'immagine di restringersi con il suo contenitore senza mai allungarsi oltre la sua larghezza naturale:

La prima immagine mantiene i suoi 300 pixel ed esce dal riquadro di 180 pixel. La seconda si riduce a 180 per 120, mantenendo le proporzioni 3:2. height: auto è importante: senza, l'attributo height="200" terrebbe l'immagine alta 200 pixel e la schiaccerebbe.

Scrivi sempre width e height nell'HTML, anche per le immagini responsive. Il browser li usa per riservare la giusta quantità di spazio prima che arrivi il file, così il testo sotto non salta in giù quando l'immagine si carica.

Ritagliare con object-fit

Quando un'immagine deve riempire un riquadro di forma diversa (un avatar quadrato da una foto larga, card di uguale altezza), object-fit decide cosa succede alla parte in più:

L'originale è un'immagine 2:1 di un cerchio, mostrata in riquadri quadrati:

  • fill (il predefinito) allunga l'immagine fino al riquadro, quindi il cerchio diventa un ovale.
  • contain fa stare tutta l'immagine dentro, lasciando delle fasce vuote.
  • cover riempie il riquadro e taglia ciò che sborda, mantenendo il cerchio rotondo. È la scelta abituale per miniature e avatar.

object-position sceglie quale parte resta visibile quando si ritaglia, per esempio object-position: top per i ritratti.

Didascalie con figure e figcaption

Una didascalia che appartiene a un'immagine va in <figcaption>, e tutte e due vanno in <figure>. Così sono legate tra loro per i lettori di schermo, e la figura si può stilizzare come un'unica unità:

La didascalia non sostituisce alt. alt dice cosa mostra l'immagine; la didascalia aggiunge quello che servirebbe anche a chi la vede.

Lo spazio sotto un'immagine

Un'immagine poggia sulla linea di base del testo, come una lettera, quindi il suo contenitore lascia spazio sotto per le parti che scendono di lettere come g e y. Un bordo rende visibile lo spazio:

Il primo bordo ha una striscia bianca sotto l'immagine blu. display: block sull'immagine (secondo riquadro) la toglie; lo stesso fa vertical-align: middle se l'immagine deve restare inline.

Lazy loading e sorgenti responsive

Per le immagini più in basso in una pagina lunga, loading="lazy" rimanda il download finché chi legge non ci arriva vicino scorrendo:

<img src="gallery-7.jpg" alt="Harbor at dusk" width="800" height="533" loading="lazy">

Non usare il lazy loading per l'immagine principale in cima alla pagina; ritarda la parte della pagina che si vede per prima.

Per inviare file più piccoli agli schermi piccoli, elenca più dimensioni in srcset e di' al browser quanto sarà larga l'immagine mostrata con sizes. Il browser sceglie il file:

<img
  src="photo-800.jpg"
  srcset="photo-400.jpg 400w, photo-800.jpg 800w, photo-1600.jpg 1600w"
  sizes="(max-width: 600px) 100vw, 600px"
  alt="Harbor at dusk" width="800" height="533">

<picture> va oltre e offre formati diversi, con l'<img> come alternativa che porta anche l'alt:

<picture>
  <source srcset="photo.avif" type="image/avif">
  <source srcset="photo.webp" type="image/webp">
  <img src="photo.jpg" alt="Harbor at dusk" width="800" height="533">
</picture>

Formati delle immagini

FormatoAdatto per
JPEGFoto
PNGScreenshot, immagini che richiedono bordi netti o trasparenza
WebPFoto e grafiche, più leggero di JPEG e PNG, con trasparenza
AVIFFoto, di solito più leggero di WebP
SVGLoghi, icone e diagrammi; si adatta a qualsiasi dimensione senza sfocarsi
GIFBrevi animazioni, anche se un <video> in loop senza audio è molto più leggero

Errori comuni

  • Un percorso del tuo computer, come src="C:\Users\me\photo.jpg". Funziona solo sulla tua macchina. Metti il file accanto al tuo HTML e usa un percorso relativo.
  • alt mancante. Ogni <img> ne ha bisogno, vuoto per le decorazioni.
  • Impostare nel CSS sia width sia height con valori di forma diversa. L'immagine si deforma. Impostane uno e lascia l'altro auto, oppure usa object-fit.
  • Nessun attributo width e height, così la pagina salta mentre le immagini si caricano.
  • File enormi ridotti con il CSS. Una foto di 4000 pixel mostrata a 400 pixel viene comunque scaricata per intero. Ridimensionala, o usa srcset.
  • Un tag di chiusura </img>. <img> è vuoto; non c'è niente da chiudere.

Le immagini negli esempi qui sopra sono piccoli SVG inline. Per provare lo stesso codice con le tue foto, incollalo nel playground HTML.

Domande frequenti

Come si inserisce un'immagine in HTML?

Usa il tag <img> con il file in src e una descrizione in alt: <img src="photo.jpg" alt="A red bicycle" width="600" height="400">. <img> non ha tag di chiusura.

Come cambio le dimensioni di un'immagine in HTML?

Imposta gli attributi width e height in pixel, oppure usa il CSS, per esempio img { width: 300px; height: auto; }. Impostare una sola dimensione e lasciare l'altra auto mantiene le proporzioni.

Perché la mia immagine non si vede in HTML?

Di solito il percorso in src è sbagliato: è relativo al file HTML, sulla maggior parte dei server i nomi dei file distinguono maiuscole e minuscole, e un percorso come C:\photos\cat.jpg esiste solo sul tuo computer. Apri direttamente l'URL dell'immagine nel browser per controllarlo.

Cos'è il testo alt in HTML?

L'attributo alt è un testo che sostituisce l'immagine. I lettori di schermo lo leggono, e i browser lo mostrano quando l'immagine non si carica. Descrivi cosa mostra o cosa fa l'immagine; usa alt="" per le immagini solo decorative.

Come rendo responsive un'immagine?

Aggiungile nel CSS max-width: 100%; height: auto;. L'immagine si restringe allora per stare in un contenitore stretto e non cresce mai oltre la sua larghezza naturale.

Perché c'è uno spazio sotto la mia immagine?

Le immagini sono inline di default e poggiano sulla linea di base del testo, che lascia spazio sotto per le lettere che scendono. Imposta display: block sull'immagine, o vertical-align: middle, per togliere lo spazio.

Illustrazione dei linguaggi di programmazione di Coddy

Impara a programmare con Coddy

INIZIA