Skip to content
界面图谱Interface Atlas
☰
中文
PatternsFeedback / Loading

Skeleton Loading

骨架屏

Aliases:Skeleton骨架加载内容占位灰色占位加载占位图shimmer 占位

What is it

Grey placeholder blocks that mirror the real content structure while loading, usually with a subtle shimmer or pulse. It tells users "content is coming and it will look like this" instead of a blank page or a bare spinner.

Interactive playground

Try it. Make an informed choice.

Loading lab…

✓ When to use

  • Content structure is stable and predictable
  • Expected load time is 1–3 seconds
  • Lists and card feeds with repeating structures

✕ When not to use

  • Very fast loads (< 300ms) — the skeleton itself becomes flicker
  • Unpredictable content — placeholders that wildly mismatch the result
  • Background operations with unchanged layout — prefer progress or button state

Variants

Static

静态占位

Plain grey blocks, most restrained

Pulse

呼吸

Slow opacity oscillation

Shimmer

微光扫过

A highlight sweeping across, iOS-style

Implementation

backgroundanimationbackground-clip: textlinear-gradient

Shape placeholders with border-radius; shimmer is a gradient highlight layer animated via background-position or a translated pseudo-element; pulse animates opacity. Match placeholder size to real content to avoid layout shift on load.

Skeleton Loading骨架屏Progress Bar进度条Loading Spinner加载指示器
InterruptionLow — layout unchangedLow — inline, hides nothingLow — minimal footprint
Information volumeLow — structure onlyMedium — shows proportion remainingLow — busyness only
Suitable duration1–3 seconds3+ seconds, determinate1–5 seconds
Result consistencyHighHigh — must reflect real progressLow — no shape of the result

Related concepts

Loading Spinner加载指示器

A continuously rotating ring or dots that says "work in progress". Tiny in footprint and universally understood, it fits inside buttons, cursors or small regions as lightweight feedback. It communicates busyness only — neither progress amount nor time remaining.

MotionAlternative
Progress Bar进度条

A loading indicator where a horizontal bar fills left to right to express task completion, usually with a percentage or step label. For determinate tasks with predictable duration: uploads, downloads, installs and multi-step forms.

ComponentsAlternative
Optimistic UI乐观界面

Update the interface immediately as if the operation will succeed while the real request runs in the background; settle on success, roll back to the original state with a notice on failure. It solves the "wait for the server on every action" problem — trading brief uncertainty for a zero-latency feel, ideal for frequent light actions like likes and bookmarks.

PatternsSimilar
Lazy Loading懒加载

Defers loading of off-viewport resources: images, list chunks and components are fetched and rendered only when they approach or enter the viewport. The first screen pays only for what is visible, with placeholders preventing layout jumps as content streams in.

PatternsSimilar
Empty State空状态

When a list or page has no data, don't leave a void — fill it with an illustration, one sentence of explanation and a clear next action. It solves the "blank screen" problem where users can't tell what happened or what to do next, turning dead space into a starting point: onboarding for first use, a way out for fruitless searches.

PatternsSimilar

Applicable styles

Sources

Markdown for agents · JSON