缓动动画函数封装
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en"> <head> <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> <title>Document</title> <style> *{ padding:0; margin:0; } #demo{ width:100px; height:100px; background-color: pink; position:absolute; top:50px; left:0; } </style> </head> <body> <button id="btn300">300</button> <button id="btn600">600</button> <div id="demo"></div> </body> </html> <script> var btn300=document.getElementById("btn300"); var btn600=document.getElementById("btn600"); var demo=document.getElementById("demo"); btn300.onclick=function () { run(demo,300); } btn600.onclick=function () { run(demo,600); } //封装函数 var timer=null; function run(obj,target) //第一个参数,谁动(做动画的对象),第二个参数,动多少(目标位置) { clearInterval(timer); obj.timer=setInterval(function(){ var step=(target-obj.offsetLeft)/10; step=step >0 ? Math.ceil(step) : Math.floor(step); obj.style.left=obj.offsetLeft+step+"px"; if(obj.offsetLeft==target) { clearInterval(obj.timer); } },10) } </script>
动画函数给不同元素记录不同定时器:
obj.timer
如果多个元素都使用这个动画函数,每次都要 var 声明定时器 ,我们可以给不同的元素使用不同的定时器
核心原理:利用JS是一门动态语言,可以很方便的给当前对象添加属性