我们非常激动地推出最新更新:Swiper v11。但这不仅仅是一次普通的更新。通过 v11,我们迈出了重要一步——我们正在“返璞归真”。
触摸事件
为了让 Swiper 成为移动触控滑块的首选库,我们不断努力,尝试了各种途径,试验了多种技术,始终致力于为开发者和最终用户提供最佳体验。我们采取的一个方向是在 Swiper v9 中转向 Pointer Events,认为这是统一处理触摸和鼠标事件的最佳方案。
然而,我们注意到,尽管 Pointer Events 无疑具有革命性,但在某些极端情况下,它们并不能始终提供我们所追求的无缝触摸体验。来自社区的反馈,加上我们严谨的测试,突显了触摸交互的一些细微差别和局限性。
鉴于我们对卓越用户体验的承诺,我们决定在 v11 中重新引入对触摸事件的支持(在支持的情况下)。通过“返璞归真”,我们确保那些极端情况,那些需要触感恰到好处的微小时刻,都能得到完美满足。
至少它将修复并改进以下情况:
- 现在在支持触摸事件的设备(iOS/Android)上,
edgeSwipeDetection和touchReleaseOnEdges参数可以正常工作了 - 改进了页面滚动检测和阻止
循环模式
循环模式在 v11 中得到了显著改进
- 增加了对带有
grid.rows的多行布局的支持 - 移除了
loopedSlides参数 - 增加了
loopAdditionalSlides参数,以替代定义用于“循环”(重新排列)的附加幻灯片 - 新的
loopAddBlankSlides参数将为slidesPerGroup和grid.rows自动添加空白幻灯片 - 对幻灯片数量的新宽松要求
- 最小幻灯片数量必须 >=
slidesPerView+slidesPerGroup - 幻灯片数量应与
slidesPerGroup保持一致(或使用loopAddBlankSlides参数) - 幻灯片数量应与
grid.rows保持一致(或使用loopAddBlankSlides参数)
- 最小幻灯片数量必须 >=
例如,如果我们的 slidesPerView: 3,在 v10 中我们需要至少 6 张幻灯片才能进入循环模式。在 v11 中,我们现在只需要 4 张幻灯片即可。
元素事件前缀
Swiper Element 使用与 Swiper 类事件相同的事件名称触发原生 DOM 事件。如果第三方库使用了类似的本地 DOM 事件,例如 touchstart、touchmove 等,这会导致问题。因此,在 v11 中,所有 Swiper Element 事件现在都带有 swiper 前缀(可在 eventsPrefix 参数中配置)。
现在可以这样使用
<swiper-container> ... </swiper-container>
<script>
const swiperEl = document.querySelector('swiper-container');
// listen for `slideChange` event
swiperEl.addEventListener('swiperslidechange', onSlideChange);
</script>
溢出隐藏
在 Swiper v10 中,容器的 overflow 属性默认为 clip。事实证明,并非所有浏览器都正确支持此属性,因此在 v11 中,我们将默认的 Swiper 容器样式恢复为 overflow: hidden。
接下来是什么?
以上是大部分重要变更和新功能的概述。
有关所有变更列表,请参阅完整的 v11 变更日志。
建议查看v11 迁移指南。
附注
一如既往,如果您喜欢 Swiper,请通过捐赠或认捐来支持项目
- 在 Patreon 上:https://www.patreon.com/swiperjs
- 在 Open Collective 上:https://opencollective.com/swiper
并查看我们的高级项目
您的支持对我们意义重大!























