Javascript学习------top/left简单动画,效果与jquery的动画差不多
在网上查看jquery的动画帧率为13毫秒
我用下面的小例子验证了一下:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <title>top/left简单动画</title> 5 <style type="text/css"> 6 * { margin: 0px; padding: 0px; } 7 </style> 8 <script src="http://common.cnblogs.com/script/jquery.js"></script> 9 </head> 10 <body> 11 <div style="width:50px;height:50px;border:1px solid #f36e0a;border-radius:50px;background:#a1fa0e;position:absolute;z-index:1;top:0px;left:0px;" id="dom"></div> 12 <div style="width:50px;height:50px;border:1px solid #f36e0a;border-radius:50px;background:#a1fa0e;position:absolute;z-index:1;top:0px;left:52px;" id="dom2"></div> 13 <script type="text/javascript"> 14 var dom = document.getElementById("dom"); 15 var oldx = parseInt(getStyle(dom, "left").slice(0, -2)); 16 var oldy = parseInt(getStyle(dom, "top").slice(0, -2)); 17 var old = { left: oldx, top: oldy };//动画记录json 18 var oldover = []; 19 var s1 = getss();//动画初始时间毫秒 20 21 //动画函数 22 function move(movedom, jsons, t) { 23 var s2 = getss();//动画进行时间毫秒计算 24 var s3 = s2 - s1;//动画耗时差 25 s1 = s2;//计录时间此时时间 26 var b = s3 / t;//得到动画的相对比例; 27 var movelength = 0; 28 for (var item in jsons) {//执行动作 29 moveh = jsons[item] * b; 30 if (old[item] >= jsons[item]) { 31 old[item] = jsons[item]; 32 oldover.push(0);//放进数组 33 } 34 else { 35 old[item] += moveh; 36 } 37 switch (item) { 38 case "left": 39 dom.style.left = old[item] + "px"; 40 break; 41 case "top": 42 dom.style.top = old[item] + "px"; 43 break; 44 } 45 movelength++; 46 } 47 //结束动画; 48 if (oldover.length >= movelength) { 49 clearInterval(m); 50 } 51 } 52 53 //获得css值 54 function getStyle(obj, attr) { 55 return obj.currentStyle ? obj.currentStyle[attr] : getComputedStyle(obj, false)[attr]; 56 } 57 58 //获得当前时间(毫秒) 59 function getss() { 60 var dtime = new Date(); 61 return dtime.getHours() * 3600 * 1000 + dtime.getMinutes() * 60 * 1000 + dtime.getSeconds() * 1000 + dtime.getMilliseconds(); 62 } 63 64 //js动画 65 var m = setInterval(‘move(dom,{top:300,left:300},1000)‘, 13); 66 //jquery动画 67 $(function () { 68 $("#dom2").animate({ top: 300, left: 352 }, 1000, "linear"); 69 }); 70 </script> 71 </body> 72 </html>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。