0%

uniapp-左右滑动切换tab

uniapp原生实现左右滑动切换tab

项目需要实现左右滑动进行tab切换,有组件可以实现 但是使用过成功有点bug,使用原生解决方法

多个tab对应的view根据current进行显示
在每个view上添加滑动开始结束事件监听

  • touchstart
  • touchend
    定义数组startData存储开始滑动的坐标,开始滑动时存储
    结束滑动时 根据当前坐标计算滑动的距离 自己定义无效滑动的区间 然后进行
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <view class="sale-quantity-ranking" v-if="current==1" @touchstart="start" @touchend="end">
    </view>
    start(e){
    this.startData.clientX=e.changedTouches[0].clientX;
    this.startData.clientY=e.changedTouches[0].clientY;
    },
    end(e){
    const subX=e.changedTouches[0].clientX-this.startData.clientX;
    const subY=e.changedTouches[0].clientY - this.startData.clientY;
    if(subY>50 || subY<-50){
    console.log('上下滑')
    }else{
    if(subX>100){
    if(this.current > 0){
    this.current = this.current-1
    }
    console.log('右滑')
    }else if(subX<-100){
    if(this.current < 4){
    this.current = this.current+1
    }
    console.log('左滑')
    }else{
    console.log('无效')
    }
    }
    },