运动基础
一、匀速运动
运动框架
在开始运动时,关闭已有定时器
把运动和停止隔开(if/else)
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <style> #div1 {width:200px; height:200px; background:red; position:absolute; top:50px; left:0px;} </style> <script> var timer = null; function startMove() { var oDiv=document.getElementById('div1'); clearInterval(timer); timer = setInterval(function (){ var speed = 1; if(oDiv.offsetLeft>=300){ clearInterval(timer); }else{ oDiv.style.left=oDiv.offsetLeft+speed+'px'; } }, 30); } </script> </head> <body> <input id="btn1" type="button" value="开始运动" onclick="startMove()" /> <div id="div1"> </div> </body> </html>
运动框架实例
例子1:“分享到”侧边栏
通过目标点,计算速度值
<!DOCTYPE HTML> <html> <head> <meta charset="utf-8"> <title>无标题文档</title> <style> #div1 {width:150px; height:200px; background:green; position:absolute; left:-150px;} #div1 span {position:absolute; width:20px; height:60px; line-height:20px; background:blue; right:-20px; top:70px;} </style> <script> window.onload=function () { var oDiv=document.getElementById('div1'); oDiv.onmouseover=function () { startMove(0); }; oDiv.onmouseout=function () { startMove(-150); }; }; var timer=null; function startMove(iTarget) { var oDiv=document.getElementById('div1'); clearInterval(timer); timer=setInterval(function (){ var speed=0; if(oDiv.offsetLeft>iTarget) { speed=-10; } else { speed=10; } if(oDiv.offsetLeft==iTarget) { clearInterval(timer); } else { oDiv.style.left=oDiv.offsetLeft+speed+'px'; } }, 30); } </script> </head> <body> <div id="div1"> <span>分享到</span> </div> </body> </html>