Sebesség

CLS-hibák felkutatása és javítása: miért ugrál az oldalad betöltés közben

CLS-hibák felkutatása és javítása: mit mér a Cumulative Layout Shift, mitől ugrál az oldalad, és milyen konkrét recept javítja elemtípusonként.

Scheo · 2026-08-21 · olvasási idő ~10 perc · Szerző: Schmidt Péter

A lényeg dióhéjban: A CLS azt méri, mennyit ugrál a már látható tartalom betöltés és görgetés közben. A hibák nagy része néhány visszatérő okra vezethető vissza (méret nélküli kép, későn érkező betűtípus, beszúrt sütibanner vagy sáv), és mindegyikhez tartozik egy jól körülírható javítás: helyfoglalás előre.

A látogató ritkán mondja azt, hogy „ugrált az oldal". Azt mondja, hogy „valami nem stimmel a telefonon", vagy szó nélkül visszalép. A Cumulative Layout Shift (CLS) az a mérőszám, amelyik ezt az élményt számmá alakítja, és a Google Core Web Vitals hármasának egyik tagja. Az alábbiakban végigmegyünk azon, mit mér pontosan, mi okozza a legtöbb ugrálást a magyar kkv-oldalakon, hogyan találod meg a felelős elemet, és milyen konkrét javítás tartozik hozzá elemtípusonként.

CLS-hibák felkutatása és javítása: miért ugrál az oldalad betöltés közben
CLS-hibák felkutatása és javítása: miért ugrál az oldalad betöltés közben

Mit mér pontosan a Cumulative Layout Shift?

Rövid válasz: a CLS azt méri, hogy a képernyőn már látható tartalom mekkora része mozdul el váratlanul, és milyen messzire, a lap teljes élettartama alatt.

Hivatalosan igazolt: a Google fejlesztői dokumentációja szerint egyetlen elmozdulás pontszáma két tényező szorzata. Az egyik az érintett terület aránya (mekkora részét foglalja el a képernyőnek az elmozdulás előtti és utáni állapot együtt), a másik az elmozdulás távolsága, a nézetablak nagyobbik oldalához viszonyítva. Ha egy elem a képernyő felét kitölti, és a magasság negyedével csúszik lejjebb, az önmagában érzékelhető pontszámot ad.

A rendszer nem egyszerűen összeadja az összes elmozdulást. Úgynevezett munkamenet-ablakokba (session window) csoportosítja őket: egy ablak legfeljebb 5 másodpercig tart, és lezárul, ha egy másodpercnél hosszabb szünet következik. A lap CLS-értéke a legrosszabb ilyen ablak összege lesz. A hivatalos küszöbök: 0,1 alatt jó, 0,25 fölött gyenge, a köztes sáv javításra szorul. Fontos, hogy az értékelés a valós felhasználói mérések 75. percentilisén történik, tehát nem az átlagos, hanem a rosszabbul járó negyedhez közeli látogató élménye a mérce.

Két pontosítás, ami sok félreértést old fel. Az első: nem minden mozgás büntetendő. Ha a változás a felhasználó beavatkozása után fél másodpercen belül történik (lenyitsz egy menüt, megnyitsz egy harmonikát), azt a böngésző várt elmozdulásnak tekinti, és nem számolja bele. A második: a CLS nem csak az első másodpercekre vonatkozik. A görgetés közben belapoló, lusta betöltésű kép ugyanúgy ronthat rajta, mint a fejlécben megjelenő sáv.

Miért érzi meg a látogató a CLS-t, nem csak a mérőeszköz?

Rövid válasz: mert a CLS az egyetlen Core Web Vital, ami nem sebességet mér, hanem megbízhatóságot: azt, hogy oda kattint-e a látogató, ahová akart.

Saját tapasztalat: a leggyakoribb, valóban idegesítő eset a mobil sütibanner. A látogató a képernyő alján az „Elfogadom" gombra készül, a banner viszont éppen újrarendeződik, mert megérkezik hozzá egy betűtípus vagy egy logó, és a gomb helyére a „Beállítások" kerül. A látogató nem elemzi, mi történt: azt tapasztalja, hogy az oldal átvágta. Ugyanez a webshopok kosárgombjánál és a kapcsolatfelvételi űrlapok küldés gombjánál a legfájóbb, mert pont ott, ahol a bevétel keletkezik.

Ezért is érdemes a CLS-t nem pusztán technikai adósságként kezelni. A betöltési idő javítása gyakran csak néhány tized másodpercet hoz, amit a látogató nem feltétlenül tud megnevezni. Az ugráló elrendezés viszont konkrét, emlékezetes bosszúság. A javítása általában olcsóbb is: nem szerverre, CDN-re vagy képtömörítésre van szükség, hanem néhány attribútumra és CSS-szabályra.

Szakmai feltételezés: ahogy egyre több látogatás érkezik AI-ügynököktől és böngésző-automatizmusoktól, amelyek nem csak olvassák, hanem használják is az oldalt (gombot keresnek, űrlapot töltenek), a stabil elrendezés valószínűleg még többet fog számítani. Egy csúszkáló felületen a gépi kattintás ugyanúgy mellémehet, mint az emberi. Ez ma még nem dokumentált rangsorolási tényező, csak ésszerű következtetés, ezért így is kezeld.

Mik a leggyakoribb okok, amiktől ugrál az oldal?

Rövid válasz: szinte mindig ugyanaz a négy-öt forrás okozza a hibák túlnyomó részét, és mindegyik közös nevezője, hogy a böngésző nem tudta előre, mekkora hely kell.

Méret nélküli képek, videók és beágyazások

Ha az img elemen nincs width és height attribútum, a böngésző nulla magasságot feltételez, amíg a kép meg nem érkezik. Amint befut, a kép „kinyílik", és mindent lelök alatta. Ugyanez a helyzet a YouTube-beágyazásokkal, a térképekkel és a külső foglalási vagy időpontfoglaló widgetekkel: ezek jellemzően iframe-ben érkeznek, és a magasságukat futásidőben állítják be.

Későn betöltő betűtípus

A saját betűtípus letöltése időbe telik. Amíg nincs kész, a böngésző vagy tartalék betűvel rajzol (ezt cseréli le később), vagy láthatatlan szöveget mutat. A gond nem maga a csere, hanem hogy a tartalék és a végleges betű más szélességű: emiatt a bekezdés hossza megváltozik, néha egy sorral kevesebb vagy több lesz, és a teljes alatta lévő tartalom elcsúszik.

Dinamikusan beszúrt sütibanner és hirdetés

A sütikezelő szkript és a hirdetéskiszolgáló általában külső forrásból jön, tehát később, mint az oldal váza. Ha a banner a dokumentum folyamába kerül (nem lebegő rétegként), a beszúrás pillanatában mindent arrébb tol. A hirdetéshelyeknél még csúnyább a helyzet: ha nem érkezik hirdetés, a hely összeomlik, ha érkezik, kinyílik, és a méret kreatívonként változhat.

Felül megjelenő értesítősáv és promóciós csík

Az „Ingyenes szállítás" vagy „Nyári nyitvatartás" típusú sávok gyakran JavaScriptből kerülnek a body tetejére, néhány száz ezredmásodperccel a betöltés után. Ez a legdurvább fajta elmozdulás, mert a teljes oldalt lejjebb tolja, tehát az érintett terület aránya közel 100 százalék.

Utólag beszúrt tartalom: A/B teszt, személyre szabás, lusta betöltés

Az A/B tesztelő eszközök gyakran elrejtik, majd újrarajzolják a tartalmat. A lusta betöltés pedig akkor okoz gondot, ha a helykitöltő nem akkora, mint a végleges elem. Ilyenkor a látogató görgetés közben találkozik az ugrással, ami különösen zavaró, mert éppen olvas.

Hogyan azonosítod a konkrét elemet, ami ugrik?

Rövid válasz: a pontszám önmagában nem elég, keresd meg a felelős DOM-elemet a böngésző eszközeivel, majd ellenőrizd a valós felhasználói adaton, hogy tényleg ez a fő ok.

1. Layout Shift Regions: a leggyorsabb szemrevételezés

A Chrome fejlesztői eszközeiben nyisd meg a parancssort (Ctrl vagy Cmd + Shift + P), írd be, hogy Rendering, majd a megjelenő panelen kapcsold be a Layout Shift Regions opciót. Ezután töltsd újra az oldalt. Minden elmozduló terület villanó kék kiemelést kap. Ez másodpercek alatt megmutatja, hogy a fejléc, a bannerterület vagy a képgaléria a bűnös. Görgess is végig lassan az oldalon, mert a lusta betöltésű elemek csak ott mutatkoznak meg.

2. Performance felvétel: az időrend és a pontos elem

A Performance fülön indíts felvételt az újratöltéssel együtt (a körkörös nyíl ikonnal), mobil hálózat- és CPU-lassítás mellett. A felvételben az Experience sávban jelennek meg a Layout Shift bejegyzések. Ha rákattintasz egyre, az alsó Summary panel kiírja a pontszámot, valamint a mozgásért felelős elemet (Moved from, Moved to). Ez az a lépés, ami után már nem tippelsz, hanem tudod, melyik sorra kell ránézni a sablonban.

3. PerformanceObserver: kilistázod magadnak a konzolba

Ha sok apró elmozdulás van, hasznos egy lista. Illeszd be a konzolba a következőt, majd töltsd újra az oldalt:

new PerformanceObserver((list) => { for (const e of list.getEntries()) { if (!e.hadRecentInput) console.log(e.value, e.sources.map(s => s.node)); } }).observe({ type: 'layout-shift', buffered: true });

A kimenetben minden sor egy elmozdulás értéke, mellette a ténylegesen mozgó elem hivatkozása, amire ráállva a böngésző kiemeli az oldalon.

4. Mezei mérési adat: Search Console és PageSpeed Insights

A laborban mért CLS a te géped, a te hálózatod és a te sütibeállításaid mellett készül. A valóság ettől eltérhet, például mert nálad már el van fogadva a sütibanner, a látogatónál nem. A Search Console Core Web Vitals jelentése (a Chrome felhasználói élmény adatbázisából, CrUX) URL-csoportokra bontva mutatja a gyenge és a javításra szoruló oldalakat, külön mobilra és asztalira. A PageSpeed Insights ugyanennek az adatnak az URL-szintű változatát mutatja a lap tetején. Praktikus sorrend: a mezei adatból derül ki, hol van baj, a laborvizsgálatból az, hogy mitől. Számíts arra, hogy a mezei adat 28 napos gördülő ablakot használ, tehát a javítás hatása nem másnap látszik.

Milyen javítási recept tartozik az egyes elemtípusokhoz?

Rövid válasz: minden recept ugyanarra a mondatra vezethető vissza: foglald le a helyet azelőtt, hogy a tartalom megérkezne.

Képek, videók, iframe-ek

Add meg a natív méretarányt attribútumként, és hagyd, hogy a CSS reszponzívvá tegye:

<img src="/kepek/termek.jpg" width="1200" height="800" alt="Termékfotó" loading="lazy">

Mellé a stíluslapba: img { max-width: 100%; height: auto; }. A modern böngészők az attribútumokból kiszámolják a képarányt, és már a letöltés előtt fenntartják a helyet. Beágyazásoknál használj arányt tartó konténert: .video-doboz { aspect-ratio: 16 / 9; width: 100%; }, és az iframe legyen width: 100%; height: 100%;. Ha az elem magassága eszközfüggő (például egy térkép), adj neki legalább min-height értéket mobilra és asztalira külön.

Betűtípusok

A font-display: swap beállítás megakadályozza a láthatatlan szöveget, de önmagában nem szünteti meg az elcsúszást, csak láthatóvá teszi a cserét. Három lépés együtt működik jól. Egy: töltsd be előre a kritikus betűváltozatot (<link rel="preload" as="font" type="font/woff2" crossorigin>). Kettő: használj woff2 formátumot és csak a ténylegesen szükséges vastagságokat. Három: hangold össze a tartalék betűt a véglegessel a size-adjust, ascent-override és descent-override tulajdonságokkal egy @font-face blokkban, hogy a csere ne változtassa meg a sortöréseket. Ha a mérés azt mutatja, hogy a szövegtörzs sokat mozog, sokszor az is védhető döntés, hogy a törzsszöveg rendszerbetűvel fut, és a saját betűtípus csak a címsorokra vonatkozik.

Sütibanner és értesítősáv

A legbiztosabb megoldás, ha a banner kikerül a dokumentum folyamából: position: fixed a képernyő aljára vagy tetejére, saját rétegen. Így megjelenéskor nem tol el semmit. Ha üzletileg mégis a folyamban kell maradnia (például mert a fejléc alatt jelenik meg), akkor a sáv helyét foglald le szerveroldali kimenetben vagy fix min-height értékkel, és csak a tartalmát töltsd be később. Ügyelj arra, hogy a lebegő sáv ne takarja el a fontos gombokat: ilyenkor adj a body aljára ugyanakkora padding-et, amekkora a sáv magassága.

Hirdetéshelyek és külső widgetek

Minden hirdetéshelynek adj rögzített méretű konténert a leggyakoribb kreatívméret alapján, például .hirdetes-hely { min-height: 280px; } mobilon és a megfelelő asztali érték desktopon. Ha a hely üresen maradhat, akkor is tartsd meg a magasságot, vagy tudatosan omlaszd össze még az első festés előtt. A külső widgetek (chat, vélemények, foglalás) esetében a legjobb, ha a látható területen kívülre kerülnek, vagy lebegő rétegen jelennek meg.

Hogyan teszteld a javítást mobilon és asztali gépen?

Rövid válasz: tesztelj lassított hálózaton, üres sütiállapotból, és nézd meg a görgetést is, ne csak a betöltést.

  1. Nyiss inkognitó ablakot, hogy a sütibanner és a hozzájárulási állapot úgy viselkedjen, mint egy új látogatónál.
  2. A fejlesztői eszközökben kapcsolj mobilnézetet (jellemzően 360 vagy 390 pixel széles), és állíts be lassítást: 4x CPU és lassú 4G hálózat.
  3. Kapcsold be a Layout Shift Regions kiemelést, majd tölts újra kemény frissítéssel (gyorsítótár kikapcsolva).
  4. Figyeld az első 5 másodpercet, majd görgess végig lassan a lap aljáig, és külön nézd meg, mi történik a lusta betöltésű elemeknél.
  5. Ismételd meg asztali nézetben, 1366 és 1920 pixel szélességnél is: a fejléc és a hirdetéshelyek gyakran csak az egyik töréspontnál ugranak.
  6. Teszteld a legfontosabb sablonokat külön: főoldal, kategória, termék vagy szolgáltatás, blogcikk, kapcsolat. A CLS sablononként viselkedik, nem oldalanként.
  7. Ellenőrizd a kritikus interakciókat: kosárba tétel, űrlapküldés, menü lenyitás, szűrő használata. Az interakció utáni fél másodpercen túli mozgás beleszámít.
  8. Futtasd le a PageSpeed Insights vizsgálatot mobilra és asztalira, és jegyezd fel a laborértéket a javítás előtt és után.
  9. Nézd meg a Search Console Core Web Vitals jelentését két-négy héttel a kiadás után, mert a mezei adat lassabban mozdul.
  10. Vedd fel a listát a kiadási ellenőrzésbe: minden új sablon, plugin vagy külső szkript után ismételd meg a kört.

Saját tapasztalat: a visszaesések többsége nem a fejlesztésből jön, hanem egy utólag beillesztett külső szkriptből (új sütikezelő, új chat, új kampánysáv). Érdemes ezért a mérést nem egyszeri projektnek, hanem visszatérő ellenőrzésnek tekinteni.

Mit érdemes elkerülni a javítás közben?

Ne próbáld a problémát azzal elfedni, hogy a teljes tartalmat elrejted, amíg minden be nem töltött. Ez a CLS-t javíthatja, viszont a látogató hosszabb ideig néz üres képernyőt, és a többi mutató romlik. Hasonlóképp kerüld az animált magasságváltozást a beszúrt elemeknél: a lassított mozgás is elmozdulás. Ha egy elem méretét tényleg nem tudod előre, akkor transform alapú animációt használj, mert az nem indít újrarendezést. Végül: a stabil elrendezés önmagában nem hoz jobb pozíciót a találati listán. A Core Web Vitals a Google saját közlése szerint az oldalélmény része, ami sok tényező egyike, tehát a javítás segítheti a teljesítményt, jó eséllyel a konverziót is, de önmagában nem eredményez helyezésváltozást.

Források és további olvasnivalók

A legfontosabbak
  • A CLS a stabilitást méri, nem a sebességet: a látogató ugyanazt érzi belőle, amit a mérőeszköz kimutat.
  • A leggyakoribb okok: méret nélküli kép és beágyazás, későn váltó betűtípus, dinamikusan beszúrt sütibanner, hirdetés és értesítősáv.
  • A konkrét bűnös elem Layout Shift Regions kapcsolóval, Performance felvétellel és a konzolba írt PerformanceObserverrel azonosítható.
  • A javítás lényege mindig ugyanaz: foglald le előre a helyet width/height attribútummal, aspect-ratio-val vagy min-height-tal.
  • A labor-mérés önmagában kevés: a Search Console mezei adata mutatja meg, mit tapasztalnak a valódi látogatók.

Gyakori kérdések

Mennyi a jó CLS-érték?

A hivatalos küszöb szerint 0,1 alatt jó, 0,1 és 0,25 között javításra szorul, 0,25 fölött gyenge. Az értékelés a valós látogatói mérések 75. percentilisén történik, tehát nem az átlagot, hanem a rosszabbul járó látogatók élményét veszi alapul.

Miért más a PageSpeed Insights és a Search Console CLS-értéke?

Mert nem ugyanazt mérik. A PageSpeed labor-része egy szimulált betöltés a mérés pillanatában, a Search Console és a PageSpeed felső blokkja pedig valós felhasználói adat 28 napos gördülő ablakban. A javítás hatása a laborértéken azonnal, a mezei adaton jellemzően hetek alatt látszik.

Elég, ha csak width és height attribútumot teszek a képekre?

Sok oldalon ez adja a javulás nagy részét, de önmagában ritkán elegendő. A betűtípus-csere, a beszúrt sütibanner, az értesítősáv és a hirdetéshelyek külön kezelést igényelnek. Érdemes a Layout Shift Regions kiemeléssel ellenőrizni, mi maradt.

Beleszámít a CLS-be, ha a felhasználó kattintására változik az elrendezés?

Nem, ha a változás az interakció után fél másodpercen belül történik. A menü lenyitása vagy egy harmonika kinyitása várt elmozdulásnak számít. Ha viszont a mozgás késve, például egy másodperccel a kattintás után következik be, akkor már beleszámít.

WordPressen mi okozza leggyakrabban a CLS-hibát?

Tapasztalat szerint a külső szkriptek: sütikezelő bővítmény, kampánysáv, chat-widget, vélemény-modul. Ezek jellemzően a betöltés után szúrnak be tartalmat a dokumentum folyamába. Ezenkívül gyakori ok a sablon saját betűtípusa és a méret nélküli, csúszkába (slider) tett képek.

Javít-e a keresési helyezésen, ha rendbe teszem a CLS-t?

Önmagában nem eredményez pozíciójavulást. A Core Web Vitals az oldalélmény jelzéseinek része, ami sok tényező egyike a rangsorolásban. A stabil elrendezés viszont közvetlenül javíthatja a használhatóságot, és jó eséllyel a konverziót is, ami üzletileg gyakran többet ér.

Források és további olvasnivalók

Ezen az oldalon a hivatalosan igazolt információt elsődleges forrásokból építjük fel; a saját tapasztalatot és a szakmai becslést mindig külön jelöljük a szövegben.

Kapcsolódó

Hogyan zajlik egy AI-SEO audit: folyamatleírás

Kapcsolódó

Ügynöki (agentic) böngészés: amikor nem ember nyitja meg az oldalad

Kapcsolódó

Ai láthatóság mérés: hogyan kövessem nyomon, hogy a tartalmam szerepel-e ai javaslatokban?: amit tudnod kell róla

Helyi szolgáltatás a környékeden

Országosan dolgozunk, online és személyesen. Válaszd ki a városodat, és nézd meg, hogyan segítünk helyben:

Online marketing & AI SEO SzékesfehérvárOnline marketing & AI SEO BudapestOnline marketing & AI SEO VeszprémOnline marketing & AI SEO DunaújvárosOnline marketing & AI SEO GyőrOnline marketing & AI SEO DebrecenOnline marketing & AI SEO SzegedOnline marketing & AI SEO MiskolcOnline marketing & AI SEO PécsOnline marketing & AI SEO KecskemétOnline marketing & AI SEO NyíregyházaOnline marketing & AI SEO SzombathelyOnline marketing & AI SEO SzolnokOnline marketing & AI SEO TatabányaOnline marketing & AI SEO KaposvárOnline marketing & AI SEO BékéscsabaOnline marketing & AI SEO EgerOnline marketing & AI SEO ZalaegerszegOnline marketing & AI SEO SzekszárdOnline marketing & AI SEO Salgótarján

Weboldalkészítés városra bontva

Ha először a honlap kell, itt városonként arról írtunk:

Weboldalkészítés SzékesfehérvárWeboldalkészítés BudapestWeboldalkészítés VeszprémWeboldalkészítés DunaújvárosWeboldalkészítés GyőrWeboldalkészítés DebrecenWeboldalkészítés SzegedWeboldalkészítés MiskolcWeboldalkészítés PécsWeboldalkészítés KecskemétWeboldalkészítés NyíregyházaWeboldalkészítés SzombathelyWeboldalkészítés SzolnokWeboldalkészítés TatabányaWeboldalkészítés KaposvárWeboldalkészítés BékéscsabaWeboldalkészítés EgerWeboldalkészítés ZalaegerszegWeboldalkészítés SzekszárdWeboldalkészítés Salgótarján

15 perces AI-láthatósági gyorselemzés - díjmentesen

Megnézzük három, számodra fontos keresőkérdésnél, hogy megjelenik-e a céged a ChatGPT, a Gemini és a Google AI-válaszaiban, mely versenytársakat ajánlják helyetted, és melyik három területen érdemes először javítani. A weboldaladat előzetesen átnézzük, tehát nem sablonos, automata riportot kapsz.

Adataidat kizárólag a kapcsolatfelvételhez használjuk. Kapcsolat: m@rketinges.hu
💬 Konzultáció