Dansk hosting fra Aalborg
100% CO₂-neutral hosting
24/7/365 dansk support
support@hostious.io
● Hostious viden · artikel

CLS i WordPress: billeder, fonts, bannere og dynamiske elementer

Skrevet af , stifter af Hostious · Udgivet 28. august 2026 · Opdateret 30. august 2026
CLS i WordPress: billeder, fonts, bannere og dynamiske elementer

Kort svar: Optag siden under både indlæsning, scroll og klik, og åbn browserens Layout Shifts-spor. Find ikke kun det element, der flyttede sig; find det element, der blev indsat eller ændrede størrelse og skubbede til resten. Reservér plads til billeder, embeds og bannere, stabilisér fontens geometri, og undgå dynamisk indhold over eksisterende indhold. Genmål hele brugerrejsen på mobil og desktop.

Cumulative Layout Shift måler uventede flytninger af synligt indhold. En god CLS er højst 0,1 ved 75-percentilen. Problemet føles konkret: brugeren er ved at trykke på en knap, og knappen flytter sig, fordi et billede, banner eller en font ændrer layoutet.

En klassisk fejl i analysen er at udpege knappen som årsag, fordi den er markeret som “shifted”. Ofte er knappen offeret; årsagen er et element længere oppe, der pludselig fik højde.

Guidens grundlag: WordPress 7.1, PHP 8.4.23, FlyingPress 5.6.5 og Chrome 151 er versionsrammen pr. 28. august 2026. Din egen sag skal indeholde et fuldt trace fra indlæsning, scroll og relevante interaktioner ved samme viewport og samtykketilstand. En syntetisk stagingfixture kan vise mekanismen, men erstatter ikke feltdata fra rigtige besøgende.

Feltdata og labdata kan vise forskellige problemer

En labtest registrerer typisk indlæsningen og en kort periode bagefter. Rigtige brugere scroller, åbner accordions, accepterer samtykke, indlæser anbefalinger og bruger sticky navigation. Derfor kan feltdata vise dårlig CLS, selv om en enkelt labkørsel ser ren ud.

Afgræns først URL-type, enhed og tidspunkt i feltdata. Reproducer derefter flere forløb:

  1. frisk indlæsning uden interaktion;
  2. langsom scroll gennem hele siden;
  3. åbning af menu, accordion og modal;
  4. samtykke accepteret og afvist;
  5. formular med valideringsfejl;
  6. kurv eller variantvalg på en webshop.

Diagnosematrix: find elementet, der skubber

Signal i layout-shift-sporetSandsynlig årsagNæste sikre kontrol
Skiftet kommer, når et billede eller en video bliver synligMediet havde ingen stabil dimension eller et andet aspect ratio end placeholderenKontrollér width, height, beregnet aspect-ratio og containerhøjde i den oprindelige HTML/CSS
Overskrifter og navigation skifter linje, når fontrequesten afsluttesFallback- og webfont har forskellig geometriMatch shift-tidspunktet med fontrequesten og sammenlign på staging med en metrisk tæt fallback
Hele siden hopper, når cookie- eller kampagnebanneret visesKomponenten indsættes sent i dokumentflowet uden reserveret pladsGentag som helt ny besøgende ved både accept og afvisning, og mål bannerets højde før og efter
Skiftet kommer først efter scrollSticky header, lazy-loadet blok eller sent indsat widget ændrer højde/positionOptag bounding boxes lige før og efter skiftet og find det første element, hvis geometri ændres
Formularfejl eller accordion skubber den knap, brugeren arbejder vedDynamisk indhold åbnes uden stabil plads eller en kontrolleret bevægelseTest samme handling med reserveret fejl-/panelplads og kontrollér samtidig fokus og mobilvisning
DevTools markerer et element, som ikke selv ændrer størrelseDet markerede element er offer; årsagen ligger tidligere i layoutetGå baglæns i DOM og tidslinje til den første indsættelse eller størrelsesændring over elementet
Kun ét breakpoint har høj CLSBreakpoint-specifik ratio, skjul/vis-regel eller headerhøjdeTest lige under og over breakpointet med samme indhold og sammenlign computed styles
Kontrolleret stagingtest hvor et banner skaber et layoutskift
Syntetisk CLS-scenarie fra Hostious Article Lab 1.4.0, testet 28. august 2026 på isoleret staging. Et 180 pixel højt banner indsættes med vilje uden reserveret plads; billedet er ikke en måling af hostious.io.

Hvad den syntetiske illustration faktisk viser

I Article Lab 1.4 på staging blev et kontrolleret layoutskift målt til 0,0391. Skiftet blev fremkaldt for at gøre tidslinjen og de berørte elementer synlige. Det er ikke hostious.io's CLS, ikke CrUX, ikke en Lighthouse-vurdering og ikke produktionsbevis. Én klynge på en testside kan heller ikke beskrive hele en brugers besøg.

Brug eksemplet til at træne årsagskæden: en blok får højde, indholdet nedenunder flytter sig, og browseren markerer de elementer, der ændrer position. Det mest synlige markerede element er ikke nødvendigvis den komponent, der skal rettes. På den virkelige side skal du gå tilbage til den første ændring i højde, fontgeometri eller position.

Et godt før/efter-bevis indeholder derfor både trace og billede. Før: banneret indsættes over overskriften 900 millisekunder efter load, og hele heroen flyttes. Ændring: bannerets plads reserveres fra første rendering på staging. Efter: den oprindelige klynge er væk, banneret kan stadig accepteres og afvises, og den reserverede plads giver ikke et stort tomt område på mobil. Tallene i dette eksempel er metodeillustration – brug altid egne målte tider i en konkret sag.

Trin 1: Brug Layout Shifts-sporet

Optag forløbet i browserens Performance-panel. Åbn hver layout-shift-klynge og gennemse de berørte elementer. Notér:

  • tidspunkt og scorebidrag;
  • viewport;
  • elementer, der flyttede sig;
  • elementet umiddelbart før dem i layoutet;
  • request eller script, der blev færdigt på samme tidspunkt;
  • om brugerinput lå lige før skiftet.

Et skift umiddelbart efter et forventet brugerinput tæller ikke altid på samme måde, men det kan stadig være dårlig brugeroplevelse. Ret derfor synlige hop, selv når ét værktøj ikke medregner dem i scoren.

Trin 2: Billeder og video skal have reserveret plads

Et <img> eller <video> uden kendt forhold mellem bredde og højde kan få nul højde, indtil ressourcen er hentet. Sørg for gyldige width– og height-attributter eller en korrekt CSS-aspect-ratio, så browseren kan reservere plads.

Kontrollér:

  • om builderen outputter dimensioner i HTML;
  • om CSS overskriver forholdet forkert;
  • om responsive billedkandidater har samme beskæring/ratio;
  • om lazy-load-placeholderen har samme dimension som det endelige medie;
  • om billedet ændrer containerhøjde ved breakpoint.

Brug ikke en fast pixelhøjde på alle skærme som hurtig løsning. Den kan beskære indhold eller skabe store tomme områder. Reservér plads efter komponentens faktiske design.

Trin 3: Reservér plads til embeds, kort og dynamiske blokke

Video-embeds, anmeldelser, chat, kort og tredjepartswidgets kommer ofte efter hoved-HTML'en. Giv wrapperen en kendt minimumshøjde eller aspect ratio, der matcher den endelige komponent. Brug en preview/placeholder, som fylder præcis samme plads.

Hvis indholdets højde varierer kraftigt, skal du overveje at placere det længere nede, åbne det efter brugerinput eller bruge en container, der vokser nedad uden at skubbe kritiske kontroller, som brugeren er ved at anvende.

Trin 4: Bannere og samtykke må ikke skubbe siden uventet

Cookie-, kampagne- og driftsbannere bliver ofte indsat efter et script er indlæst. Vælg én bevidst model:

  • en overlay, der ikke ændrer dokumentflowet;
  • reserveret plads fra første HTML/CSS;
  • en stabil komponent på et kendt sted.

Test både første besøg, tilbagevendende besøg, accept, afvisning og ændring af samtykke. Et banner, der kun vises for nye brugere, kan være usynligt i din sædvanlige indloggede test.

Sørg samtidig for, at overlayet ikke skjuler indhold, fokus eller knapper på små skærme. En lav CLS-score må ikke købes med dårlig tilgængelighed.

Trin 5: Stabiliser fonts

Når webfonten erstatter fallback-fonten, kan tekst få en anden bredde og linjehøjde. Det kan flytte navigation, overskrifter og hele sektioner.

Start med at kontrollere:

  • hvor tidligt fontfilen opdages;
  • om der hentes unødvendigt mange vægte og tegnsæt;
  • om fallback-fonten har lignende geometri;
  • om font-display-strategien passer til indholdet;
  • om en preload faktisk bruges og ikke duplikeres.

En preload af alle fontfiler kan konkurrere med LCP. Vælg kun den fontfil, som dokumenteret bruges over folden, og kontroller requestens prioritet og crossorigin-match.

Trin 6: Sticky headers og mobile menuer

En sticky header kan skabe skift, hvis dens højde ændres efter scroll, eller hvis den først går fra statisk til fixed uden en placeholder. Sammenlign headerens bounding box før og efter tilstandsskiftet.

Mulige rettelser:

  • behold en wrapper med stabil højde;
  • animér med transform i stedet for layout-egenskaber;
  • undgå at indlæse logo med ukendt dimension;
  • hold adminbar-, samtykke- og kampagneoffsets konsistente;
  • test menuåbning ved alle breakpoints.

Et element kan være visuelt skjult og stadig optage plads – eller omvendt. Kontroller den beregnede CSS, ikke kun builderpanelet.

Trin 7: Formularer og valideringsbeskeder

Når en fejlbesked indsættes over submitknappen, flytter alt under feltet sig. Det er ofte acceptabelt efter en tydelig brugerhandling, men det kan stadig gøre formularen svær at bruge. Reservér en lille fejlregion, placer beskeden tæt ved feltet, og flyt fokus meningsfuldt uden at hoppe siden unødigt.

Test tom indsendelse, ugyldigt felt, serverfejl og succes. Success state kan have helt anden højde end formularen; hvis den erstatter komponenten, skal scrollposition og fokus håndteres.

Trin 8: CSS-optimering og cache

Remove Unused CSS eller asynkron CSS kan skabe et kort øjeblik med uformateret indhold, som derefter hopper på plads. Sammenlign HTML og CSS-kæde med optimeringen slået fra på staging. Hvis problemet forsvinder, skal den manglende/delayed CSS afgrænses.

I FlyingPress skal du finde den nødvendige selector for den dynamiske tilstand og bruge en minimal safelist. Brug RUCSS-guiden i stedet for at slå hele stylesheets fri på mistanke.

Verifikation

En rettelse er dokumenteret, når:

  • det oprindelige shift ikke længere findes i samme forløb;
  • nye shift-klynger ikke er introduceret;
  • mobil, tablet og desktop er testet;
  • nyt og tilbagevendende besøg med samtykke er testet;
  • lazy-loaded indhold og scrolltilstande er testet;
  • LCP og INP ikke er blevet dårligere;
  • feltdata følges over tid separat fra labresultatet.

Optag en kort skærmvideo sammen med trace. Den gør det lettere at forbinde et teknisk layoutskift med det, brugeren oplever.

Kontrollér også det, som scoren ikke fortæller

En overlayløsning kan fjerne et layoutskift, men samtidig dække checkoutknappen. En fast højde kan stabilisere en hero på desktop og beskære teksten på mobil. En fontjustering kan reducere skift og gøre brødteksten sværere at læse. Eftertesten skal derfor sammenholde geometri med funktion og design.

Brug en lille matrix: ny/tilbagevendende bruger, mobil/desktop og før/efter samtykke. Tilføj de komponenter, der findes på skabelonen: sticky header, accordion, formularfejl og lazy-loaded indhold. Godkend først rettelsen, når det oprindelige skift er væk i alle relevante forløb, og fokus, scrollposition og klikmål stadig opfører sig naturligt.

Rollback og eskalering

Gendan den seneste dimensions-, font-, banner- eller CSS-indstilling og ryd den berørte cache. Hvis en ændring har flyttet en komponent visuelt, sammenlign mod designets kendte reference før du godkender rollback.

Eskalér til builder-/temaudvikleren, hvis komponenten ikke kan reservere stabil plads i native indstillinger. Eskalér til tredjepartsleverandøren med et minimalt eksempel, hvis deres widget ændrer højde uden en stabil event eller callback. Hostious WordPress-support kan hjælpe med trace og komponentafgrænsning.

Sådan dokumenterer du din egen CLS-sag

  1. Gem Layout Shifts-sporet med klyngen og de berørte elementer markeret.
  2. Vis det samme billede uden og med korrekt reserveret aspect ratio.
  3. Dokumentér samtykkebanneret ved nyt og tilbagevendende besøg på mobil.
  4. Sammenlign tekstens bounding box før og efter en fontrettelse.
  5. Gem sticky header før og efter scroll sammen med wrapperens mål.
  6. Vis formularens fejl- og successtate og noter fokus- og scrollposition.

Gem performance trace, shift-score pr. klynge, elementselectorer, screenshots eller video, HTML-dimensioner og relevante requesttimings. Mærk syntetiske optagelser som staging, og fjern formular- og brugerdata.

Ofte stillede spørgsmål om CLS

Hvad er et godt CLS-tal?

Under 0,1 i feltdata. Mellem 0,1 og 0,25 bør forbedres, og over 0,25 opleves siden som hoppende – typisk ved indlæsning og på mobil.

Hvad skaber layoutskift på WordPress-sider?

Billeder uden dimensioner, webfonts der skifter mål, bannere og embeds der indsættes over indholdet samt sticky headers, der ændrer højde. Find elementet, der SKUBBER – ikke kun det, der flytter sig.

Hvordan fixer jeg billed-CLS i WordPress?

Sørg for width/height eller aspect-ratio på alle billeder – WordPress sætter det automatisk, hvis temaet ikke fjerner det. Reservér også fast plads til annoncer, embeds og cookiebannere.

Læs også