跳到主要内容
界面图谱Interface Atlas
☰
EN
组件Feedback / Loading

进度条

Progress Bar

别名:进度条加载进度进度指示条百分比进度条上传进度条linear progress显示百分之多少的横条

这是什么

用横条从左到右填充来表示任务完成比例的加载指示,常配百分比或步骤文字。 适用于时长可预测的确定性任务:上传、下载、安装与分步表单。

交互实验室

试一试,再决定怎么用

观察进度变化,比较确定进度与不确定进度。

正在加载实验室…

使用时关注什么

  • 01已知总量才显示百分比,不伪造处理进度。
  • 02进度完成后应切换为明确的成功或失败反馈。

✓ 适用场景

  • 时长可预测的确定性任务(上传、导出)
  • 分步流程中展示当前进行到第几步
  • 时长超过 3 秒、需要传达量感

✕ 不适用场景

  • 时长不可知(用 loading-spinner 或骨架屏)
  • 极短任务(< 1 秒,直接完成即可)
  • 无法给出真实进度(宁可显示不定态,避免假进度)

常见形式

确定进度

Determinate

已知比例按值填充

不定进度

Indeterminate

滑块往复运动,表达进行中但时长未知

带标签

Labeled

附百分比或步骤文字

实现要点

widthtransitionbackground-colorborder-radius@keyframes

轨道固定高度(4~8px)圆角,填充条用 width 百分比或 transform scaleX 过渡; 不定态用 keyframes 平移一小块往复循环。务必绑定真实进度事件,无法获知时用不定态而非假进度。 可达性:role="progressbar" + aria-valuenow / aria-valuemin / aria-valuemax。

平台 API

<progress>role="progressbar"aria-valuenow

代码里叫什么

同一控件在不同体系里的叫号——用对名字,Prompt 和检索才准。

体系名称
ARIArole="progressbar"
HTML<progress>
shadcn/uiProgress
MUILinearProgress
进度条Progress Bar骨架屏Skeleton Loading加载指示器Loading Spinner
打断程度低,嵌入版面不遮挡低,页面结构不变低,占位极小
信息量中,传达比例与剩余量低,只表达结构低,只表达忙碌
适用时长3 秒以上的确定性任务1~3 秒1~5 秒
与结果一致性高,需绑定真实进度高低,不预示结果形态

相关概念

加载指示器Loading Spinner

用一个持续旋转的圆环或圆点表示"正在处理"。占用空间极小、语义全球通用, 适合嵌入按钮内、跟随光标或作为局部区块的轻量加载反馈。 它只表达"忙碌",不表达进度多少,也不预告还剩多久。

动效替代方案
骨架屏Skeleton Loading

用与真实内容结构一致的灰色占位块表示加载状态,通常带轻微的微光扫过或呼吸动画。 它告诉用户"内容马上就位,结构长这样",而不是让用户盯着空白或转圈等待。

交互模式替代方案
数字滚动Number Counter

数字从 0(或旧值)滚动增长到目标值,让计数过程本身表达"数据在增长"。 常用于数据看板大数字、统计区与里程碑("10 万用户")。 数字成为动效的主角,比静态数值更有说服力。

动效搭配使用
乐观界面Optimistic UI

用户操作后立即按"预计成功"更新界面,真实请求在后台进行,成功则落定, 失败则回滚到原状态并提示。它解决的是"每个操作都要转圈等服务器"的问题—— 用短暂的不确定换取零等待的流畅感,特别适合点赞、收藏这类高频轻操作。

交互模式搭配使用

可搭配的风格

参考来源

Markdown 版(给 Agent) · JSON