vue中判断左右滑动笔记

场景:
左右滑动 查询日历上、下一个月的信息、滑动删除购物车的某个cell.

使用:
  <div class="shoppingGuide_page" @touchstart="start($event)" @touchmove="move($event)" @touchend="end($event)">

方法:
// 左右滑动事件
       getAngle(angx, angy) {
           return Math.atan2(angy, angx) * 180 / Math.PI;
       },
       getDirection(startx, starty, endx, endy) {
           var angx = endx - startx;
           var angy = endy - starty;
           var result = 0; //默认标记没有滑动
           //如果滑动距离太短
           if (Math.abs(angx) < 2 && Math.abs(angy) < 2) {
               return result;
           }
           var angle = this.getAngle(angx, angy);
           if (angle >= -135 && angle <= -45) {
               result = 1; //向上
           } else if (angle > 45 && angle < 135) {
               result = 2; //向下
           } else if ((angle >= 135 && angle <= 180) || (angle >= -180 && angle < -135)) {
               result = 3; //向左
           } else if (angle >= -45 && angle <= 45) {
               result = 4; //向右
           }
           return result;
       },
       start (event) {
           let tabbarRef = this.$refs.tabbarRef
           let touchS = event.targetTouches[0]; //touches数组对象获得屏幕上所有的touch,取第一个touch
         this.startPos = {
               x:touchS.pageX,
               y:touchS.pageY,
               time: new Date()
           }; //取第一个touch的坐标值
       },
       move (event) {
         //当屏幕有多个touch或者页面被缩放过,就不执行move操作
         if(event.targetTouches.length > 1 || event.scale && event.scale !== 1) return;
       },
       end (event) {
           let touchE = event.changedTouches[0];
           this.endPos = {
               x: touchE.pageX,
               y: touchE.pageY,
               timeStemp: new Date()
           };
           let direction = this.getDirection(this.startPos.x, this.startPos.y, this.endPos.x, this.endPos.y);
          
       },

简书:光明程辉
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值