Bootstrap轮播图闪烁90%源于CSS渲染冲突:淡入淡出需分离淡出(.active.carousel-item-end/start)与淡入(.carousel-item-next/prev)阶段并精确设置transition-delay;滑动时须清空transform叠加;缩放悬停应通过.carousel-zoom伪元素隔离,禁用.carousel-item直接hover缩放。
Bootstrap 轮播图切换时的“闪烁”,90% 不是 JS 逻辑错,而是 CSS 渲染层叠冲突或状态未对齐导致的视觉跳变——直接改 transition 或加 will-change 往往无效,得先定位是哪一类闪烁。
这是 carousel-fade 类启用后最常见问题:Bootstrap 默认过渡没强制串行执行,导致前一项还没完全 opacity: 0,下一项已开始 opacity: 1。
.active.carousel-item-end 和 .active.carousel-item-start 设 transition-delay: 0s,只负责淡出.carousel-item-next 和 .carousel-item-prev 设 transition-delay: 600ms(与 transition-duration 一致),确保等上一张彻底消失后再入场data-bs-interval 必须 ≥ 总过渡时间(例如 1200ms),否则自动播放会打断动画流程opacity + transform 混合过渡——iOS WebKit 对这种组合支持差,只留 opacity 过渡即可根本原因是多个 transform 值叠加(比如你手动加了 scale() 或 rotate()),和 Bootstrap 内部的 translateX() 合并计算出错。
.carousel-item)必须设 transform: none !important,清空任何继承或额外的变换.carousel-item.active、.carousel-item-next 等状态类上写 transform: translateX(...),且值必须是单一数值(如 translateX(-100%)).carousel-inner 要加 overflow: hidden,否则平移过程会看到溢出内容,造成“闪边”错觉will-change: transform 到 .carousel-item 能减少卡顿,但别滥用——它可能引发内存抖动这不是缓动函数或 transform-origin 没设对,而是 .carousel-item 的 overflow: hidden 和你加的 scale() 直接冲突。
.carousel-item 上写 :hover { transform: scale(...) }
.carousel-item 内包一层 <div class="carousel-zoom">,把图片放进去.carousel-item 必须显式设 overflow: visible !important,否则缩放后内容会被裁掉.carousel-zoom 加 will-change: transform 和 transform-origin: center center,仅在此元素上做 hover 缩放真正难调的不是某一行 CSS,而是三类闪烁背后共用的底层机制:浏览器对 transform 和 overflow 的合成策略不同、移动端 touch/hover 状态切换延迟、以及 transition-delay 和 data-bs-interval 的毫秒级对齐。漏掉任意一个,都可能让修复看起来“有时有效、有时失效”。