JavaScript多物体运动三

JavaScript多物体运动三

 HTML

  <div id="div1"></div>
  <div id="div2"></div>
  <div id="div3">font-sizeChange</div>
  <div id="div4">透明度的改变滴呀</div>

CSS

   div{
       height:50px;
       width:100px;
       background:green;   
       margin:10px;
       font-size:14px;
   }

javaScript(完整代码):这里面有很多需要重构和注意的地方滴

 //支持 宽 高 字体大小 边框
   window.onload=function (){
       //这里的代码时 有待我们重构滴呀
       var obj1=document.getElementById("div1");
       var obj2=document.getElementById("div2");
       var obj3=document.getElementById("div3");
       var obj4=document.getElementById("div4");
       obj1.onmouseover=function (){
           move(this,'width',300);
       }
       obj1.onmouseout=function (){
           move(this,'width',100);
       }
       obj2.onmouseover=function (){
         move(this,'height',300);
       }
       obj2.onmouseout=function (){
         move(this,'height',50);
       }
       obj3.onmouseover=function (){
         move(this,'fontSize',30);
       }
       obj3.onmouseout=function (){
         move(this,'fontSize',14);
       }
       obj4.onmouseover=function (){
         move(this,'opacity',100);
       }
       obj4.onmouseout=function (){
         move(this,'opacity',30);
       }
       
   }
   //操作对象   动作    目标
   function getStyle(obj,name){
     if(obj.currentStyle!=undefined){
         return obj.currentStyle[name]; 
     }else{
         return getComputedStyle(obj,false)[name];
     }
   }

   function move(obj,attr,iTarget){
       //记住多物体运动的时候,没给obj都有不同的Timer对象;另外一个物体运动时,记得清楚之情对象的Timer
       //记住一定要清楚之前的Timer
       clearInterval(obj.Timer);
       obj.Timer=setInterval(function (){ //可以动态的创建属性;
          var val=0;
          if(attr=='opacity'){
            val=Math.round(parseFloat(getStyle(obj,attr))*100);
            //这里又很多机关滴呀
          }else{
            val=parseInt(getStyle(obj,attr));  
          }
          var speed=(iTarget-val)/6;
          speed=speed>0?Math.ceil(speed):Math.floor(speed); //记得取整;
          if(val==iTarget){
             clearInterval(obj.Timer);  
          }else{
              if(attr=='opacity'){
                   //火狐和chrome的是取小数
                  obj.style.opacity=(val+speed)/100;
                  obj.style.filter='alpha(opacity:'+val+speed+')';
              }else{
                obj.style[attr]=val+speed+'px';  
              }

          }
           
       },30)
   }

效果:

 windowonload的中的简单重构;(代码多,物体多,对象多) 那么面向对象的编程的优势就体现出来了滴呀;

原文地址:https://www.cnblogs.com/mc67/p/5196191.html