js实现移动端触屏实现拖拽功能

转载:https://www.jianshu.com/p/750ca057bb3d

1.html

<div id="div1"></div>

2.css

* {
	margin: 0;
	padding: 0;
}

html,
body {
	width: 100%;
	height: 100%;
}

#div1 {
	width: 50px;
	height: 50px;
	background: cyan;
	position: absolute;
}

3.js

var div1 = document.querySelector('#div1');
//限制最大宽高,不让滑块出去
var maxW = document.body.clientWidth - div1.offsetWidth;
var maxH = document.body.clientHeight - div1.offsetHeight;

//手指触摸开始,记录div的初始位置
div1.addEventListener('touchstart', function(e) {
	var ev = e || window.event;
	var touch = ev.targetTouches[0];
	oL = touch.clientX - div1.offsetLeft;
	oT = touch.clientY - div1.offsetTop;
	document.addEventListener("touchmove", defaultEvent, false);
});
//触摸中的,位置记录
div1.addEventListener('touchmove', function(e) {
	var ev = e || window.event;
	var touch = ev.targetTouches[0];
	var oLeft = touch.clientX - oL;
	var oTop = touch.clientY - oT;
	if(oLeft < 0) {
		oLeft = 0;
	} else if(oLeft >= maxW) {
		oLeft = maxW;
	}
	if(oTop < 0) {
		oTop = 0;
	} else if(oTop >= maxH) {
		oTop = maxH;
	}

	div1.style.left = oLeft + 'px';
	div1.style.top = oTop + 'px';

});
//触摸结束时的处理
div1.addEventListener('touchend', function() {
	document.removeEventListener("touchmove", defaultEvent);
});

//阻止默认事件
function defaultEvent(e) {
	e.preventDefault();
}

3.效果

4.几点说明

      对于触屏手机端用手指事件,对于PC端用鼠标事件,其实原理都一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值