Le cause comuni di layout shift
Il CLS non appare casualmente. Ci sono cause specifiche e prevedibili. Riconoscerle è il primo passo per eliminarle.
1. Immagini senza dimensioni dichiarate
Questa è la causa numero uno. Se un'immagine non ha width e height (o aspect-ratio), il browser non sa quanta spazio allocare. Quando l'immagine finisce di caricarsi, il browser ripensa il layout. Soluzione: Specifica sempre width e height, o aspect-ratio in CSS.
2. Font loading (FOUT/FOIT)
Quando carichi un custom font da CDN, il browser mostra prima il fallback, poi il font custom. Se il font custom è più largo o più alto, gli elementi si spostano. Soluzione: Usa font-display: swap per minimizzare l'impatto.
3. Banner e ads inseriti dinamicamente
Annunci pubblicitari, notifiche, cookie banner che si inseriscono sopra il fold. Se non è riservato spazio per loro, spingono il contenuto verso il basso. Soluzione: Riserva spazio fisso per l'area ad nel layout.
4. Contenuto inieato dopo il caricamento iniziale
Chat widget, modali, popup che appaiono dopo che l'utente ha iniziato a leggere. Soluzione: Carica il widget in overlay (position: fixed), non inline.
5. Web font con base diversa
Serif, sans-serif, monospace hanno metriche diverse. Un fallback serif è più alto di quello sans-serif. Assicurati che il fallback abbia le stesse metriche approssimative.
6. Animazioni senza transform
Animazioni su proprietà come 'top', 'margin', 'width' causano reflow e shift. Soluzione: Usa sempre transform: translateY() o similar per le animazioni.