javascript 实现 原路返回
css代码
<styletype="text/css"> *{ margin:0px; padding:0px; font-family:"micsoftyahei","微软雅黑"; font-size:15px; } div{ width:50px; height:50px; background:#f00; border-radius:5px; -moz-border-radius:5px; -webkit-border-radius:5px; cursor:pointer; position: absolute; top:60px; left:30px; } input{ position:absolute; top:10px; left:10px; padding:3px; cursor:pointer; } </style>
html代码
<body> <inputtype="button"value="原路返回"/> <div></div> </body>
javascript代码
<scripttype="text/javascript"> //1、以鼠标在div上点击触发为开始 //2、点击鼠标移动时触发鼠标移动事件向数组内注入数据(移动的坐标) //3、以鼠标从div上移开为结束 //4、点击“原路返回”按钮遍历数组(移动的坐标)定时触发数组内的坐标移动div达到”返回“的功能 window.onload=function(){ varoDiv=document.getElementsByTagName("div")[0]; varoBtn=document.getElementsByTagName("input")[0]; vartime=null,arrTop=[],arrLeft=[]; oDiv.onmousedown=function(ev){ varevent=ev||window.event; //获取鼠标在div内的坐标 vardisX=event.clientX-oDiv.offsetLeft; vardisY=event.clientY-oDiv.offsetTop; arrTop=[60]; arrLeft=[30]; document.onmousemove=function(ev){ varevent=ev||window.event; //获取拖拽后鼠标的位置 varl=event.clientX; vart=event.clientY; //把拖拽后的位置存进数组里面,用拖拽后鼠标的位置减去鼠标在物体上的位置,就是拖拽后物体的位置 arrLeft.push(l-disX); arrTop.push(t-disY); oDiv.style.left=l-disX+"px"; oDiv.style.top=t-disY+"px"; }; document.onmouseup=function(){ document.onmousemove=null; document.onmouseup=null; }; returnfalse; } //原路返回的核心就是把移动时的坐标记录下来,然后进行数组重排,并设定定时器把数组内的搞宽赋值给物体。 oBtn.onclick=function(){ arrTop.reverse();//重排 arrLeft.reverse();//重排 vari=0; oBtn.time=setInterval(function(){ oDiv.style.top=arrTop[i]+"px"; oDiv.style.left=arrLeft[i]+"px"; i++; if(i==arrTop.length){ clearInterval(oBtn.time); arrTop=[]; arrLeft=[]; } },20); } } </script>