PointerEvent中的movementX/movementY属性

2 篇文章 0 订阅

    在使用PointerEvent过程中发现了一个有意思的属性,即movementX/movementY,该属性在mdn文档里说是相对于最后一次鼠标移动位置的位置,这个值一般不会很大,且会出现正负。比如对于movementX,在某一时刻的返回值是-1,则表示本次鼠标移动事件触发时鼠标相对于上次事件移动了1px,且是向左移动(左负右正)。这个属性对于实现滑块移动很有帮助,这里给出一个简单的案例:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>example</title>
</head>
<body style="margin: 0px;">
    <div style="width: 200px;height: 10px;background-color: #a0a0a0;margin: 50px;position: relative;">
		<div id="jdjq" style="width: 10px;height: 50px;background-color: #3389fc;position: absolute;left: 60px;top: -20px;"></div>
	</div>
    <script>
        const slider = document.getElementById('jdjq');
		let pointerid = 0;
		let movecount = 0;
		slider.addEventListener('pointerdown',function(e){
			pointerid = e.pointerId;
			slider.setPointerCapture(pointerid);
		});
		slider.addEventListener('pointermove',function(e){
			if(e.pointerId===pointerid){
				movecount += e.movementX;
				if(movecount<-60){
					slider.style.left = '0px';
				}
				else if(movecount>130){
					slider.style.left = '190px';
				}
				else{
					slider.style.left = 60+movecount+'px';
				}
			}
		});
		slider.addEventListener('pointerup',function(e){
			pointerid = 0;
		});
		slider.addEventListener('pointercancel',function(e){
			pointerid = 0;
		});
    </script>
</body>
</html>

在这里稍微提一下PointerEvent,该事件继承自MouseEvent,它集成了鼠标和触摸事件的优点,也就意味着它经过合理设置可以替代鼠标和触摸事件,具有良好的复用性和跨平台能力。它的用法大致上跟鼠标事件差不多但略有区别,具体可以参考mdn文档。详见PointerEvent - Web APIs | MDN

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值