Datavisning

Skeleton-loading

Et skeleton screen viser grå pladsholder-figurer i layoutet af det kommende indhold, mens data hentes — i stedet for en spinner eller en tom skærm. Bemærk med det samme: beviset for, at skeletons »føles hurtigere«, er blandet. Her er, hvad forskningen faktisk viser, og hvornår mønstret giver mening.

4 min læsning

Definition

Skeleton-loading viser en grå silhuet af det kommende indhold, mens data hentes, i stedet for en spinner.

Hvorfor det virker

Ideen bag mønstret er at flytte fokus fra »det loader« til »indholdet er på vej«. Luke Wroblewski, der opfandt begrebet i 2013, beskriver det som en tom version af siden, som indhold gradvist loades ind i. Det er designargumentet — ikke et måleresultat.1

Påstanden om, at skeletons føles hurtigere, er omdiskuteret. Et studie fra Viget (2017, n=136) fandt det modsatte: skeletonen klarede sig dårligst på alle mål (59% var enige i »loaded quickly« mod spinnerens 74%). Bill Chung (2018, n=80) fandt en lille fordel til skeletons, men kaldte selv stikprøven for lille til at konkludere. Det mest robuste fund i begge studier: en hvilken som helst indikator opleves bedre end en helt tom skærm.45

Mønstret handler om oplevet ydeevne, ikke faktisk hastighed. Rammen er Jakob Nielsens tre responstidsgrænser: 0,1 sekund føles øjeblikkeligt, 1 sekund holder tankegangen uafbrudt, og 10 sekunder er grænsen for at fastholde opmærksomheden — derover er en progress bar med estimeret tid bedre.2

Hvornår du bruger det — og hvornår ikke

Hvornår du bruger det

  • Indhold henter mærkbart, men i forudsigeligt layout.
  • Du vil signalere fremdrift og reducere oplevet ventetid.
  • Layoutet er stabilt, så pladsholderen matcher resultatet.

Hvornår du bør undgå det

  • Data kommer så hurtigt, at skelettet blot blinker.
  • Layoutet er uforudsigeligt og matcher ikke pladsholderen.

Best practices

  1. Match det virkelige layout

    Skeletonen skal efterligne strukturen af det indhold, der faktisk kommer (samme antal og placering af bokse), så overgangen føles som progression og ikke som et skift.3

  2. Brug til fuld-side-loads med forudsigeligt layout

    Skeletons er bedst, når hele skærmen loader og layoutet er kendt. Til et enkelt modul (en video, ét kort) er en spinner ofte bedre.3

  3. Brug ikke ved ventetid under ~1 sekund

    Ved meget korte loads kan skeletonen nå at flimre og virke irriterende.3

  4. Brug ikke ved meget lange ventetider (>10 s)

    Her giver en progress bar med tilstand og estimeret tid bedre feedback end en statisk pladsholder.32

  5. Overvej en venstre-mod-højre shimmer

    I Chungs test gættede 68%, at en venstre-mod-højre bølge repræsenterede en kortere ventetid — så en subtil shimmer i den retning er et rimeligt udgangspunkt.5

  6. Annoncér loading-tilstanden for skærmlæsere

    Giv loading-området role="status" og skift tekst fra »Indlæser« til »Indlæst«. aria-busy alene er ikke nok, og selve skelet-noderne bør skjules for hjælpeteknologi.6

  7. Respektér prefers-reduced-motion og kontrast

    Kør kun shimmer i @media (prefers-reduced-motion: no-preference), stop animation efter 5 sekunder, og hold mindst 3:1 kontrast (WCAG 1.4.11).6

Typiske fejl

  • Skeleton som universalløsning

    Beviset for, at skeletons altid vinder på oplevet hastighed, findes ikke — Viget fandt endda spinneren bedre. Antag det ikke.

  • Skeleton der ikke matcher indholdet

    Tomme rammer uden reel struktur, eller en pladsholder der ikke passer, giver layout-skift og et »bait and switch«-indtryk.

  • Brugt ved for korte eller for lange ventetider

    Under 1 sekund flimrer det; over 10 sekunder er en progress bar bedre.

  • Ingen skærmlæser-annoncering

    Uden role="status" ved skærmlæser-brugere ikke, hvornår indholdet er klar.

  • Animation der ignorerer reduced-motion

    En shimmer, der kører uanset brugerens bevægelses-præference, er utilgængelig.

Eksempler i praksis

DoorDash

Bruger en kort, animeret skeleton med en shimmer fra venstre mod højre — fremhævet af Nielsen Norman Group som et godt eksempel.

Facebook / LinkedIn (historisk)

De grå pladsholder-kort i feedet er det klassiske, tidlige eksempel, der var med til at popularisere mønstret. Behandl som veletableret/historisk — den præcise nuværende UI er ikke verificeret her.

Ofte stillede spørgsmål

Hvad er et skeleton screen?

Et loading-mønster, hvor grå pladsholder-figurer vises i samme layout som det indhold, der hentes — i stedet for en spinner eller tom skærm. Det giver brugeren en fornemmelse af, hvordan siden kommer til at se ud, mens data indlæses.

Får skeleton screens siden til at føles hurtigere?

Nogle gange — men beviserne er blandede. Et studie fra Viget (2017) fandt faktisk, at en spinner blev oplevet som hurtigere, mens Bill Chung (2018) fandt en lille fordel til skeletons. Det mest sikre fund er, at enhver loading-indikator opleves bedre end en helt tom skærm.

Hvornår bør jeg bruge et skeleton screen frem for en spinner?

Brug skeleton screens, når hele skærmen loader og layoutet er forudsigeligt (fx et feed eller en profilside). Brug en spinner til enkelte moduler og til mellemlange ventetider.

Hvornår bør jeg ikke bruge et skeleton screen?

Ved meget korte ventetider under ca. 1 sekund (det kan flimre) og ved meget lange ventetider over 10 sekunder — der er en progress bar med estimeret tid bedre, fordi den viser, hvor langt processen er.

Er skeleton screens tilgængelige for skærmlæsere?

Ikke automatisk. Giv loading-området role="status" og skift teksten fra »Indlæser« til »Indlæst«, så skærmlæsere annoncerer, når indholdet er klar. aria-busy alene er ikke nok. Husk også at respektere prefers-reduced-motion.

Hvor stammer skeleton screens fra?

Begrebet blev opfundet af designeren Luke Wroblewski i 2013, hvor han anbefalede at erstatte spinnere med en tom version af siden, som indhold gradvist loades ind i, så fokus flyttes fra ventetiden til indholdet.

Kilder

  1. Mobile Design Details: Avoid The SpinnerLuke Wroblewski (2013) · oprindelsen af begrebet »skeleton screen«
  2. Response Time Limits: The 3 Important LimitsJakob Nielsen, Nielsen Norman Group (1993)
  3. Skeleton Screens 101Nielsen Norman Group (2023)
  4. A Bone to Pick with Skeleton ScreensViget (2017) · n=136; skeleton klarede sig dårligst
  5. Everything you need to know about skeleton screensBill Chung, UX Collective (2018) · n=80; lille effekt, selverklæret usikker
  6. More Accessible SkeletonsAdrian Roselli (2020)