JS运动之多物体框架--多个div变宽

如果只为div添加一个定时器的话,在多个div变宽的时候会发生问题,但是如果为每个div添加一个定时器,那么就可以实现多个物体变宽。注意:在多物体运动的情况下,所有东西不能共用。offset**会跟border冲突导致不能得到想要的结果,在这里可以用getStyle()函数代替。
  1. function getStyle(obj, name)
  2. {
  3.         if(obj.currentStyle)
  4.         {
  5.                 return obj.currentStyle[name];
  6.         }
  7.         else
  8.         {
  9.                 return getComputedStyle(obj, false)[name];
  10.         }
  11. }
复制代码
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title></title>
  6. <style>
  7. div{
  8.         width:100px;
  9.         height:50px;
  10.         background:red;
  11.         margin:10px;
  12. }



  13. </style>


  14. <script>

  15. window.οnlοad=function (){
  16.         var aDiv=document.getElementsByTagName('div');
  17.         for(var i=0;i<aDiv.length;i++)
  18.         {        
  19.                 aDiv[i].timer=null;//自定义属性,加一个定时器
  20.                 aDiv[i].οnmοuseοver=function ()
  21.                 {
  22.                         startMove(this,400);
  23.                 };
  24.                 aDiv[i].οnmοuseοut=function ()
  25.                 {
  26.                         startMove(this,100);
  27.                 };
  28.         }
  29. };

  30. var timer=null;
  31. function startMove(obj, iTarget)
  32. {
  33.         clearInterval(obj.timer);
  34.         obj.timer=setInterval(function (){
  35.                 var speed=(iTarget-obj.offsetWidth)/6;
  36.                 speed=speed>0?Math.ceil(speed):Math.floor(speed);
  37.                 
  38.                 if(obj.offsetWidth==iTarget)
  39.                 {
  40.                         clearInterval(obj.timer);
  41.                 }
  42.                 else
  43.                 {
  44.                         obj.style.width=obj.offsetWidth+speed+'px';
  45.                 }
  46.         }, 30);
  47. }



  48. </script>
  49. </head>
  50. <body  >
  51.      <div ></div>  
  52.      <div ></div>  
  53.      <div ></div>  

  54. </body>
  55. </html>
复制代码
效果图:


20140723102201281.jpg 
20140723102209564.jpg 


20140723101939593.jpg 




20140723101945343.jpg 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值