骨架屏反馈
它是在真实内容还没加载出来时,先用灰色块勾出页面大致结构的占位画面。
- 内容没出来前先显示的一块块灰条
- 加载时先摆着的灰色方块
- 页面还没好先看到的灰块轮廓
- 骨架屏
- 内容占位
- 加载占位
- 占位动画
示例
示例可交互
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 的提示词
这条词条还没有经过验证的实现提示词。