点滴积累【JS】---JS小功能(JS实现多物体缓冲运动)
效果:
思路:
利用setInterval计时器进行运动,offsetWidth实现宽度的变动,在用onmouseover将终点和所选中的DIV放入参数再进行缓冲运动。
代码:
1 <head runat="server"> 2 <title></title> 3 <style type="text/css"> 4 div 5 { 6 width: 100px; 7 height: 50px; 8 background: #0000FF; 9 margin: 10px; 10 } 11 </style> 12 <script type="text/javascript"> 13 window.onload = function () { 14 var oDiv = document.getElementsByTagName('div'); 15 for (var i = 0; i < oDiv.length; i++) { 16 oDiv[i].timer = null; //给买个DIV做个标记,用以关闭相应DIV的定时器 17 oDiv[i].onmouseover = function () { 18 move(this, 400); //给定时器输出参数 19 } 20 oDiv[i].onmouseout = function () { 21 move(this, 100); 22 } 23 } 24 }; 25 function move(div, end) { 26 clearInterval(div.timer); 27 div.timer = setInterval(function () { 28 var speed = (end - div.offsetWidth) / 5; //(终点-要走的宽度)/缩放系数=DIV移动的速度 29 speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed); //小数取整,也就是进位取整 30 if (div.offsetWidth == end) { //当到达终点时关闭计时器 31 clearInterval(div.timer); 32 } 33 else { 34 div.style.width = div.offsetWidth + speed + 'px'; //移动DIV的宽度 35 } 36 }, 30) 37 } 38 </script> 39 </head> 40 <body> 41 <div> 42 </div> 43 <div> 44 </div> 45 <div> 46 </div> 47 </body>