返回知识库

界面与交互 · 反馈与临时层

骨架屏Skeleton

内容加载前的结构化占位,要按真实布局复刻形状,并在数据到达、失败后干净地交接。

骨架复刻真实内容的形状

文章页加载前,用灰色占位块按真实封面、标题、正文比例预留位置;数据到达后骨架被真实内容替换。形状对齐时布局不抖动,错位时则相反。

文章详情页 · 加载实验台骨架形状:对齐

骨架按真实文章布局预留封面、标题和正文尺寸(正例)。点击「模拟加载完成」,真实内容会替换骨架;对照文章框,高度不应抖动。

知识点总结

把刚才面板里能直接看到的规律命名下来。

  • 形状对齐:骨架的封面高度、标题宽度、正文行数要和真实内容一致,替换时文章框高度不变。
  • shimmer 微动效:灰色块用缓慢渐变提示「还在加载」,但动效不是状态本身;减少动效时仍有占位和文字说明等待。
  • 结果长在物件上:加载完成时骨架消失、真实文章出现在同一个框里,不是只换一句提示语。
  • 失败要脱离骨架:请求失败时移除骨架、显示错误原因和重试,不能让灰块一直闪。

什么时候用骨架屏

从用户等的是什么、大概等多久来判断。

整页或整块内容加载

文章、列表、卡片等「有明确布局」的区域,用骨架给出形状预览,降低感知等待。

预计超过 200–300ms 的请求

太短的等待显示骨架只会一闪而过;先用空白或极短 spinner,确认是慢请求再上骨架。

不适用:未知时长的短任务用 spinner;已知完成比例用 progress;数据加载完却没有结果用空状态。骨架只负责「内容即将到来」的等待。

怎么用

从开始到判断的最短路径。

  1. 量真实内容:先确定真实封面、标题、正文的尺寸和行数。
  2. 按尺寸搭骨架:用相同高度的灰块复刻布局,加缓慢 shimmer。
  3. 数据到达交叉替换:真实内容淡入到同一容器,验证文章框高度不变。
  4. 失败移除骨架:错误态显示原因和重试,不留永久灰块。
  5. 尊重减少动效:检测 prefers-reduced-motion,关闭 shimmer 后仍保留占位与文字状态。

正反例:同一篇文章的骨架

目标都是「等待时给形状预览」,只改一个关键选择——骨架形状是否对齐真实内容。

正例 · 形状对齐

骨架封面与正文行数和真实文章一致。加载完成时文章框高度不变,用户视线不跳。

反例 · 形状错位

骨架封面过高、正文只剩一行。真实内容到达后封面塌缩、正文变多,文章框高度突变,布局抖动。

快速自测

文章页骨架的封面比真实封面高很多,加载完成后最可能出什么问题?

继续查证

术语的技术定义和行为以这些一手或权威资料为准。

下一步学

和本知识点经常一起出现的概念。