swiper用来做轮播等功能很强大,但是由于触发层级不同问题,会与apicloud提供的下拉刷新事件冲突,导致拖拉的时候卡壳,用户体验极差。
解决该问题的原理在于在监听swiper触发事件的时候通过setFrameAttr将页面的下拉刷新暂时性移除,当swiper释放时再重新开启下拉刷新。
此方法适用于大部分场景,类似问题可以同理解决。但若当前页面较为复杂或者当前测试手机机型较为老旧,在针对Js的处理上性能较差可能会导致效果较不理想。(基本适用于大部分场景)
代码奉上:
var swiper = new Swiper('.swiper-container', {
spaceBetween: 0,
centeredSlides: true,
reverseDirection: true,
spaceBetween: 20,
autoplay: {
delay: 3000,
disableOnInteraction: false,
},
pagination: {
el: '.swiper-pagination'
},
on: {
slideChangeTransitionEnd: function (e) {
api.setFrameAttr({ bounces: true })
},
sliderMove: function (event) {
api.setFrameAttr({ bounces: false })
},
touchEnd: function (event) {
api.setFrameAttr({ bounces: true })
},
}
});本文为翻滚的胖子原创文章,转载无需和我联系,但请注明来自猿教程iskeys.com
