简单的拖拽

本文介绍了一个简单的HTML页面,该页面使用JavaScript实现了一个可拖拽的div元素。通过计算鼠标位置与div元素之间的相对位置来更新元素的位置,实现了基本的拖拽功能。
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
		<style>
			#dragdiv {position : absolute;left:0px;top:0px;border:solid 1px;height:100px;width:100px;}
		</style>
	</head>
	<body>
		<div id="dragdiv" onmousedown="dragstart(event , this)"></div>
		<script>
			var boxModel = !/msie/i.test(navigator.userAgent) || document.compatMode == "CSS1Compat";
			function getDocScroll(name) {
				var arr = name == 'Left' ? ['pageXOffset' , 'scrollLeft'] : ['pageYOffset' , 'scrollTop'];
				return window[arr[0]] || boxModel && document.documentElement[arr[1]] || document.body[arr[1]] ;
			}
			function getElementPos(el) {
				var left = el.offsetLeft , top = el.offsetTop ;
				while(el = el.offsetParant) {
					left += el.offsetLeft;
					top += el.offsetTop;
				}
				return {
					left : left ,
					top  : top
				};
			}
			var bDrag = false , eldrag = null ;
			function dragstart(e , el) {
				e = e || window.event;
				var p = getElementPos(el);
				var sl = getDocScroll('Left');
				var st = getDocScroll('Top');
				el.deltaX = e.clientX + sl - p.left;
				el.deltaY = e.clientY + st - p.top;
				bDrag = true;
				eldrag = el;
				if (eldrag.setCapture) eldrag.setCapture();
 				eldrag.onlosecapture = function() { document.onmouseup(); }
			}
			document.onmousemove = function(e) {
				if(!bDrag) return;
				e = e || window.event;
				var sl = getDocScroll('Left');
				var st = getDocScroll('Top');
				var x = sl + e.clientX - eldrag.deltaX;
				var y = st + e.clientY - eldrag.deltaY;
				eldrag.style.left = x + 'px';
				eldrag.style.top = y + 'px';
			};
			document.onmouseup = function() {
				if(!bDrag) return;
				if (eldrag.releaseCapture) eldrag.releaseCapture();
 				document.body.focus();
 				bDrag = false;
				eldrag = null;
			};
		</script>
	</body>
</html>
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值