Skip to main content
FeedbackLevel 2

Skeleton

骨架屏

WebMobileDifficulty: Medium

Before the data arrives, lay out the future layout using grey blocks so the shape of the page is already on screen.

01

Live Demo

Actually clickable
Skeleton first, content second — while it's loading, users already know what the page will look like. Hit "Reload" to watch it again.

What you just saw:The grey avatar squares, title bars and image placeholders you see when you open a feed before it has finished loading — that is a skeleton screen.

02

What it actually is

The value of a skeleton is that it removes the sense of the page being assembled. Users see the shape of the content first and the content itself second, and perceived wait time drops noticeably. What makes it more sophisticated than a spinner is that it also communicates what this page is going to look like.

skeletonskeleton screenskeleton loaderplaceholdergrey placeholdercontent placeholder
03

Anatomy · What it's made of

  1. Block占位块

    Corner radius identical to the real element

  2. Shimmer微光扫过

    Optional looping highlight animation

  3. Layout Mirror布局镜像

    Shapes correspond to the real content

  4. Fade Out淡出

    Skeleton disappears when the data arrives

04

When to Use

When it fits, and when it doesn't
Skeleton usage recommendations
SituationUse it?
First load of a page with a predictable structureYes
The wait is longer than 1 secondYes
Users need to understand the page structure up frontYes
Pagination loads more items (appended to the bottom of the list)Yes
The structure is unpredictable (infinite scroll with unknown content)No

If the data comes back in 200ms, the skeleton flashing by is itself a distraction — enforce a minimum display time (say 300ms).

The skeleton shapes must match the real content exactly, otherwise users see the layout jump when it is replaced.

05

Similar Patterns

Don't mix these up
Full comparisonSpinner vs Progress Bar vs SkeletonData is loading. How should I show it?See the table
06

How to tell AI

Three levels of prompt

Add the component name and specifics

Use a skeleton for the loading list: show six grey placeholder blocks matching the height of the real cards, with a shimmer sweeping across, and fade them out into the real content when the data arrives.

07

Don't just say this to AI

Bad → Better

Don't say this to AI

Show grey placeholder blocks while loading.

Say this instead

Use a skeleton for the loading list: placeholder blocks sized exactly like the real cards (text lines simulating 60%/40% widths), light grey background with a 1.5s shimmer sweep, fading out when data arrives, a "minimum 300ms display" guard for fast loads, and no shimmer under reduced-motion.

08

Share this card

Social-ready

Turn this pattern into a 3:4 or 1:1 knowledge card and export it as PNG right in the browser. No backend needed.