移动端左右滑动事件记录

监测滑动,主要用到了三个事件

touchStart:手指按下时触发该事件
touchMove:手指移动时触发该事件 (持续触发)
touchEnd:手指松开时触发该事件

这里用的是vue的写法

data(){
	return{
		startX:0,//开始触摸的位置
		endX:0,//结束触摸的位置
		disX:0,//移动距离
		moveFlag:0,//是否在滑动
	}
}
methods:{
	touchStart(event){
		if(event.targetTouches.length==1){  //只有一跟手指滑动
			this.startX = event.targetTouches[0].clientX   //记录开始滑动的位置(clientX是触碰点到浏览器左边的距离)
		}
	},
	touchMove(event){
		if(event.targetTouches.length==1){    //如果只有一根手指滑动
              this.endX = event.targetTouches[0].clientX   //不断记录滑动后的位置
              this.moveFlag=1;    //表示在滑动而不是点击
         }
	},
	touchEnd(event){
		this.disX = this.startX - this.endX   //计算滑动的距离
		if(this.disX>10 && this.moveFlag==1){   //左滑
            //你的逻辑代码
            this.moveFlag=0;
        }else if(this.disX<-10 && this.moveFlag==1){  //右滑
             //你的逻辑代码
             this.moveFlag=0;

        }
	}
	
}

这里有几个问题:

1.为什么不在touchEnd事件里直接获取手指抬起时的坐标
答:因为touchEnd事件里的event无法获取clientX,所以只有在touchMove事件中不断记录
2.为什么要有moveFlag状态
答:因为你点击的时候也会触发touchStart和touchEnd事件,所以为了避免点击事件误判为滑动事件,在touchMove时触发滑动的状态。滑动结束后再把状态还原。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值