进度条 · progress

进度已知时用它;进度不知道时用 skeleton。混用是常见错误。

1 · 线形(最常用)

用 --progress 驱动宽度;role="progressbar" + aria-valuenow 是必须的(读屏要能念出进度)。

2 · 语义色

3 · 尺寸

4 · 环形

纯 CSS conic-gradient,零 SVG、零依赖。数字用 tabular-nums,变化时不会左右跳。

5 · 不确定进度

不确定时不要显示百分比 —— 那是撒谎。 读屏只会听到「正在处理,进度未知」,这才是事实。

6 · 步骤分段

流程类进度("第 3 步 / 共 5 步")比百分比更贴切。

7 · 减少动态效果时

开启「减少动态效果」后扫光动画停掉,但条子仍然可见 —— 用户依然知道系统在忙。

反例 · 不该这样用

不要用进度条表示「不知道要多久」。
停在 0% 或乱跳的百分比,比 skeleton 更让人困惑 —— 用户会盯着它算还剩多久。
也不知道进度时,用 skeleton(形状提示"这里会有内容") 或不确定进度条(明说"不知道")。

对比:错写法 vs 本库写法

❌ 常见写法:到 100% 就变绿

导出 6 个文件 · 100%

界面写"导出完成",条是绿的。

100% 说的是"走到头了",不是"成功了"。这一批实际有 2 个文件失败,绿条仍然亮着 —— 用户以为可以走了。

✅ 本库:颜色讲结果,数值只讲进度

导出 6 个文件 · 100%

同样 100%,红了:2 个文件失败。

progress--success / --danger 由调用方按业务结果给,不按数值自动切换 —— 颜色是语义,不是刻度。