实战编写手机端拖拽元素

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>手机拖拽</title>
	</head>
	<body>
		
		<div id="div1" style="width: 100px;height: 100px;border: 1px solid red;position: absolute;left: 0;top: 0;"></div>
		
		<script>
			var div1= document.getElementById('div1');
			var diX = diY = 0;
			div1.addEventListener('touchstart', function(event) {
			  event.preventDefault();//阻止其他事件
			   if (event.targetTouches.length == 1) {
			     	var touch = event.targetTouches[0];  // 把元素放在手指所在的位置
			  		disX = touch.pageX - div1.offsetLeft;   // 鼠标横坐标 - div1的left
			        disY = touch.pageY - div1.offsetTop;    // 鼠标纵坐标 - div1的top
			   }
			    	div1.addEventListener('touchmove',function(event){
			    	event.preventDefault();
			    		
			            
				 // 如果这个元素的位置内只有一个手指的话
				 	 if (event.targetTouches.length == 1) {
					   var touch = event.targetTouches[0];  // 把元素放在手指所在的位置
					   var x = touch.pageX- disX;
			           var y = touch.pageY - disY;
					   var window_width  = document.documentElement.clientWidth  - div1.offsetWidth;
			           var window_height = document.documentElement.clientHeight - div1.offsetHeight;
			            
			            x = ( x < 0 ) ? 0 : x;                          // 当div1到窗口最左边时
			            x = ( x > window_width ) ? window_width : x;    // 当div1到窗口最右边时
			            y = ( y < 0 ) ? 0 : y;                          // 当div1到窗口最上边时
			            y = ( y > window_height ) ? window_height : y;  // 当div1到窗口最下边时
			            
			            div1.style.left = x + "px";
			            div1.style.top  = y + "px";
				   }
					
			    },false)
			 	
			}, false);
		</script>
	</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值