<!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>
鼠标实现div拖拽
最新推荐文章于 2024-03-04 15:08:00 发布