必须同时添加carousel和carousel-fade类,缺一不可;仅加carousel-fade会导致轮播不初始化、指示器失效、按钮无响应;fade效果纯由CSS驱动,需确保.carousel-item为position: absolute、内容为d-block、无transform/filter干扰堆叠上下文,且过渡样式须带.carousel-fade前缀覆盖。

必须同时加 carousel 和 carousel-fade 类,缺一不可;只加 carousel-fade 会导致轮播完全不初始化、指示器失效、按钮无响应。
为什么加了 carousel-fade 还是硬切?
这不是 JS 没跑,而是 CSS 层叠或 DOM 结构被干扰。Bootstrap 的 fade 完全靠 CSS 驱动,carousel-fade 只是切换动画类型,不提供轮播逻辑。
- 检查浏览器开发者工具中任一
.carousel-item的 computed 样式:是否生效transition: opacity 0.6s ease和opacity: 0?没有说明.carousel-fade相关 CSS 没加载(某些构建工具会剔除该 SCSS block) -
.carousel-item必须是position: absolute才能层叠显示;若父容器用了display: flex或外层加了transform/filter,会破坏堆叠上下文,opacity 变化不可见 -
<img>和<video>默认是inline或inline-block,必须统一加class="d-block w-100",否则过渡不生效
怎么改淡入时长和缓动函数?
Bootstrap 内置的 fade 参数(0.6s、ease)写死在 CSS 里,没有 data 属性或 JS 方法可调,只能覆盖样式。
- 必须带
.carousel-fade前缀,否则会污染其他轮播组件 - 过渡效果由非
.active的.carousel-item控制,所以要改.carousel-fade .carousel-item的transition,不是.active本身 -
.carousel-fade .carousel-item.active只需保证opacity: 1,不用重复写transition
.carousel-fade .carousel-item {
transition: opacity 1.2s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.carousel-fade .carousel-item.active {
opacity: 1;
}
视频轮播加 fade 效果要注意什么?
视频的 poster 图本身不响应 opacity,且 preload="auto" 可能卡住过渡。
- 给
<video>外层套一层<div>,把opacity应用到该容器上 - 统一加
class="d-block w-100",并设preload="none" - 避免在
.carousel-item或其父元素上使用will-change、transform、filter—— 它们会创建新堆叠上下文,让 opacity 变化彻底失效
最常被忽略的是:轮播项内容(比如图片)若被外层 transform、filter 或 will-change 包裹,会创建新的堆叠上下文,导致 opacity 变化完全不可见。


















