Cumululative Layout Shift (CLS) măsoară stabilitatea vizuală a paginii tale, cuantificând cât de mult se mută elementele pe ecran în timp ce utilizatorul interacționează cu site-ul. Un scor sub 0,1 indică o experiență stabilă, în timp ce valori mai mari sugerează salturi bruște ale conținutului, frustrând utilizatorii și crescând rata de respingere. Ignorarea acestei practici poate duce la clicuri accidentale pe butoane sau link-uri care s-au mutat, afectând negativ conversiile și percepția generală asupra calității aplicației.
Cum o aplici
- Stabilește dimensiuni explicite: Asigură-te că toate imaginile, video-urile și embed-urile au atribute
widthșiheightdefinite în HTML sau CSS. Acest lucru permite browserului să aloce spațiul necesar înainte ca resursa să se încarce complet. - Rezervă spațiu pentru conținut dinamic: Pentru elemente care apar tardiv (publicitate, bannere, widget-uri sociale), definește un container cu dimensiuni fixe sau minime în CSS. Folosește
min-heightpentru a preveni colapsarea layout-ului. - Evită inserțiile în fluxul principal: Dacă trebuie să adaugi conținut nou (ex: notificări), folosește
position: absolutesaufixedpentru a-l scoate din fluxul normal al documentului, astfel încât să nu împingă restul conținutului. - Antrenează fonturile: Folosește
font-display: swapîn CSS pentru a evita „saltul” textului când fontul personalizat se încarcă după cel de sistem.
Exemplu
Varianta greșită, unde imaginea se încarcă lent și deformează layout-ul:
<!-- Lipsesc dimensiunile -->
<img src="banner.jpg">
<p>Text care se va muta brusc.</p>
Varianta corectă, cu spațiu rezervat:
<!-- Dimensiuni explicite pentru rezervarea spațiului -->
<div style="width: 300px; height: 200px; background-color: #ddd;">
<img src="banner.jpg" width="300" height="200" style="object-fit: cover;">
</div>
<p>Text stabil, nu se va muta.</p>
Cum verifici
Utilizează Lighthouse din Chrome DevTools (tab-ul "Performance") pentru a genera un raport detaliat. Verifică secțiunea "Layout Shifts" pentru a identifica elementele specifice care cauzează instabilitatea. Alternativ, poți folosi Chrome User Experience Report sau plugin-ul Web Vitals pentru a monitoriza scorul CLS în timp real în producție.
Greșeli frecvente
- Ignorarea aspect-ratio: Setarea doar a lățimii fără înălțimea corespunzătoare (sau invers) poate cauza deformări dacă proporția imaginii nu este respectată exact.
- Animații neoptimizate: Aplicarea unor tranziții CSS complexe pe elemente care modifică dimensiunea sau poziția altor noduri poate declanșa recalculări costisitoare și salturi vizuale.
- Conținut generat client-side fără placeholder: Inserarea rapidă a componentelor React/Vue fără a avea un schelet (skeleton) sau dimensiuni alocate anterior duce la salturi majore la randarea inițială.
Resurse gratuite
Alte subiecte din „Core Web Vitals”
- Menține LCP sub 2,5 secunde la percentila 75
- Menține INP sub 200 ms prin task-uri scurte pe main thread
- Redu TTFB sub 800 ms: server rapid, cache și CDN
- Identifică elementul LCP pentru fiecare tip de pagină
- Evaluează metricile separat pentru mobil și desktop
- Urmărește FCP și TBT ca metrici de diagnostic
- Depanează INP cu Long Animation Frames API (LoAF)