鼠标实现div拖拽

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<style type="text/css">
			#box1 {
				width: 300px;
				height: 300px;
				background-color: #AAAAFF;
				position: absolute;
			}

			#box2 {
				width: 300px;
				height: 300px;
				background-color: #a2c8b9;
				position: absolute;
				left: 200px;
				top: 50px;
			}
		</style>
		<script type="text/javascript">
			window.onload = function() {
					var box1 = document.getElementById("box1");
					var box2 = document.getElementById("box2");
					drags(box1);
					drags(box2);

					//提取一个专门用来设置拖拽的函数
					//开启拖拽元素
					function drags(obj) {
						//拖拽div元素
						//当鼠标在被拖拽元素上按下时,开始拖拽onmousedown
						obj.onmousedown = function(event) {
							//设置box1捕获所有鼠标按下的事件IE才能用,在火狐中调用不会报错,在chrome中会报错
							// if(box1.setCapture){
							// 	box1.setCapture();
							// }
							obj.setCapture&&obj.setCapture();
							event = event || window.event;
							//div的偏移量:鼠标.clientX-元素.offsetLeft
							//div的偏移量:鼠标.clientY元素.offsetTop
							var ol = event.clientX - obj.offsetLeft;
							var ot = event.clientY - obj.offsetTop;
							document.onmousemove = function(event) {
								//当鼠标移开时被拖拽元素跟随鼠标移动,获取鼠标位置
								event = event || window.event;
								var left = event.clientX - ol;
								var top = event.clientY - ot;
								obj.style.left = left + "px";
								obj.style.top = top + "px";
							};
							//当鼠标松开时,被拖拽元素固定在当前位置,取消document.onmousemove事件
							document.onmouseup = function() {
								document.onmouseup = null; //如果不设置该行代码,在元素被挪位置后,不管点击哪里,alert那行语句都会被触发
								document.onmousemove = null;

								//当我们拖拽一个网页中的内容时,浏览器会默认去搜索引擎中搜索内容
								//此时就会导致拖拽功能的异常,这是浏览器提供的默认行为
								//如果不希望发生这个行为,则可以通过return false来取消默认行为
								//对IE8不起作用

								//放下鼠标取消捕获
								obj.releaseCapture && obj.releaseCapture();
							};
							return false; //对其他浏览器
						};

					}
			};		
		</script>
	</head>
	<body>
		<p>hello</p>
		<div id="box1">

		</div>
		<div id="box2">

		</div>
	</body>
</html>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值