Mikä on Cumulative Layout Shift (CLS) ja miten se korjataan

Kattava opas Cumulative Layout Shift -ongelmien löytämiseen ja korjaamiseen sivustollasi

Arjen Karel Core Web Vitals Consultant
Arjen Karel - linkedin
Last update: 2026-02-21

Cumulative Layout Shift (CLS) - lyhyesti

Cumulative Layout Shift (CLS) on käyttäjäkeskeinen mittari, joka mittaa verkkosivun visuaalista vakautta. Se seuraa käytännössä sitä, kuinka usein ja kuinka paljon sivun sisältö liikkuu latauksen aikana. Asettelun siirtymät voivat olla turhauttavia käyttäjille, sillä ne voivat johtaa tahattomiin klikkauksiin, rikkoutuneeseen sivun muotoiluun ja yleisesti sekavaan käyttökokemukseen.

Vuodesta 2020 lähtien Cumulative Layout Shift (CLS) on yksi kolmesta Core Web Vitals -mittarista. CLS edustaa Core Web Vitals -mittariston visuaalista vakautta ja määrittää, kuinka vakaa verkkosivun pääsisältö on koko sen elinkaaren aikana. 

Yksinkertaisesti sanottuna: hyvä CLS-pistemäärä takaa visuaalisesti vakaan käyttökokemuksen!

How To Fix Cumulative Layout Shift (CLS)

Mikä on Cumulative Layout Shift (CLS)?

Cumulative Layout Shift (CLS) edustaa Core Web Vitals -mittariston 'visuaalista vakautta'. Cumulative Layout Shift (CLS) mittaa sivun liikkeitä, kun sisältö renderöityy tai uutta sisältöä näytetään sivulla. Se laskee pistemäärän sen perusteella, kuinka suuri osa sivusta liikkuu odottamattomasti ja kuinka pitkälle se siirtyy. Nämä sisällön siirtymät ovat erittäin ärsyttäviä, sillä ne voivat saada sinut menettämään paikkasi lukemassasi artikkelissa tai, mikä vielä pahempaa, klikkaamaan väärää painiketta!

Mikä on hyvä Cumulative Layout Shift (CLS) -pistemäärä?
Hyvä CLS-pistemäärä on mikä tahansa arvo välillä 0 ja 0.1. Jos CLS-pistemääräsi on välillä 0.1 ja 0.25, se vaatii parannusta. Yli 0.25:n CLS-pistemäärä katsotaan heikoksi. Läpäistäksesi Cumulative Layout Shift -mittarin Core Web Vitals -arvioinnissa vähintään 75 % kävijöistäsi tarvitsee saada 'hyvä' CLS-pistemäärä.

cumulative layout shift

CLS:n merkitys verkkosivujen suorituskyvyssä ja user experience -näkökulmasta

Cumulative Layout Shift (CLS) liittyy sekä verkkosivujen suorituskykyyn että user experience -kokemukseen, koska se vaikuttaa suoraan siihen, kuinka vakaalta ja ennustettavalta verkkosivu tuntuu latauksen aikana. Tässä on syyt, miksi sillä on merkitystä:

  • UX, sitoutuminen ja brändimielikuva:  Odottamattomat asettelun siirtymät häiritsevät käyttäjän toimintaa, vaikeuttaen tiedon löytämistä, painikkeiden klikkaamista ja sivun kanssa vuorovaikuttamista tarkoitetulla tavalla. Tämä turhautuminen voi johtaa huonoihin kokemuksiin, joissa käyttäjät hylkäävät verkkosivuston kokonaan.
    Verkkosivuston user experience heijastaa sen takana olevaa brändiä. Toistuvat asettelun siirtymät voivat antaa vaikutelman huonosti suunnitellusta tai ylläpidetystä verkkosivustosta, häiritä käyttäjien sitoutumista, mikä johtaa vähentyneeseen vuorovaikutukseen ja mahdollisesti korkeampiin välittömän poistumisen lukuihin.
  • Saavutettavuus: Asettelun siirtymät voivat olla erityisen häiritseviä käyttäjille, joilla on vammoja ja jotka käyttävät avustavia teknologioita tai ruudunlukijoita. Vakaa asettelu varmistaa, että kaikki voivat navigoida ja vuorovaikuttaa verkkosivuston kanssa tehokkaasti.
  • SEO ja hakukonesijoitukset: Core Web Vitals on pieni mutta merkittävä sijoitustekijä Googlessa. Google ja muut hakukoneet suosivat verkkosivustoja, jotka tarjoavat hyvän user experience -kokemuksen. CLS on yksi Core Web Vitals -mittareista, jotka Google ottaa huomioon verkkosivustoja sijoittaessaan. CLS:n optimointi voi antaa verkkosivustollesi kilpailuedun hakutuloksissa.

Miten CLS mitataan?

Sivun CLS voidaan mitata Layout Instability API:lla. Seuraavassa on yksinkertainen esimerkki tämän API:n käytöstä

 

CLS:n laskeminen

CLS lasketaan helposti yksinkertaisella mutta tehokkaalla kaavalla:

CLS = sum(impact-fraction * distance-fraction)

Impact fraction mittaa, kuinka suuri osa sivun näkyvästä sisällöstä on siirtynyt. Distance fraction mittaa, kuinka pitkälle sisältö on siirtynyt. Jos esimerkiksi 50 % sivusta (kuinka paljon) on siirtynyt 25 % (kuinka pitkälle) sivun näkymästä. CLS-pistemäärä = 0.50 * 0.25 = 0.125

Odotetut vs. odottamattomat asettelun siirtymät

Kaikki asettelun siirtymät eivät ole huonoja, ainoastaan ne, joita et odota. Kun klikkaat esimerkiksi 'lataa lisää kohteita' -linkkiä, odottaisit lisää kohteita ilmestyvän sivulle ja sivun sisällön siirtyvän.

Siksi vain odottamattomat asettelun siirtymät aiheuttavat CLS-kontribuution. Jos käyttäjä esimerkiksi klikkaa painiketta ja vastauksena sivulle lisätään uutta sisältöä (esimerkiksi pudotusvalikko), asettelun siirtymä jätetään pois CLS:stä. Tarkemmin sanottuna:
Asettelun siirtymät, jotka tapahtuvat 500 millisekunnin sisällä käyttäjän syötteestä, jätetään pois laskelmista

Asettelun siirtymäsessiot

Kun CLS esiteltiin ensimmäisen kerran, joitakin sivustoja rangaistiin epäreilusti huonolla CLS-pistemäärällä. Esimerkiksi sivu, joka käyttää ääretöntä vieritystä, olisi saanut uuden lisätyn sisällön vaikutuksen lisättyä kokonais-CLS-pistemäärään jokaisella uudella vierityksellä. Siksi CLS lasketaan nyt sessioissa. Jokaisella sessiolla on 5 sekunnin kesto. Suurimman CLS-pistemäärän saanut sessio tulee lopulliseksi CLS-pistemääräksi.
Jos esimerkiksi ensimmäisten 5 sekunnin aikana CLS-pistemäärä on 0.095, seuraavassa 5 sekunnin sessiossa CLS on 0.15 ja viimeisessä sessiossa CLS-pistemäärä on 0. Lopullinen CLS-pistemäärä on näistä kolmesta korkein: 0.15.

cls session

Muistutus: CLS ja Core Web Vitals!

Cumulative Layout Shift (CLS) on tärkeä, käyttäjäkeskeinen mittari visuaalisen vakauden mittaamiseen. Cumulative Layout Shift (CLS) on osa Core Web Vitals -mittaristoa yhdessä First Contentful Paint, Largest Contentful Paint ja First Input Delay -mittareiden kanssa.

Miten CLS-ongelmia mitataan

1. Käytä Lighthouse-työkalua Cumulative Layout Shift -ongelmien löytämiseen

Helpoin tapa löytää asettelun siirtymiä on käyttää Lighthouse-työkalua omassa Chrome-selaimessasi. Suorita Lighthouse-auditointi klikkaamalla hiiren oikealla painikkeella mitä tahansa kohtaa sivulla. Valitse sitten tarkasta elementti, valitse Lighthouse-välilehti nyt avautuneessa konsolissa ja suorita auditointi.

Auditoinnin tulokset näyttävät Cumulative Layout Shift (CLS) -pistemäärän. Vieritä alas Diagnostics-osioon ja laajenna Cumulative Layout Shift -tiedot nähdäksesi, mitkä elementit aiheuttavat asettelun siirtymän.

Rehellisesti sanottuna en itse juurikaan käytä tätä menetelmää. Tarkkojen asettelun siirtymän etäisyystietojen puuttuminen tekee näistä tuloksista vaikeampia tulkita.

lighthouse score cls
lighthouse details cls

2. Käytä CLS Visualizer -laajennusta Cumulative Layout Shift -ongelmien löytämiseen

CLS Visualizer on kirjoittamani Chrome-laajennus. Yhdellä painikkeen klikkauksella kaikki sivun asettelun siirtymät visualisoidaan. Tämä on ensimmäinen ratkaisu, johon turvaudun yrittäessäni määrittää sivun asettelun siirtymää. Se on helppo ja antaa erinomaisen visuaalisen yleiskuvan Cumulative Layout Shift -mittarista.

cls with cls visualizer

3. Käytä Chromen Performance-välilehteä CLS-ongelmien löytämiseen

Ylivoimaisesti paras tapa debugata asettelun siirtymää on Chromen Performance-välilehden kautta. Avataksesi Performance-välilehden siirry mille tahansa sivulle Chromessa ja käytä tätä pikanäppäinyhdistelmää:
- Paina Ctrl-Shift-I (Avaa kehittäjätyökalut)
- Paina Ctrl-Shift-E (Aloita profilointi ja lataa sivu uudelleen)

Tarkastele nyt aikajanaa ruutu ruudulta viemällä hiiri aikajanan päälle yläreunassa ja etsi asettelun siirtymiä (asettelun siirtymät on myös merkitty punaisella Performance-välilehden Experience-osiossa). 

4. Käytä RUM-työkaluja kuten CoreDash

RUM tarkoittaa Real User Monitoring -mittausta ja RUM-data voi tarjota arvokkaita reaaliaikaisia näkemyksiä Core Web Vitals -mittareista. RUM-työkalut kuten CoreDash voivat eritellä Cumulative Layout Shift -mittarin segmentteihin kuten selain, elementti, navigointityyppi, tietty URL tai sivutyyppi. Tämä auttaa tunnistamaan ja korjaamaan huonosti suoriutuvat sivut ja ongelmalliset elementit.

cls metricpercentile coredash

Yleisimmät Cumulative Layout Shift -ongelmat ja niiden korjaaminen

Kaikkien asettelun siirtymien alkuperä on pohjimmiltaan sama. Jossain vaiheessa elementti, joka oli sijoitettu toisen elementin yläpuolelle, vei enemmän tai vähemmän tilaa kuin aiemmin. Tämä johtuu tyypillisesti yhdestä tai useammasta seuraavista syistä:

  • Kuvat, iFrame-elementit tai videot
  • Mainokset
  • Injektoitu sisältö
  • Animaatiot
  • Hitaat vuorovaikutukset
  • Verkkofontit

Kuvien, videoiden ja iFrame-elementtien aiheuttamat CLS-ongelmat

Kuvat, videot ja iFrame-elementit ovat tavallisia syyllisiä Cumulative Layout Shift -ongelmissa, sillä nämä elementit muodostavat suurimman osan CLS-ongelmista.

3 stage cls image example

Kuvien, videoiden tai iFrame-elementtien aiheuttamat asettelun siirtymät johtuvat aina puuttuvista mitoista. Yleisimmin tämä johtuu siitä, että elementin korkeutta ja leveyttä ei ole määritelty HTML:ssä. Yleinen hyvä käytäntö on asettaa kuvan luontainen leveys HTML:ssä ja käyttää tyylejä skaalaamaan kuva automaattisesti sopimaan sen yläelementtiin.

<img src="img.jpg" >
<style>
   img{
      max-width:100%;
      height:auto
   }
</style>

Huomaa, että mitat voidaan määritellä myös style-ominaisuutena tai jopa asettamalla aspect-ratio -tyylimääritys.

Verkkofonttien aiheuttamat CLS-ongelmat

Cumulative Layout Shift voi aiheutua verkkofonteista. Verkkofontit ovat fontteja, jotka eivät ole asennettuna paikalliselle tietokoneellesi tai puhelimeesi, vaan ne ladataan internetistä. Kun verkkofonttia ei ole vielä ladattu, sivu renderöidään yleensä fallback-fontilla. Tämän fallback-fontin koko voi poiketa lopullisesta fontista. Tässä esimerkissä fallback-fontti on hieman pienempi kuin lopullinen verkkofontti.

3 stage cls font example

Verkkofonttien aiheuttaman asettelun siirtymän 'korjaamiseen' on monia menetelmiä. Ne perustuvat kahteen tekniikkaan:

1. Tee fallback-fontista verkkofonttia vastaavampi. Tehokkain tapa on ylikirjoittaa @font-face-määritykset.

Toinen tapa on nopeuttaa verkkofonttien lataamista. Tämä tekee ne selaimelle saataville ennen kuin selain aloittaa renderöinnin. Yleinen tapa tehdä tämä on esilatata kriittiset verkkofontit. 

Hitaiden käyttäjävuorovaikutusten aiheuttamat CLS-ongelmat

Alla olevassa esimerkissä "lataa lisää" -painike aiheuttaa selvästi asettelun siirtymän. Asettelun siirtymää ei kuitenkaan lisätä CLS-mittareihin. Tämä johtuu siitä, että asettelun siirtymä on tarkoituksellinen.

Selain tietää tämän, koska nyt näkyvissä olevilla elementeillä on attribuutti nimeltä 'hadRecentInput'. Kun tämä on asetettu arvoon true JA asettelun siirtymä tapahtuu 500 ms:n sisällä syötetapahtumasta (painikkeen klikkauksesta), selain ei raportoi asettelun siirtymää.

cls user interaction demo

Varmista, että käyttäjävuorovaikutukset valmistuvat 500 ms:n sisällä

AJAX:n aiheuttamat CLS-ongelmat

AJAX mahdollistaa verkkosivujen asynkronisen päivittämisen vaihtamalla dataa verkkopalvelimen kanssa taustalla. Uuden sisällön injektoiminen mille tahansa verkkosivulle voi luonnollisesti johtaa merkittävään asettelun siirtymään. Siksi on viisasta varata tilaa uudelle sisällölle. Et tietenkään tiedä uuden sisällön korkeutta etukäteen, mutta voit tehdä perustellun arvion.

Jos esimerkiksi keskimääräinen AJAX-sisältö vie 50 % näytöstä, on viisasta varata tuo 50 %. Kun uusi sisältö vie lopulta 40 tai 60 % näytöstä, CLS (50 % - 40 % = 10 % distance-fraction) on silti huomattavasti pienempi kuin 50 % distance-fraction.

Tässä on esimerkki, miten tämä tehdään:

<style>
   #ajax{height:400px}
   #ajax.loaded{height:auto;}
</style>
<script>
   fetch('/ajax-content)
   .then(response => response.json())
   .then(result => {
      let el = document.getElementById('ajax');
      el.innerHTML(result.html);
      el.classList.add('loaded');
   })
<script>


Mainosten aiheuttamien CLS-ongelmien korjaaminen

Mainokset latautuvat usein (huomattavasti) myöhemmin sivulla. Tämä tekee mainosten aiheuttamista Cumulative Layout Shift -ongelmista erityisen ärsyttäviä. Kun useita mainoksia latautuu näkyvässä näkymässä, 'sivu ei yksinkertaisesti pysy paikallaan'. Korjataksesi tämän, varaa tilaa myös mainoksille, erityisesti näkyvässä näkymässä oleville mainoksille.

<style>
// rectangle mobile ad
.ad{min-height:250px;background:#dedede}
// banner desktop ad
@media only screen and (min-width: 600px) {
.ad{min-height:90px}
}
</style>

Stop debating in Jira.

Get a definitive answer on your performance issues. I deliver a granular breakdown of your critical rendering path.

Book a Deep Dive >>

  • Definitive Answers
  • Granular Breakdown
  • Critical Path Analysis
Mikä on Cumulative Layout Shift (CLS) ja miten se korjataanCore Web Vitals Mikä on Cumulative Layout Shift (CLS) ja miten se korjataan