话不多说;直接上代码(复制粘贴即可使用)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#box{
width: 100px;
height: 100px;
background: red;
position: absolute;
}
</style>
</head>
<body>
<input type="button" name="btn" id="btn" value="回到原点" />
<div id="box">
</div>
<script type="text/javascript">
var arr = [];
function drag(obj){
obj.onmousedown = function(evt){
arr = [];
var e = evt || window.event;
//获取鼠标的相对于对象的坐标值
var disX = e.offsetX;
var disY = e.offsetY;
document.onmousemove = function(evt){
var e = evt || window.event;
//求出对象到页面边的距离
var left = e.pageX - disX;
var top = e.pageY - disY;
//设置边界
//左右边界
if(left <= 0){
left = 0;
}else if(left >= document.documentElement.clientWidth - obj.offsetWidth){
left = document.documentElement.clientWidth - obj.offsetWidth;
}
//上下边界
if(top <= 0){
top = 0;
}else if(top >= document.documentElement.clientHeight - obj.offsetHeight){
top = document.documentElement.clientHeight - obj.offsetHeight;
}
//设置对象的坐标值
obj.style.left = left + "px";
obj.style.top = top + "px";
console.log({"left":obj.offsetLeft,"top" : obj.offsetTop});
//记录下对象运动的轨迹
arr.push({"left":obj.offsetLeft,"top" : obj.offsetTop});
}
//取消移动事件
document.onmouseup = function(){
document.onmousemove = null;
}
//删除拖拽的默认行为
document.ondragstart = function(){
return false;
}
}
}
var oBox = document.getElementById("box");
var oBtn = document.getElementById("btn");
oBtn.onclick = function(){
var index = arr.length - 1;
var timer = setInterval(function(){
if(index < 0){
clearInterval(timer);
arr = [];
}else{
oBox.style.left = arr[index].left + "px";
oBox.style.top = arr[index].top + "px";
index --;
}
},30)
}
drag(oBox);
</script>
</body>
</html>