tab栏切换动画实现及注意事项

tab栏切换动画实现及注意事项

技术栈:vue

  1. 遇到的问题

scene : 移动端页面左右滑动切换tab栏,实现页面切换类 app 原生动画,不影响页面正常点击事件

key : 移动端左右滑动,可以从touchstart , touchmove , touchend 事件入手,获取 pageX 左右移动的距离来判断方向,pageY 的上下移动距离来确定是否是滚动事件,监听 touchtrigger event 来判断是否是 tap 事件,从而实现功能

// template
<div @touchstart.stop = "touchStart" @touchmove.stop = "touchMove"  @touchend.stop = "touchEnd" class="touch-box">
</div>

// methods
touchStart(e) {
   
    const touch = e.touches[0]
    this.touch.startX = touch.pageX
    this.touch.startY = touch.pageY
    this.date_start = new Date().getTime();
},
touchEnd(e) {
   
    let touch = e.changedTouches[0]
    let date_end = new Date().getTime();
    let dur = date_end - this.date_start;
    let startX = this.touch.startX
    let startY = this.touch.startY
    let disX = touch.pageX - startX
    let disY = touch.pageY - startY   
    // 判断是滑动还是点击事件
    // 距离和时间可以自主调节
    if((Math.abs(disX)>10 && Math.abs(disX)< 130) || Math.abs(disY)>100){
   
        if(Math.abs(disX) > 5*Math.abs(disY)  && dur < 200){
   
            let slectTabArr = this.slectTabArr
            let number = 0 
            let selectTabFlag = getStorage('selectTabFlag')
            slectTabArr.filter((item,index)=>{
   
                if(selectTabFlag === item){
   
                    number = index
                }
            })
            if(disX < -10){
   
                // 向左滑动则向右选中列表中的数据切换
            }
            if(disX >10){
   
                // 向右滑动则向左选中列表中的数据切换
            }
        } else {
   
            return 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值