swiper 9+ 版本中启用 fade 效果必须显式导入并注册 `effectfade` 模块,否则即使设置了 `effect: "fade"`,滑块仍会回退为默认的 slide 滚动效果。
在 Swiper 9 及更高版本(包括你使用的 9.4.1 和 10.0.4)中,所有高级功能(如 fade、cube、flip 等切换效果)均已模块化,不再默认内置。这意味着仅设置 effect: "fade" 是无效的——Swiper 根本不会识别该效果,从而静默降级为默认的 slide 行为。
✅ 正确做法是:
以下是修复后的完整代码示例(适配 Laravel Blade + Vite 环境):
import Swiper from 'swiper';
import { EffectFade } from 'swiper/modules';
const options = {
modules: [EffectFade], // ✅ 关键
:必须注册 EffectFade 模块
slidesPerView: 1,
effect: 'fade', // ✅ 保留 fade 效果声明
spaceBetween: 16,
speed: 300,
loop: true,
allowTouchMove: false, // 可选:禁用触摸拖拽,强化 fade 的“翻页感”
// ⚠️ 注意:fade 模式下 spaceBetween 无效(无间距概念),可移除或忽略
};
const slider_1 = new Swiper('#best-sellers-slider-1', options);
const slider_2 = new Swiper('#best-sellers-slider-2', options);
const slider_3 = new Swiper('#best-sellers-slider-3', options);
const nextButton = document.querySelector('#best-seller-next');
const prevButton = document.querySelector('#best-seller-prev');
nextButton?.addEventListener('click', () => {
slider_1.slideNext();
slider_2.slideNext();
slider_3.slideNext();
});
prevButton?.addEventListener('click', () => {
slider_1.slidePrev();
slider_2.slidePrev();
slider_3.slidePrev();
});? 重要注意事项:
完成上述配置后,三个同步滑块将真正以淡入淡出方式切换,视觉上呈现平滑的透明度过渡效果,而非生硬的左右滚动。