0Pricing
HTML Academy · Lezione

Caricamento differito delle immagini: loading=lazy

Rimandare il caricamento delle immagini fuori schermo con l’attributo nativo loading

Caricamento differito delle immagini: loading=lazy è una lezione HTML Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento HTML Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso HTML Academy include 4 lezioni in totale.

L'attributo loading

<img loading="lazy" src="..."> indica al browser di rimandare il download dell'immagine finché non sta per entrare nel viewport. Il supporto nativo in tutti i browser moderni ne fa il più semplice intervento per migliorare le prestazioni delle pagine ricche di immagini.

Come viene definita la «vicinanza al viewport»

I browser usano un piccolo margine euristico, di solito qualche migliaio di pixel sotto la piega. L'immagine inizia a caricarsi abbastanza presto da essere completamente renderizzata quando l'utente vi arriva scorrendo: il caricamento differito è invisibile a chi scorre con attenzione.

Quando non usare il lazy loading

Non imposti mai loading="lazy" sulle immagini visibili inizialmente o sull'immagine candidata per l'LCP (Largest Contentful Paint). Il caricamento differito ritarda l'elemento visivo più importante, peggiorando sia la velocità percepita sia i Core Web Vitals.

Larghezza e altezza obbligatorie

Perché il caricamento differito sia efficace, assegni a <img> valori espliciti per width e height oppure utilizzi la proprietà CSS aspect-ratio. Senza dimensioni, il browser non può riservare spazio, lo scorrimento provoca il ricalcolo del layout e l'euristica del caricamento differito non funziona correttamente.

<img loading="lazy" src="cat.jpg" width="800" height="600" alt="A cat">

Caricamento differito degli iframe

Lo stesso attributo funziona su <iframe>. <iframe loading="lazy"> rimanda il caricamento di mappe, video e incorporamenti social sotto la piega, ognuno dei quali altrimenti caricherebbe megabyte di JavaScript di terze parti a ogni visualizzazione della pagina.

eager è il valore predefinito

Il valore predefinito è loading="eager" (carica immediatamente) e raramente viene scritto in modo esplicito. Impostare eager sulle immagini visibili inizialmente può essere utile come documentazione, segnalando ai revisori che la scelta di eager è stata deliberata.

Combinare con srcset

Il caricamento differito si integra perfettamente con le immagini responsive. Il browser sceglie comunque il candidato corretto da srcset; ne rimanda soltanto il download. Non è necessaria alcuna sincronizzazione aggiuntiva tra loading="lazy" e srcset.

<img
  loading="lazy"
  srcset="img-400.jpg 400w, img-800.jpg 800w, img-1200.jpg 1200w"
  sizes="(min-width: 768px) 800px, 100vw"
  src="img-800.jpg"
  alt="Hero"
  width="800" height="600"
>

Indicazione di decodifica

Abbini il caricamento differito a decoding="async" per consentire al browser di decodificare l'immagine al di fuori del thread principale. In questo modo si evita di bloccare l'input durante lo scorrimento, quando molte immagini arrivano simultaneamente dopo una lunga raffica di scorrimento.

Immagini di sfondo

CSS background-image non può essere caricato in modo differito nativamente. Per gli sfondi hero visibili inizialmente non è un problema; per gli sfondi sotto la piega usi IntersectionObserver per inserire l'URL quando l'elemento si avvicina al viewport.

Comportamento in stampa

Quando la pagina viene stampata, il browser carica immediatamente ogni immagine, indipendentemente da loading="lazy", così la copia stampata è completa. Non è necessario gestire separatamente le immagini a caricamento differito nei fogli di stile per la stampa.

Misurare il risparmio

L'audit "Defer offscreen images" di Lighthouse elenca tutte le immagini che dovrebbero avere loading="lazy". Filtrando il pannello Network per "Img" e usando la vista "Waterfall" si possono osservare i caricamenti scaglionati prodotti dal caricamento differito: nelle gallerie di immagini le richieste iniziali diminuiscono drasticamente.

Verifica delle conoscenze

Perché è dannoso impostare loading="lazy" su un'immagine hero nella parte superiore della pagina?

Riepilogo

Impostare loading="lazy" sugli elementi <img> e <iframe> fuori dal viewport è un miglioramento delle prestazioni ottenuto con un solo attributo. Lo abbini a width/height espliciti (per riservare spazio), srcset (per la responsività) e decoding="async" (per mantenere fluido lo scorrimento). Non lo applichi mai all'immagine LCP o a qualsiasi elemento visibile nel viewport iniziale.

Domande Frequenti

La lezione «Caricamento differito delle immagini: loading=lazy» è gratuita?

Sì — il testo completo di «Caricamento differito delle immagini: loading=lazy» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso HTML Academy, passa a CoddyKit PRO. Il corso HTML Academy include 4 lezioni in totale.

Cosa imparerò in «Caricamento differito delle immagini: loading=lazy»?

Rimandare il caricamento delle immagini fuori schermo con l’attributo nativo loading Eserciti HTML Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare HTML Academy?

Non è richiesta alcuna esperienza precedente. HTML Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.

Quanto tempo richiede la lezione «Caricamento differito delle immagini: loading=lazy»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione HTML Academy?

Sì. Ogni lezione HTML Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Gli attributi async e defer
  2. Preload, prefetch e preconnect
  3. Caricamento differito delle immagini: loading=lazy
  4. Resource hints: modulepreload
← Torna a HTML Academy