分段进度条通过单层repeating-linear-gradient+宽度控制+叠加遮罩实现,关键在于视觉分段与逻辑进度分离:条纹为装饰层,宽度控制真实进度;色标须首尾相接(如#f03355 0px,#f03355 10px,#ffa516 10px,#ffa516 20px),background-size必须严格匹配周期宽度(如20px 100%),动画仅作用于background-position且终点设为像素值(如20px 0)以避免抖动。

分段进度条不是靠多个 常见错误是写成 只改 真实进度由容器宽度控制,条纹层只是“盖在上面”的动态装饰。结构必须是: 不是所有浏览器都把 最易被忽略的是 repeating-linear-gradient + 宽度控制 + 叠加遮罩实现的。关键在于“视觉分段”和“逻辑进度”分离——条纹是装饰,宽度才是真实进度。repeating-linear-gradient 的色标必须首尾相接
repeating-linear-gradient(45deg, #f00 0 10px, #00f 0 20px),第二段从 0px 开始,直接覆盖第一段,结果只看到蓝色。真正能平铺出清晰条纹的写法,必须让上一段终点 = 下一段起点:
repeating-linear-gradient(45deg, #f03355 0px, #f03355 10px, #ffa516 10px, #ffa516 20px) —— 每段 10px,严丝合缝45deg 或 135deg,太小(如 5deg)在窄条里看不出条纹,太大(如 90deg)易被当成实色块#f008),老版 Safari 不认,改用 rgba(255, 0, 0, 0.5)
动画必须绑定 background-position 和 background-size
background-position 会滑动但不循环;只改 background-size 会拉伸但不动。两者必须联动,且数值严格对应:
background-size 必须等于渐变一个完整周期的宽度(比如色标到 20px 就写 20px 100%)@keyframes 中 background-position 终点值设为 20px 0,不是 100% —— 后者在某些浏览器有小数精度抖动,导致条纹撕裂transform: translateX()),否则破坏背景平铺连续性分段效果靠两层叠加:底层进度 + 上层条纹
overflow: hidden
background: #4CAF50),上层带条纹(background: repeating-linear-gradient(...))
div 的 width 动态绑定进度值(例如 JS 设置 style.width = "65%"),且不加 transition: width —— 它和 animation 冲突,宽度应瞬时生效移动端和 Safari 的隐藏兼容问题
repeating-linear-gradient 当作可动画属性。尤其 iOS Safari 16.4 之前版本,background-position 动画可能卡顿或失效:
-webkit- 前缀:写成 -webkit-background-position 和 -webkit-animation
vh/vmin 单位定义条纹尺寸,高 DPR 屏下像素计算易错,统一用 px
background-size 和色标周期的数值一致性——差 1px 就会导致动画跳帧,而这个 bug 在桌面 Chrome 里几乎看不出来,却会在 iPad 上明显撕裂。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











