Sebesség Szakszó

CLS (Cumulative Layout Shift)

Szerző: · 8 perc olvasás · Frissítve:
CLS (Cumulative Layout Shift) - Sebesség (szakszó) a tudástárban
CLS (Cumulative Layout Shift) - Sebesség | eClick GEO-audit tudástár

A CLS (Cumulative Layout Shift) azt méri, mennyit ugrál az oldal elrendezése betöltés közben, anélkül hogy a látogató bármit csinálna. Egy dimenzió nélküli szám: 0,1 alatt jó, 0,25 felett rossz, a kettő között fejlesztendő.

Hogyan működik

A böngésző figyeli, hogy egy már kirajzolt elem hol volt, és hova került. Minden ilyen mozgáshoz kiszámol egy pontszámot. A pontszám két tényezőből áll:

  • hatásterület: a képernyő hányad részét érinti az elmozdulás,
  • távolság: mennyivel csúszott el az elem a nézetablak méretéhez képest.

A részpontszámok összeadódnak, innen a "kumulatív" szó. Ha a mozgást egy kattintás vagy billentyűleütés váltotta ki, a böngésző 500 ezredmásodpercig nem számolja be. A felhasználó által kért változás tehát nem hiba.

Mi okozza a legtöbbször

A CLS majdnem mindig ugyanabból a néhány hibából jön. Méret nélküli kép, ami betöltéskor helyet foglal magának. Későn érkező webfont, ami átrendezi a szöveget. Cookie-sáv vagy akciós csík, amit JavaScript szúr be a tartalom fölé. Reklámhely vagy beágyazott videó, aminek nincs fenntartott doboza.

Miért számít a gépi olvasóknak is

A CLS a Core Web Vitals három mérőszámának egyike, a LCP és az INP mellett. Ez egy rangsorolási jel, de nem ez a legfontosabb hatása. Egy ugráló oldalon a felhasználó mellényúl, rossz gombot nyom, és kilép. A gépi olvasók, az AI-crawlerek és ügynökök pedig a stabil, kiszámítható elrendezésű oldalon tudják biztosan azonosítani, hol a gomb és hol az ár.

Röviden: a CLS nem esztétikai kérdés, hanem az oldal megbízhatóságának mérőszáma a látogató szemével.

Mit néz ebből a riport

Az audit a "CLS - laborteszt (Lighthouse)" szabállyal vizsgálja az értéket, laborkörnyezetben. A hatás besorolása közepes, a hatókör kód. Ha az érték a küszöb fölé megy, a riport ajánlása egyszerű: adj méretet a képeknek és a beágyazásoknak, hogy ne ugráljon az elrendezés.

Miért fontos

A felhasználó szemszögéből

A magas CLS a leglátványosabb hiba, amit egy oldal elkövethet. A látogató elkezdi olvasni a szöveget, az pedig elcsúszik a képernyőn. Rányomna a "Kosárba" gombra, de közben betölt egy bannerhely, és a "Feliratkozás" gombra üt.

Ez mérhető pénz. Webshopban a pénztár-folyamatban egyetlen ugráló elem is elég ahhoz, hogy a vásárló elbizonytalanodjon.

SEO-hatás

A Core Web Vitals része a Google rangsorolási jeleinek. Egyedül a CLS nem dönt el semmit, de gyenge tartalommal párosulva rontja a helyzetet. Mobilon súlyosabb a helyzet: a keskeny nézetablakban minden elmozdulás arányosan nagyobb.

Miért a mobil a kritikus

A riportokban azt látjuk, hogy az asztali CLS gyakran rendben van, mobilon viszont ugyanaz az oldal 0,3 fölé megy. A cookie-sáv és a lebegő hívás-gomb mobilon a képernyő jelentős részét foglalja. Ha ezek JavaScriptből érkeznek, a teljes tartalmat lejjebb tolják.

Kikre vonatkozik

Vonatkozik rá minden publikus oldal, ahol valódi látogató olvas vagy vásárol. A CLS nem oldaltípus-függő, de a súlya eltérő:

  • Webshop: itt a legmagasabb a tét. Termékoldal, kosár, pénztár: minden ugrálás közvetlen bevételkiesés.
  • Hírportál, blog: a reklámhelyek és a beágyazott tartalmak miatt tipikusan magas az érték.
  • KKV-bemutatkozó oldal: általában alacsony a kockázat, de a hero-kép és a cookie-sáv itt is elront mindent.
  • Landing oldal: az űrlap vagy a CTA-gomb elcsúszása azonnali konverzióvesztés.

Kevésbé releváns: belső adminfelületek, staging környezetek, bejelentkezés mögötti oldalak. Ezeket a keresők úgysem mérik. Ha viszont a saját munkatársaid napi 8 órát ott töltenek, a javítás akkor is megéri.

Hogyan ellenőrzöd

Laborteszt (a gyors út)

  1. Nyisd meg a PageSpeed Insights felületét, és add meg az URL-t.
  2. Nézd meg külön a mobil és az asztali fület. A kettő gyakran nagyon eltér.
  3. Keresd a "Cumulative Layout Shift" sort a laboradatok között.
  4. Görgess az "Avoid large layout shifts" (Kerüld a nagy elrendezés-elmozdulásokat) diagnosztikához. Itt konkrétan felsorolja, melyik elem mozdult el.

Mezei adat (a valóság)

  1. Ugyanezen az oldalon nézd meg a CrUX-szekciót, ha van elég forgalom. Erről bővebben: CrUX: mezei vs labor adat.
  2. A Search Console "Core Web Vitals" jelentése URL-csoportokra bontva mutatja a problémás oldalakat.

Saját szemmel, devtoolsban

  1. Nyisd meg a böngésző devtoolsát, válaszd a Performance fület.
  2. Kapcsold be a CPU- és hálózat-lassítást (4x CPU, Slow 4G).
  3. Indíts felvételt újratöltéssel.
  4. A felvételen az "Experience" sávban piros "Layout Shift" blokkok jelennek meg. Kattints rájuk, és látod, melyik elem mozdult.

Jó jel

  • A CLS 0,1 alatt van mobilon is.
  • A devtools felvételén nincs Layout Shift blokk a cookie-sáv megjelenése után.
  • A képeken van width és height attribútum.

Rossz jel

  • A CLS 0,25 felett van bármelyik nézeten.
  • A mobil és az asztali érték között nagyságrendi a különbség.
  • A diagnosztika a cookie-sávot, a fejlécet vagy a hero-képet nevezi meg.

Hogyan javítod

Az alapelv

Minden elemnek legyen helye, mielőtt megérkezik. Ez a teljes CLS-javítás egy mondatban.

WordPress

  1. Ellenőrizd, hogy a téma kiírja-e a width és height attribútumokat a képekre. A WordPress a médiatárból feltöltött képeknél ezt alapból megteszi.
  2. Ha egy oldalépítő (Elementor, WPBakery) generálja a képeket, gyakran elhagyja a méretet. Nézd meg a forrást, és állítsd be a modul beállításaiban.
  3. A lazy loading csak akkor biztonságos, ha a képnek van mérete. Méret nélküli lusta kép garantált CLS.
  4. A cookie-sávot (CMP) tedd a lap aljára, fix pozícióval, ne a tartalom fölé beszúrva.
  5. Webfontnál használj font-display: swap helyett optional értéket, ha a betűcsere feltűnően átrendezi a szöveget.

Shopify

  1. A Shopify témák Liquid sablonjaiban az image_tag szűrő kiírja a méretet. Ha kézzel írt <img> van a sablonban, egészítsd ki.
  2. Az alkalmazások a leggyakoribb okozók. Az értékelés-widget, az ajánló-blokk és a felugró kupon mind utólag szúr be tartalmat.
  3. Minden app-blokknak adj min-height értéket a témában, hogy a hely előre megvan.
  4. Az akciós csíkot (announcement bar) ne JavaScript jelenítse meg. Rendereld szerveroldalon.

Unas

  1. Az Unas sablonjaiban a saját HTML-blokkokat te szerkeszted. Minden beillesztett képre írj width és height attribútumot.
  2. A termékkép-galériát ne cseréld le külső szkriptre méretezés nélkül.
  3. A fejlécbe illesztett külső kódokat (chat, pop-up) töltsd be késleltetve, és fix pozícióval.

Shoprenter

  1. A Shoprenter sablonszerkesztőjében nézd meg a termékkártya sablonját. A képeknek legyen fix aránya CSS-ből.
  2. A saját CSS-be tegyél aspect-ratio szabályt a termékkép-konténerekre.
  3. A banner-modulokat méretezd előre, ne hagyd, hogy a kép mérete döntse el a magasságot.

Egyedi fejlesztés

  1. Minden <img> és <video> kapjon width és height attribútumot. Ezek a natív arányt adják meg, a CSS felülírja a tényleges méretet.
  2. Használj aspect-ratio CSS-tulajdonságot a rugalmas konténerekre.
  3. Iframe-eknek (YouTube, Google Térkép) adj wrapper divet fix aránnyal.
  4. Dinamikusan betöltött tartalomhoz tarts fenn helyet skeleton-nal vagy min-height-tal.
  5. Animációnál transform-ot használj, ne top/left/margin értéket. A transform nem okoz layout shiftet.
  6. A kritikus CSS-t tedd inline-ba, hogy ne legyen villanás. Erről: Render-blokkoló erőforrás.

Gyakori hibák

  • Méret nélküli kép lazy loadinggal: a böngésző nem tud helyet foglalni, így a kép megérkezésekor mindent lejjebb tol.
  • Cookie-sáv a tartalom fölé beszúrva: az oldal tetején megjelenő sáv a teljes tartalmat elmozdítja, és ez a legnagyobb egyszeri CLS-forrás.
  • Csak asztali nézetben mérsz: mobilon ugyanaz az oldal gyakran háromszoros CLS-t produkál, mert a keskeny képernyőn minden elmozdulás arányosan nagyobb.
  • A CSS-ben megadott méret helyettesíti az attribútumot: a böngésző a CSS betöltése előtt már elkezd rajzolni, ezért az HTML-attribútum nélkül késve tudja meg az arányt.
  • Utólag betöltött reklám- vagy widget-hely: ha nincs min-height, a beérkező tartalom kiüti a helyéről a lenti részeket.
  • Webfont-csere kontroll nélkül: a tartalék betűtípus más szélességű, így a szöveg átrendeződik, amikor a valódi font megérkezik.
  • Csak a labor-értéket nézed: a Lighthouse szintetikus környezetben mér, a valódi felhasználók adata ettől eltérhet.

Technikai példa

Kép mérettel és aránnyal

<!-- Rossz: a bongeszo nem tudja, mekkora helyet foglaljon -->
<img src="/kepek/termek.webp" alt="Kek futocipo oldalnezetbol" loading="lazy">

<!-- Jo: a width/height megadja az aranyt, a CSS a tenyleges meretet -->
<img src="/kepek/termek.webp"
     alt="Kek futocipo oldalnezetbol"
     width="800"
     height="600"
     loading="lazy">

A width és height itt nem pixelben rögzíti a képet. A böngésző ebből számolja ki a képarányt, és azonnal lefoglalja a helyet. A tényleges megjelenítést a CSS szabályozza:

<style>
  img {
    max-width: 100%;
    height: auto;
  }

  /* Beagyazott videonak fix arany, hogy ne ugorjon */
  .video-wrapper {
    aspect-ratio: 16 / 9;
    width: 100%;
  }

  .video-wrapper iframe {
    width: 100%;
    height: 100%;
    border: 0;
  }

  /* Kesobb erkezo widgetnek fenntartott hely */
  .review-widget {
    min-height: 240px;
  }
</style>

CLS mérése a böngészőben

<script>
  let cls = 0;

  new PerformanceObserver((list) => {
    for (const entry of list.getEntries()) {
      if (!entry.hadRecentInput) {
        cls += entry.value;
        console.log('CLS:', cls.toFixed(4), entry.sources);
      }
    }
  }).observe({ type: 'layout-shift', buffered: true });
</script>

Ezt a kódot ideiglenesen beillesztve a konzolban látod az aktuális CLS-értéket. A hadRecentInput szűrő kihagyja a felhasználói kattintás utáni mozgásokat. Az entry.sources megmondja, pontosan melyik DOM-elem mozdult el.

Gyakori kérdések

Mennyi a jó CLS-érték?
0,1 alatt jó, 0,25 felett rossz. A kettő között fejlesztendő a besorolás. Mobilon és asztali nézeten külön mérd, mert ugyanaz az oldal eltérő értéket adhat.
Miért más a PageSpeed és a Search Console CLS-értéke?
A PageSpeed laboradata egy szimulált betöltésből származik, fix eszközzel és hálózattal. A Search Console valódi felhasználók adatát mutatja, 28 napra visszamenőleg. A valódi adat a mérvadó, de a laborteszt gyorsabban ad visszajelzést a javításról.
A lazy loading rontja a CLS-t?
Önmagában nem. Akkor rontja, ha a lusta képnek nincs megadva a mérete. Ilyenkor a böngésző nulla magassággal számol, majd a kép érkezésekor mindent lejjebb tol. Méretezett képnél a lazy loading biztonságos.
A cookie-sáv miatt magas a CLS. Mit tegyek?
Tedd a sávot fix pozícióba a képernyő aljára, position: fixed szabállyal. Így nem tolja el a dokumentum folyamát. Ha mindenképp felül kell lennie, rendereld szerveroldalon, ne JavaScripttel szúrd be utólag.
Hat a CLS a Google-helyezésre?
Igen, a Core Web Vitals része a rangsorolási jeleknek. A hatása azonban mérsékelt, és nem írja felül a tartalom minőségét. A nagyobb nyereség a konverzióban van: az ugráló oldalon a látogató mellényúl és kilép.

Források

Kapcsolódó fogalmak

A te oldaladon hogy áll a(z) „CLS (Cumulative Layout Shift)”?

Futtass egy SEO-auditot: pontszám, fejlesztői ítélet, a leggyorsabb javítások, és minden tételhez bizonyíték.

Ingyenes SEO-audit indítása