骨架屏反馈

它是在真实内容还没加载出来时,先用灰色块勾出页面大致结构的占位画面。

  • 内容没出来前先显示的一块块灰条
  • 加载时先摆着的灰色方块
  • 页面还没好先看到的灰块轮廓
  • 骨架屏
  • 内容占位
  • 加载占位
  • 占位动画

示例

示例可交互

Web / iOS / Android 对照

Web需自己实现

桌面与移动端主流浏览器

Skeleton Screen

也叫 Content Placeholder

Web 没有原生骨架屏元素或统一视觉规范,通常用样式绘制与最终内容相近的占位块。加载区域还应通过 aria-busy 告诉辅助技术内容正在更新。

通常怎么做:自定义 HTML / CSS 占位,并在加载容器上使用 aria-busy。

iOS原生支持

iOS / iPadOS;原生占位不包含闪动动画

Placeholder

也叫 Redacted Placeholder

SwiftUI: .redacted(reason: .placeholder)

Apple 使用 Placeholder 表达加载时的内容占位。SwiftUI 可以把真实布局临时处理成占位外观,但闪动效果和更复杂的骨架动画仍需自行实现。

Android需自己实现

Android 手机 / 平板;不含 Wear OS

Skeleton Screen

也叫 Placeholder

通用 Android 和 Material 3 没有正式的骨架屏组件。可以用 Compose 自定义与最终布局相近的占位块,但不应把 Wear 专用的占位接口当成所有安卓设备的标准方案。

通常怎么做:在 Compose 中自定义与最终内容相近的占位布局。

使用规范

什么时候用

  • 页面结构已经确定,但真实文字、图片或列表还在加载
  • 首屏或内容区预计会等待一小段可感知的时间
  • 希望让用户提前理解内容布局并减少加载完成时的跳动

什么时候别用

  • 操作耗时很短,骨架只会一闪而过
  • 无法预测最终内容结构 → 用 Loading Indicator 表示正在处理
  • 任务有可计算进度 → 用进度条给出真实进度

容易混淆

给 AI 的提示词

这条词条还没有经过验证的实现提示词。