zoukankan      html  css  js  c++  java
  • js基础之动画(二)

    一、多物体同时运动

    栗子一:多个Div,鼠标移入变高,动态下拉菜单

    function startMove(obj,iTarget){ 
      clearInterval(obj.timer);
      obj.timer=setInterval(function(){
        var iSpeed=(iTarget-obj.offsetHeight)/8;
        iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);
        if(obj.offsetHeight==iTarget){
          clearInterval(obj.timer);
        }else{
          obj.style.height=obj.offsetHeight+iSpeed+'px';
        }
      },30);
    }
      window.onload=function(){
      var oMenu = document.getElementsByClassName('menu');
      var i=0;
      for(i=0;i<oMenu.length;i++){
        oMenu[i].timer=null;//每个div都有自己的定时器
        oMenu[i].onmouseover=function(){
          startMove(this,300);
          //setTimeout(function(){document.getElementsByClassName('mList').item(0).style.display='block'},100);
        }
        oMenu[i].onmouseout=function(){
          startMove(this,30);
        }
      }

    }

     栗子二:多个div淡入淡出

    function startMove(obj,iTarget){
      clearInterval(obj.timer);
      obj.timer=setInterval(function(){
        var iSpeed=(iTarget-obj.alpha)/8;
        iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);

        if(obj.alpha==iTarget){
          clearInterval(obj.timer);
        }else{
          obj.alpha+=iSpeed;document.title=obj.alpha;
          obj.style.filter='alpha(opacity:'+obj.alpha+')';
          obj.style.opacity=obj.alpha/100;
        }
      },30);
    }

      window.onload=function(){
      var oMenu = document.getElementsByClassName('menu');
      var i=0;
      for(i=0;i<oMenu.length;i++){
          oMenu[i].alpha=null;//把透明度与对象绑定,其他属性也一样
        oMenu[i].onmouseover=function(){
          startMove(this,300);
          //setTimeout(function(){document.getElementsByClassName('mList').item(0).style.display='block'},100);
        }
        oMenu[i].onmouseout=function(){
          startMove(this,30);
        }
      }

    }

    栗子三:多个div不同属性

    function getStyle(obj,attr){
      if(obj.currentStyle){
        return obj.currentStyle[attr];
      }else{
        return getComputedStyle(obj,false)[attr];
      }
    }
    function startMove(obj,attr,iTarget){//多div运动
    //var obj = document.getElementsByClassName('menu');

    clearInterval(obj.timer);
    obj.timer=setInterval(function(){
      var iCur=0;
      if(attr=='opacity'){
        var iCur=parseInt(parseFloat(getStyle(obj,attr))*100);
      }else{
        var iCur=parseInt(getStyle(obj,attr));
    }

    var iSpeed=(iTarget-iCur)/8;
    iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);console.log(iSpeed+'/'+iCur);
      if(iCur==iTarget){
        clearInterval(obj.timer);
      }else{
        if(attr=='opacity'){
          obj.style.fliter='alpha(opacity:'+(iCur+iSpeed)+')';
          obj.style.opacity=(iCur+iSpeed)/100;
        }else{
          obj.style[attr]=iCur+iSpeed+'px';console.log(obj.style.attr);
        }

      }
    },30);
      }
    window.onload=function(){

    var oMenu = document.getElementsByClassName('menu');
    var i=0;
    for(i=0;i<oMenu.length;i++){
      oMenu[i].timer=null;
      oMenu[i].onmouseover=function(){
        startMove(this,'opacity',100);
        //startMove(this,'width',300);
        //startMove(this,'height',300);
        //startMove(this,'font-size',50)
        setTimeout(function(){document.getElementsByClassName('mList').item(0).style.display='block'},100);
      }
      oMenu[i].onmouseout=function(){
        startMove(this,'opacity',10);
        //startMove(this,'width',10);
        //startMove(this,'height',30);
        //startMove(this,'font-size',20)
      }
    }

    }

    二、封装自己的运动框架

    function getStyle(obj,attr){
      if(obj.currentStyle){
        return obj.currentStyle[attr];
      }else{
        return getComputedStyle(obj,false)[attr];
      }
    }
    function startMove(obj,attr,iTarget){//多div运动
    //var obj = document.getElementsByClassName('menu');

    clearInterval(obj.timer);
    obj.timer=setInterval(function(){
      var iCur=0;
      if(attr=='opacity'){
        var iCur=parseInt(parseFloat(getStyle(obj,attr))*100);
      }else{
        var iCur=parseInt(getStyle(obj,attr));
    }

    var iSpeed=(iTarget-iCur)/8;
    iSpeed=iSpeed>0?Math.ceil(iSpeed):Math.floor(iSpeed);console.log(iSpeed+'/'+iCur);
      if(iCur==iTarget){
        clearInterval(obj.timer);
      }else{
        if(attr=='opacity'){
          obj.style.fliter='alpha(opacity:'+(iCur+iSpeed)+')';
          obj.style.opacity=(iCur+iSpeed)/100;
        }else{
          obj.style[attr]=iCur+iSpeed+'px';console.log(obj.style.attr);
        }

      }
    },30);
      }


    作者:狂流
    出处:http://www.cnblogs.com/kuangliu/
    欢迎转载,分享快乐! 如果觉得这篇文章对你有用,请抖抖小手,推荐一下!

  • 相关阅读:
    《Python》进程收尾线程初识
    《Python》进程之间的通信(IPC)、进程之间的数据共享、进程池
    L02-RHEL6.5环境中安装JDK1.8
    L01-RHEL6.5中部署NTP(ntp server + client)
    P01-Python中列表的复制问题
    数据库模式(三级模式+两级映射)
    事务的四大性质:ACID
    JAVA_接口_默认方法&静态方法
    2018年最新Java面试题及答案整理
    Socket通信原理
  • 原文地址:https://www.cnblogs.com/kuangliu/p/3481946.html
Copyright © 2011-2022 走看看