跳到主要内容

Spinner vs Progress Bar vs Skeleton

「加载中」的三种表达

数据在加载,我该怎么表示?

对比表

Spinner vs Progress Bar vs Skeleton
Pattern能否量化预览结构适合等待典型场景
Spinner加载转圈否否短(<1s)按钮内、小部件
Progress Bar进度条是(百分比)否长且知道总量上传、下载、安装
Skeleton骨架屏否(但暗示结构)是中长(首次加载)列表、卡片、页面首屏

← 左右滑动查看完整表格

真实 Demo 对比

Spinner

加载转圈
转圈只适合「短等待」。超过 10 秒还在转,该给出「重试」而不是让人干等。

怎么判断:短等待的默认选择

Progress Bar

进度条
已上传 0.0 MB / 8 MB0%
知道总量就显示百分比;不知道就别假装有进度,用不确定态。

怎么判断:知道要多久/多少

Skeleton

骨架屏
先看骨架,再看内容 —— 用户在等的时候就已经知道页面长什么样了。点「重新加载」再看一次。

怎么判断:首次加载整个页面

选型决策

  • 等待很短(点一下就回来)Spinner 或甚至不加
  • 知道确切进度(上传到 40%)Progress Bar
  • 在加载一个有固定结构的页面/列表Skeleton
  • 等待可能超过 10 秒超过就加文案提示和「重试」

一句话结论

Skeleton 的最大优势是「在等的时候已经在告诉用户页面长什么样」,感知等待会变短。但记住加一个「最短显示 300ms」,否则数据秒回时 Skeleton 一闪而过反而更糟。

相关对比