进度条 · 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 由调用方按业务结果给,不按数值自动切换 —— 颜色是语义,不是刻度。