Scopri come evitare improvvise variazioni del layout per migliorare l'esperienza utente
CLS (Cumulative Layout Shift) è una delle tre metriche Core Web Vitals. Misura l'instabilità dei contenuti combinando la quantità di contenuti visibili spostati nell'area visibile con la distanza degli elementi interessati.
Le variazioni del layout possono distrarre gli utenti. Immagina di aver iniziato a leggere un articolo quando, all'improvviso, gli elementi si spostano nella pagina, disorientandoti e costringendoti a ritrovare il punto in cui avevi interrotto la lettura. Questo problema è molto comune sul web, ad esempio quando leggi le notizie o cerchi di fare clic sui pulsanti "Cerca" o "Aggiungi al carrello". Queste esperienze sono visivamente spiacevoli e frustranti. Spesso si verificano quando gli elementi visibili vengono spostati forzatamente perché un altro elemento è stato aggiunto improvvisamente alla pagina o ne è stato modificato il ridimensionamento.
Per offrire una buona esperienza utente, i siti dovrebbero fare in modo di avere un CLS pari o inferiore a 0,1 per almeno il 75% delle visite alla pagina.
A differenza delle altre metriche di Core Web Vitals, che sono valori basati sul tempo misurati in secondi o millisecondi, il punteggio CLS è un valore senza unità basato su un calcolo della quantità di contenuti che si spostano e della distanza.
In questa guida illustreremo l'ottimizzazione delle cause comuni delle variazioni del layout.
Le cause più comuni di un CLS basso sono:
- Immagini senza dimensioni.
- Annunci, embed e iframe senza dimensioni.
- Contenuti inseriti dinamicamente, ad esempio annunci, incorporamenti e iframe senza dimensioni.
- Caratteri web.
Comprendere le cause delle variazioni del layout
Prima di iniziare a cercare soluzioni ai problemi CLS più comuni, è importante comprendere il punteggio CLS e l'origine delle variazioni.
CLS negli strumenti di laboratorio rispetto al campo
È comune sentire gli sviluppatori pensare che il CLS misurato dal report sull'esperienza utente di Chrome (CrUX) non sia corretto perché non corrisponde al CLS misurato utilizzando gli Strumenti per sviluppatori di Chrome o altri strumenti di laboratorio. Gli strumenti di Web Performance Lab come Lighthouse potrebbero non mostrare il CLS completo di una pagina perché in genere eseguono un semplice caricamento della pagina per misurare alcune metriche sul rendimento del web e fornire alcune indicazioni (anche se i flussi utente di Lighthouse consentono di misurare oltre il controllo del caricamento della pagina predefinito).
CrUX è il set di dati ufficiale del programma Web Vitals e, per questo motivo, il CLS viene misurato per l'intera durata della pagina e non solo durante il caricamento iniziale della pagina, come di solito misurano gli strumenti di laboratorio.
Le variazioni del layout sono molto comuni durante il caricamento della pagina, in quanto vengono recuperate tutte le risorse necessarie per il rendering iniziale della pagina, ma possono verificarsi variazioni del layout anche dopo il caricamento iniziale. Molte variazioni post-caricamento possono verificarsi a seguito di un'interazione dell'utente e, pertanto, verranno escluse dal punteggio CLS in quanto variazioni previste, purché si verifichino entro 500 millisecondi da quell'interazione.
Tuttavia, altre variazioni post-caricamento inaspettate dall'utente potrebbero essere incluse se non si è verificata un'interazione idonea, ad esempio se si scorre la pagina più a fondo e si caricano contenuti caricati con il metodo lazy, causando delle variazioni. Altre cause comuni di CLS post-caricamento sono le interazioni delle transizioni, ad esempio nelle app a pagina singola, che richiedono più tempo del periodo di tolleranza di 500 millisecondi.
PageSpeed Insights mostra sia il CLS percepito dall'utente da un URL nella sezione "Scopri com'è l'esperienza dei tuoi utenti reali" sia il CLS di caricamento basato su laboratorio nella sezione "Diagnostica i problemi di prestazioni". Le differenze tra questi valori sono probabilmente dovute alla CLS post-caricamento.
Identificare i problemi di caricamento del CLS
Quando i punteggi CLS di CrUX e Lighthouse di PageSpeed Insights sono in linea generale, in genere indica che esiste un problema di CLS di caricamento rilevato da Lighthouse. In questo caso, Lighthouse ti aiuterà con due controlli per fornire ulteriori informazioni sulle immagini che causano un CLS elevato a causa della mancanza di larghezza e altezza e per elencare tutti gli elementi che si sono spostati durante il caricamento della pagina, nonché il loro contributo al CLS. Puoi visualizzare questi controlli filtrando i controlli CLS:
Il riquadro Prestazioni in DevTools evidenzia anche i cambiamenti di layout nella sezione Esperienza. La visualizzazione Riepilogo per un record Layout Shift
include il punteggio cumulativo dello spostamento del layout, nonché un overlay rettangolare che mostra le regioni interessate. Questo è particolarmente utile per ottenere ulteriori dettagli sui problemi di CLS di caricamento, poiché può essere facilmente replicato con un profilo di prestazioni del ricaricamento.
Identificare i problemi relativi al CLS post-caricamento
La mancata corrispondenza tra i punteggi CLS di CrUX e Lighthouse indica spesso un CLS post-caricamento. Queste variazioni possono essere difficili da rilevare senza dati sul campo. Per informazioni sulla raccolta dei dati sul campo, consulta Misurare gli elementi CLS nel campo.
L'estensione di Chrome Web Vitals può essere utilizzata per monitorare la metrica CLS quando interagisci con una pagina, in un display a sovrimpressione o nella console, dove puoi ottenere maggiori dettagli sopra gli elementi modificati.
In alternativa all'utilizzo dell'estensione, puoi sfogliare la pagina web mentre registri le modifiche al layout utilizzando un Performance Observer incollato nella console.
Dopo aver configurato il monitoraggio dei turni, puoi provare a replicare eventuali problemi di CLS post-caricamento. Il CLS si verifica spesso mentre l'utente scorre una pagina, quando i contenuti con caricamento differito vengono caricati completamente senza spazio riservato. Lo spostamento dei contenuti quando l'utente tiene premuto il cursore sopra di essi è un'altra causa comune del CLS post-caricamento. Qualsiasi spostamento dei contenuti durante una di queste interazioni viene considerato imprevisto, anche se avviene entro 500 millisecondi.
Per ulteriori informazioni, consulta Eseguire il debug dei cambiamenti di layout.
Dopo aver identificato le cause comuni del CLS, puoi utilizzare anche la modalità di flusso utente per intervalli di tempo di Lighthouse per assicurarti che i flussi utente tipici non regrediscano introducendo cambiamenti di layout.
Misurare gli elementi CLS nel campo
Il monitoraggio del CLS sul campo può essere fondamentale per determinare in quali circostanze si verifica e restringere le possibili cause. Come la maggior parte degli strumenti di laboratorio, gli strumenti sul campo misurano solo gli elementi che si sono spostati, ma in genere forniscono informazioni sufficienti per identificare la causa. Puoi anche utilizzare le misurazioni del campo CLS per determinare quali problemi hanno la priorità più alta da risolvere.
La libreria web-vitals
dispone di funzioni di attribuzione che ti consentono di raccogliere queste informazioni aggiuntive. Per ulteriori informazioni, consulta Eseguire il debug del rendimento sul campo. Anche altri fornitori di RUM hanno iniziato a raccogliere e presentare questi dati in modo simile.
Cause comuni di CLS
Una volta identificate le cause del CLS, puoi iniziare a risolvere i problemi. In questa sezione illustreremo alcuni dei motivi più comuni per cui si verifica il CLS e cosa puoi fare per evitarli.
Immagini senza dimensioni
Includi sempre gli attributi delle dimensioni width
e height
nelle immagini e negli elementi video. In alternativa, prenota lo spazio richiesto con CSS aspect-ratio
o un'altra soluzione simile. Questo approccio garantisce che il browser possa allocare la quantità corretta di spazio nel documento durante il caricamento dell'immagine.
Cronologia degli attributi width
e height
nelle immagini
All'inizio del web, gli sviluppatori aggiungevano gli attributi width
e height
ai tag <img>
per assicurarsi che nella pagina fosse allocato spazio sufficiente prima che il browser iniziasse a recuperare le immagini. In questo modo si riduce al minimo l'adattamento dinamico del contenuto e il relayout.
<img src="puppy.jpg" width="640" height="360" alt="Puppy with balloons">
width
e height
in questo esempio non includono unità. Queste dimensioni in "pixel" garantirebbero che il browser riservi un'area di 640 x 360 nel layout della pagina. L'immagine si allungherà per adattarsi a questo spazio, indipendentemente dal fatto che le dimensioni effettive corrispondano o meno.
Quando è stato introdotto il Responsive Web Design, gli sviluppatori hanno iniziato a omettere width
e height
e a utilizzare il CSS per ridimensionare le immagini:
img {
width: 100%; /* or max-width: 100%; */
height: auto;
}
Tuttavia, poiché le dimensioni dell'immagine non sono specificate, non è possibile allocare spazio finché il browser non inizia a scaricarla e non può determinarne le dimensioni. Quando le immagini vengono caricate, il testo si sposta verso il basso nella pagina per far loro spazio, creando un'esperienza utente confusa e frustrante.
È qui che entrano in gioco le proporzioni. Le proporzioni di un'immagine sono il rapporto tra la larghezza e l'altezza. È comune vederlo espresso come due numeri separati da due punti (ad esempio 16:9 o 4:3). Per un formato x:y, l'immagine ha una larghezza di x unità e un'altezza di y unità.
Ciò significa che, se conosciamo una delle dimensioni, possiamo determinare l'altra. Per proporzioni 16:9:
- Se puppy.jpg ha un'altezza di 360 px, la larghezza è 360 x (16 / 9) = 640 px
- Se la foto cucciolo.jpg ha una larghezza di 640 px, l'altezza è 640 x (9 / 16) = 360 px
La conoscenza delle proporzioni di un'immagine consente al browser di calcolare e riservare spazio sufficiente per l'altezza e l'area associata.
Best practice moderna per l'impostazione delle dimensioni delle immagini
Poiché i browser moderni impostano le proporzioni predefinite delle immagini in base agli attributi width
e height
di un'immagine, puoi evitare variazioni del layout impostando tali attributi sull'immagine e includendo il codice CSS precedente nel tuo foglio di stile.
<!-- set a 640:360 i.e a 16:9 aspect ratio -->
<img src="puppy.jpg" width="640" height="360" alt="Puppy with balloons">
Tutti i browser aggiungeranno quindi una proporzione predefinita in base agli attributi width
e height
esistenti dell'elemento.
Viene calcolato un formato in base agli attributi width
e height
prima del caricamento dell'immagine. Fornisce queste informazioni all'inizio del calcolo del layout. Non appena a un'immagine viene impostata una determinata larghezza (ad esempio width: 100%
), le proporzioni vengono utilizzate per calcolare l'altezza.
Questo valore aspect-ratio
viene calcolato dai principali browser durante l'elaborazione del codice HTML, anziché con uno stile dello user agent predefinito (leggi questo post per scoprire il motivo), pertanto il valore viene visualizzato in modo leggermente diverso. Ad esempio, Chrome la visualizza in questo modo nella sezione Stili del riquadro Elemento:
img[Attributes Style] {
aspect-ratio: auto 640 / 360;
}
Safari si comporta in modo simile, utilizzando un'origine stile Attributi HTML. Firefox non mostra affatto questo aspect-ratio
calcolato nel riquadro Strumento di ispezione, ma lo utilizza per il layout.
La parte auto
del codice precedente è importante perché le dimensioni dell'immagine sostituiscono le proporzioni predefinite dopo il download dell'immagine. Se le dimensioni dell'immagine sono diverse, si verifica comunque un leggero cambiamento di layout dopo il caricamento dell'immagine, ma viene garantito che le proporzioni dell'immagine vengano comunque utilizzate quando diventano disponibili, nel caso in cui il codice HTML non sia corretto. Anche se le proporzioni effettive sono diverse da quelle predefinite, causano comunque uno spostamento del layout inferiore rispetto alle dimensioni predefinite 0x0 di un'immagine per la quale non sono state fornite dimensioni.
Per un fantastico approfondimento sulle proporzioni con ulteriori approfondimenti sulle immagini adattabili, consulta l'articolo sul caricamento delle pagine senza interruzioni con proporzioni multimediali.
Se l'immagine si trova in un contenitore, puoi utilizzare il CSS per ridimensionarla in base alla larghezza del contenitore. Impostiamo height: auto;
per evitare di utilizzare un valore fisso per l'altezza dell'immagine.
img {
height: auto;
width: 100%;
}
Che dire delle immagini adattabili?
Quando utilizzi le immagini responsive, srcset
definisce le immagini che consenti al browser di selezionare e le dimensioni di ciascuna immagine. Per assicurarti che gli attributi di larghezza e altezza <img>
possano essere impostati, ogni immagine deve utilizzare le stesse proporzioni.
<img
width="1000"
height="1000"
src="puppy-1000.jpg"
srcset="puppy-1000.jpg 1000w, puppy-2000.jpg 2000w, puppy-3000.jpg 3000w"
alt="Puppy with balloons"
/>
Le proporzioni delle immagini possono variare anche in base alla direzione artistica. Ad esempio, puoi includere uno scatto ritagliato di un'immagine per aree visibili strette e visualizzare l'immagine completa su desktop:
<picture>
<source media="(max-width: 799px)" srcset="puppy-480w-cropped.jpg" />
<source media="(min-width: 800px)" srcset="puppy-800w.jpg" />
<img src="puppy-800w.jpg" alt="Puppy with balloons" />
</picture>
Chrome, Firefox e Safari ora supportano l'impostazione di width
e height
sugli elementi <source>
all'interno di un determinato elemento <picture>
:
<picture>
<source media="(max-width: 799px)" srcset="puppy-480w-cropped.jpg" width="480" height="400" />
<source media="(min-width: 800px)" srcset="puppy-800w.jpg" width="800" height="400" />
<img src="puppy-800w.jpg" alt="Puppy with balloons" width="800" height="400" />
</picture>
Annunci, contenuti incorporati e altri contenuti caricati in un secondo momento
Le immagini non sono l'unico tipo di contenuti che può causare variazioni del layout. Annunci, incorporamenti, iframe e altri contenuti inseriti dinamicamente possono causare la visualizzazione dei contenuti dopo uno spostamento verso il basso, aumentando la metrica CLS.
Gli annunci sono uno dei principali fattori che contribuiscono alle variazioni del layout sul web. Le reti pubblicitarie e i publisher supportano spesso le dimensioni degli annunci dinamici. Le dimensioni degli annunci aumentano il rendimento/le entrate grazie a tassi di clic più elevati e a un maggior numero di annunci in competizione nell'asta. Purtroppo, questo può portare a un'esperienza utente non ottimale perché gli annunci spostano verso il basso i contenuti visibili che stai visualizzando.
I widget incorporabili ti consentono di includere nella tua pagina contenuti web portatili, come video di YouTube, mappe di Google Maps e post di social media. Tuttavia, questi widget spesso non sono a conoscenza delle dimensioni dei contenuti prima del caricamento. Di conseguenza, le piattaforme che offrono l'inserimento non riservano sempre spazio per i propri widget, il che causa cambiamenti nel layout al momento del caricamento.
Le tecniche per gestirli sono tutte simili. Le differenze principali sono il livello di controllo che hai sui contenuti che verranno inseriti. Se vengono inseriti da terze parti, come un partner pubblicitario, potresti non conoscere le dimensioni esatte dei contenuti che verranno inseriti né essere in grado di controllare eventuali cambiamenti di layout all'interno di questi incorporamenti.
Riserva spazio ai contenuti caricati in ritardo
Quando inserisci contenuti con caricamento tardivo nel flusso di contenuti, puoi evitare gli spostamenti del layout riservando lo spazio necessario nel layout iniziale.
Un approccio è aggiungere una regola CSS min-height
per riservare spazio oppure, per i contenuti adattabili come gli annunci, utilizzare la proprietà CSS aspect-ratio
in modo simile al modo in cui i browser la utilizzano automaticamente per le immagini con le dimensioni fornite.
Potresti dover tenere conto di differenze sottili nelle dimensioni degli annunci o dei segnaposto nei vari fattori di forma utilizzando le query sui media.
Per i contenuti che potrebbero non avere un'altezza fissa, come gli annunci, potresti non essere in grado di riservare lo spazio esatto necessario per eliminare completamente il cambiamento di layout. Se viene pubblicato un annuncio più piccolo, un publisher può applicare uno stile a un contenitore più grande per evitare cambiamenti di layout oppure scegliere le dimensioni più probabili per lo spazio pubblicitario in base ai dati storici. Lo svantaggio di questo approccio è che aumenta la quantità di spazio vuoto nella pagina.
Puoi invece impostare la dimensione iniziale sulla dimensione più piccola che verrà utilizzata e accettare un certo livello di spostamento per i contenuti più grandi. L'utilizzo di min-height
, come suggerito in precedenza, consente all'elemento principale di espandersi in base alle necessità, riducendo al contempo l'impatto delle variazioni del layout rispetto alle dimensioni predefinite di 0 px di un elemento vuoto.
Prova a evitare di comprimere lo spazio riservato mostrando un segnaposto se, ad esempio, non viene restituito alcun annuncio. La rimozione dello spazio riservato agli elementi può causare un aumento del CLS pari a quello causato dall'inserimento di contenuti.
Posiziona i contenuti con caricamento tardivo più in basso nell'area visibile
I contenuti iniettati dinamicamente più vicini alla parte superiore dell'area visibile di solito causano cambiamenti di layout maggiori rispetto ai contenuti iniettati più in basso nell'area visibile. Tuttavia, l'inserimento di contenuti in qualsiasi punto dell'area visibile causa comunque un certo spostamento. Se non riesci a riservare spazio per i contenuti inseriti, ti consigliamo di inserirli in un secondo momento nella pagina per ridurre l'impatto sulla relativa CLS.
Evita di inserire nuovi contenuti senza interazione da parte dell'utente
Probabilmente hai riscontrato cambiamenti di layout a causa dell'interfaccia utente che viene visualizzata nella parte superiore o inferiore del viewport quando provi a caricare un sito. Come per gli annunci, questo accade spesso con banner e moduli che spostano il resto dei contenuti della pagina:
Se devi visualizzare questi tipi di inviti dell'interfaccia utente, riserva in anticipo spazio sufficiente nell'area visibile (ad esempio, utilizzando un segnaposto o una bozza di interfaccia utente) in modo che, quando viene caricato, i contenuti della pagina non si spostino inaspettatamente. In alternativa, assicurati che l'elemento non faccia parte del flusso del documento sovrapponendo i contenuti, se opportuno. Per ulteriori consigli su questi tipi di componenti, consulta il post Best practice per le notifiche relative ai cookie.
In alcuni casi, l'aggiunta dinamica dei contenuti è una parte importante dell'esperienza utente. Ad esempio, quando carichi altri prodotti in un elenco di articoli o quando aggiorni i contenuti del feed pubblicato. In questi casi, esistono diversi modi per evitare cambiamenti imprevisti del layout:
- Sostituisci i vecchi contenuti con i nuovi all'interno di un contenitore di dimensioni fisse o utilizza un carosello e rimuovi i vecchi contenuti dopo la transizione. Ricorda di disattivare tutti i link e i controlli fino al termine della transizione, per evitare clic o tocchi accidentali durante l'arrivo dei nuovi contenuti.
- Chiedi all'utente di avviare il caricamento dei nuovi contenuti, in modo che non sia sorpreso dal passaggio (ad esempio con un pulsante "Carica altro" o "Aggiorna"). Ti consigliamo di eseguire il pre-caricamento dei contenuti prima dell'interazione dell'utente in modo che vengano visualizzati immediatamente. Ti ricordiamo che le variazioni di layout che si verificano entro 500 millisecondi dall'input dell'utente non vengono conteggiate ai fini del CLS.
- Carica facilmente i contenuti fuori dallo schermo e sovrapponi un avviso all'utente che li informa della loro disponibilità (ad esempio, con un pulsante "Scorri verso l'alto").
Animazioni
Le modifiche ai valori delle proprietà CSS possono richiedere una reazione del browser. Alcuni valori, come box-shadow
e box-sizing
, attivano il nuovo layout, la pittura e la composizione. Anche la modifica delle proprietà top
e left
causa cambiamenti nel layout, anche quando l'elemento spostato si trova su un proprio livello. Evita di utilizzare queste proprietà per creare animazioni.
Altre proprietà CSS possono essere modificate senza attivare i nuovi layout. Ad esempio, è possibile utilizzare le animazioni transform
per tradurre, ridimensionare, ruotare o inclinare gli elementi.
Le animazioni composite che utilizzano translate
non possono influire su altri elementi e pertanto non vengono conteggiate ai fini del CLS. Inoltre, le animazioni non composte non causano il re-layout. Per scoprire di più sulle proprietà CSS che attivano i cambiamenti di layout, consulta Animazioni ad alte prestazioni.
Caratteri web
In genere, lo scaricamento e il rendering dei caratteri web vengono gestiti in uno dei due modi seguenti prima che il carattere web venga scaricato:
- Il carattere di riserva viene scambiato con il carattere web, causando un Flash of Unstyled Text (FOUT).
- Il testo "invisibile" viene visualizzato utilizzando il carattere di riserva finché non è disponibile un carattere web e il testo viene reso visibile (FOIT, flash di testo invisibile).
Entrambi gli approcci possono causare variazioni del layout. Anche se il testo è invisibile, viene comunque disposto utilizzando il carattere di riserva, quindi quando viene caricato il carattere web, il blocco di testo e i contenuti circostanti si spostano nello stesso modo del carattere visibile.
I seguenti strumenti possono aiutarti a ridurre al minimo lo spostamento del testo:
font-display: optional
può evitare un nuovo layout perché il carattere web viene utilizzato solo se è disponibile al momento del layout iniziale.- Assicurati che venga utilizzato il carattere di riserva appropriato. Ad esempio, l'utilizzo di
font-family: "Google Sans", sans-serif;
garantisce che venga utilizzato il carattere di riservasans-serif
del browser durante il caricamento di"Google Sans"
. Se non specifichi un carattere di riserva usando solofont-family: "Google Sans"
, verrà utilizzato il carattere predefinito, che su Chrome è "Times", un font Serif che rappresenta una corrispondenza peggiore rispetto al caratteresans-serif
predefinito. - Riduci al minimo le differenze di dimensioni tra il carattere di riserva e il carattere web utilizzando le nuove API
size-adjust
,ascent-override
,descent-override
eline-gap-override
, come descritto nel post Caratteri di riserva migliorati. - L'API di caricamento dei caratteri può ridurre il tempo necessario per ottenere i caratteri necessari.
- Carica caratteri web critici il prima possibile utilizzando
<link rel=preload>
. Un carattere precaricato avrà maggiori probabilità di soddisfare il primo rendering, nel qual caso non si verificano spostamenti del layout.
Per altre best practice relative ai caratteri, consulta Best practice per i caratteri.
Riduci il CLS assicurandoti che le pagine siano idonee per la cache bf
Una tecnica molto efficace per mantenere bassi i punteggi CLS è assicurarsi che le pagine web siano idonee per la cache di navigazione avanti/indietro (bfcache).
La cache conserva le pagine nella memoria del browser per un breve periodo dopo l'uscita dalla pagina. In questo modo, se torni alla pagina precedente, le pagine verranno ripristinate esattamente come le avevi lasciate. Ciò significa che la pagina completamente caricata è disponibile immediatamente, senza gli eventuali spostamenti che potrebbero verificarsi normalmente durante il caricamento per uno dei motivi indicati in precedenza.
Sebbene questo possa potenzialmente significare che il caricamento iniziale della pagina presenta ancora cambiamenti di layout, quando un utente torna indietro nelle pagine non vede più gli stessi cambiamenti di layout ripetutamente. Dovresti sempre cercare di evitare le variazioni anche durante il caricamento iniziale, ma dove è più difficile risolvere completamente il problema, puoi almeno ridurne l'impatto evitandoli in qualsiasi navigazione bfcache.
Le navigazioni avanti e indietro sono comuni su molti siti. ad esempio tornare a una pagina di contenuti, a una pagina di categoria o ai risultati di ricerca.
Quando questa funzionalità è stata implementata in Chrome, abbiamo riscontrato miglioramenti notevoli del CLS.
La cache bf viene utilizzata per impostazione predefinita da tutti i browser, ma alcuni siti non sono idonei per la cache bf per una serie di motivi. Leggi la guida alla cache bfcache per maggiori dettagli su come testare e identificare eventuali problemi che impediscono l'utilizzo della cache bfcache per assicurarti di sfruttare al meglio questa funzionalità e migliorare il punteggio CLS complessivo del tuo sito.
Conclusione
Esistono diverse tecniche per identificare e migliorare il CLS, come descritto in precedenza in questa guida. Core Web Vitals ha dei limiti; pertanto, anche se non è possibile eliminare completamente la metrica CLS, l'utilizzo di alcune di queste tecniche dovrebbe consentire di ridurre l'impatto. In questo modo, dovresti riuscire a rispettare questi limiti, creando un'esperienza migliore per gli utenti del tuo sito web.