条纹动画方向卡住需同步修改@keyframes和background-image方向:垂直滚动须用to bottom搭配纵向background-position及!important;水平反向应改animation-direction而非重写关键帧;transform旋转仅为视觉欺骗,非真正垂直动画。

条纹动画方向卡住不动?必须同步改@keyframes和background-image方向
Bootstrap 的条纹动画默认只沿 X 轴移动,哪怕你把background-image: linear-gradient()改成to bottom,条纹也不会垂直滚动——因为原生@keyframes animate-progress里写的仍是background-position: 1rem 0, 0 0,位移只动横轴。
要让条纹真正垂直动,两处必须一致:
-
background-image用to bottom或to top -
@keyframes里background-position用纵向变化,比如0 100%, 0 0→0 0, 0 -100% - 加
!important确保覆盖 Bootstrap 原生关键帧(5.3+ 仍有优先级冲突) -
background-size保持原值(如1rem 1rem),否则条纹拉伸或断裂
怎么写垂直向上滚动的条纹动画?
目标是条纹从下往上“涌”,不是旋转容器。直接覆盖即可:
@keyframes animate-progress {
0% { background-position: 0 100%, 0 0 !important; }
100% { background-position: 0 0, 0 -100% !important; }
}
.progress-bar-striped {
background-image: linear-gradient(to bottom, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
background-size: 1rem 1rem;
}
注意:to bottom + 纵向background-position才是有效组合;漏掉!important,原生关键帧仍会生效。
想让条纹从左往右动?别碰@keyframes,用animation-direction
Bootstrap 默认是从右往左扫(to right渐变 + X 轴负向位移)。要反向,最安全的做法是控制播放方向:
- 给
.progress-bar-animated加animation-direction: reverse - 确保这条 CSS 加载在 Bootstrap CSS 之后,且优先级足够(必要时加
!important) - 不要同时改
@keyframes和animation-direction,容易互相抵消 - 错误写法:
animation: progress-bar-stripes 1s linear infinite reverse——Bootstrap 原生规则没定义reverse,这行会被忽略
用transform: rotate()绕过重写?仅限视觉欺骗
如果只是临时让水平条纹“看起来”垂直,可以对.progress-bar加transform: rotate(90deg),但要注意:
- 整个进度条宽高互换,
.progress的height变成逻辑宽度,需手动调父容器尺寸 - 文字标签也会旋转,得额外用
transform: rotate(-90deg)扳回来 - 无法响应式自适应:横屏变竖屏时旋转逻辑失效
- 这不是真·垂直动画,
aria-valuenow等语义不变,可访问性无改善
真正需要垂直动画的场景,必须走@keyframes + background-image同步修改这条路——方向错配、单位不统一、!important遗漏,三者任一出问题,条纹就卡住不动。











