解决移动端better-scroll+vue-awesome-swiper,长按拖动触发回弹特效时闪屏

类库环境

vue
better-scroll
vue-awesome-swiper

复现要求

有个支持scroll到边界支持弹性回弹效果的类库,比如better-scroll
轮播图我用的是vue-awesome-swiper

复现该问题的伪代码大致如下

div.wrap
	scroll-div
		swiper
scroll.init 
swiper.init 

这时,如果对scroll-div上下拖动,触发scroll-div的弹性回弹效果.如果你的手指一直不放开,保持弹性效果时,swiper又恰好在自动切换,大概率会发生切换瞬间抖动的情况

要避免这个问题就得在touchstart时禁用swiper的autoplay,并在touchend时恢复

我用的是vue-awesome-swiper,首先通过ref获取到swiper实例,然后根据touch的情况来处理即可

又是一大段vue伪代码

div.wrap
	scroll-div @touchstart="stopSwiper" @touchend="startSwiper" @touchcancel="startSwiper"
		swiper(ref=mySwiper)
scroll.init 
swiper.init 
let pullUpTimer = null;
export default{
///...
  computed: {
    ...mapState(["portalList", "portalTypeList"]),
    swiper() {
      return this.$refs.mySwiper.swiper;
    }
  },
  methods:{
    stopSwiper() {
      pullUpTimer && clearTimeout(pullUpTimer);
      this.swiper.autoplay.stop();
    },
    startSwiper() {
      pullUpTimer && clearTimeout(pullUpTimer);
      pullUpTimer = setTimeout(() => {
        this.swiper.autoplay.start();
      }, 1500);//建议给start加上一定的延迟,防止touch放开后还在回弹时出现轮播
    },
  }
///...
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值