JavaScript怎么做拖拽轨迹的回放

<!DOCTYPE html>
<html id="hId">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<style type="text/css">


*{
margin:0px;
padding:0px;
}


#box{
position:absolute;
left:300px;
top:100px;
width:300px;
height:200px;
border:1px solid black;
}


#title{
width:300px;
height:30px;
background-color:green;
text-align:center;
}




#content{
width:300px;
height:170px;
}




</style>


<body>
<div id="box">
<div id="title">
标题
</div>
<div id="content">
内容内容内容内容
</div>
</div>
</body>
</html>


<script type="text/javascript">


//定义一个数组,保存鼠标经历的每个点;
var points = [];


window.onload = function(){
var isDown = false;
var offsetX =0;
var offsetY =0;
document.getElementById("title").onmousedown = function(event){
var evt = event || window.event;
offsetX = evt.offsetX;
offsetY = evt.offsetY;
isDown=true;
this.style.cursor = "pointer";
}

document.onmouseup = function(){
isDown=false;
replay();
}

document.onmousemove = function(event){
if(isDown){
var box = document.getElementById("box");
var evt = event || window.event;
//求出box的left和top
var left = evt.pageX-offsetX;
var top = evt.pageY-offsetY;
//把left和top放到一个对象里
var obj = {
"left":left,
"top":top
};
//把对象放入数组
points.push(obj);

box.style.left = left+"px";
box.style.top = top+"px";
}
}
}


function replay(){
var i=points.length-1;//i赋值为数组的最大下标;
//启动定时器,把数组倒着进行循环
var mytimer = setInterval(function(){
i--;//下标--
if(i<0){//下标i越界(越的是下界)
window.clearInterval(mytimer);//停定时器
points=[];//清空数组中的数据
return;//结束函数执行。
}
//根据下标i,从数组中取出数据(left和top)赋给box
var box = document.getElementById("box");
box.style.left = points[i].left+"px";
box.style.top = points[i].top+"px";
}
,
20
);
}


</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值