移动web:事件-手指事件

本文详细讲解了touchstart, touchmove, touchend事件在移动设备上的应用,并通过示例展示了如何实现元素拖动,包括获取触点坐标、跟踪移动及目标元素变换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        box.addEventListener('touchstart',function(){
			console.log("手指按下");
		})
		box.addEventListener('touchmove',function(){
			console.log('手指移动中');
		});
		box.addEventListener('touchend',function(){
			console.log("手指松开");
		});

 手指按下事件:ontouchstart

手指移动事件:ontouchmove

手指松开事件:ontouchend

TouchEvent对象:

touches:位于屏幕上所有的手指

targetTouches: 位于当前元素上所有的手指                【移动开发推荐使用】

changedTouches: 手指按下事件时 ontouchstart 包含所有按下的手指;手指松开事件时 ontouchend  包含所有松开的手指

screenX和screenY:相对于屏幕到当前位置的x和y距离

clientX和clientY:相对于可视窗口到当前位置的x和y距离        【移动开发推荐使用】

pageX和pageY:相对于可视窗口(包含 超出元素 边框 滚动条)到当前位置的x和y距离【移动端基本上不存在x超出  最大也就是100%】

获取触发特定事件的元素:e.target

拖动演示案例: 

        let startX,startY,moveX,moveY,targetX,targetY;
		document.addEventListener('touchstart',function(e){
			startX = e.targetTouches[0].clientX;
			startY = e.targetTouches[0].clientY;

			//获取当前元素的transform 判断是否存在原先拖动的痕迹
			targetTf = e.target.style.transform;
			targetX = 0;
			targetY = 0;
			if(targetTf) {
				let r_targetX = /\((.*?)px/;
				let r_targetY = /, (.*?)px/;
				targetX = parseInt(targetTf.match(r_targetX)[1]);
				targetY = parseInt(targetTf.match(r_targetY)[1]);
			}
		})
		document.addEventListener('touchmove',function(e){
			moveX = e.targetTouches[0].clientX;
			moveY = e.targetTouches[0].clientY;
			let distanceX = moveX - startX + targetX;
			let distanceY = moveY - startY + targetY;
			e.target.style.transform = "translate("+distanceX+"px,"+distanceY+"px)";
		});
		document.addEventListener('touchend',function(e){
			console.log();
		});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值