Najczęstsze przyczyny
- Obrazy i iframy bez zadeklarowanych wymiarów (width/height lub aspect-ratio).
- Reklamy, embedy i banery doładowywane nad istniejącą treścią.
- Webfonty powodujące przeskok tekstu (FOIT/FOUT).
- Treść wstrzykiwana dynamicznie przez JavaScript bez rezerwacji miejsca.
Jak poprawić CLS
Zawsze rezerwuj miejsce na media i treści dynamiczne, ładuj webfonty z font-display: optional lub swap i preloadem, a animacje wykonuj na transform zamiast właściwości wpływających na layout. Przesunięcia w ciągu 500 ms od interakcji użytkownika nie liczą się do CLS.
Przykład
Obraz bez wymiarów powoduje przeskok layoutu po załadowaniu. width, height lub aspect-ratio rezerwują miejsce z góry.
<img src="/baner-promo.jpg" alt="Promocja letnia"><img src="/baner-promo.jpg" alt="Promocja letnia"
width="1200" height="400" style="aspect-ratio: 3 / 1;">Źródła i dalsza lektura
- web.dev — Cumulative Layout Shift (CLS) dokumentacja
- MDN — Layout Instability API dokumentacja
- web.dev — Optymalizacja CLS dokumentacja