一、多物体同时运动

栗子一:多个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);
  }

js基础之动画(二)的更多相关文章

  1. GSAP JS基础教程--动画的控制及事件

    好多天没有写无博文啦,今天无聊就再写一下! 今天要讲的是TweenLite的一些事件以及,TweenLite动画的控制,TweenMax类似,请自行参考官方文档:http://api.greensoc ...

  2. js基础提高(二)

    JavaScript基础提高(二) 上篇写的是JavaScript的历史.基本的数据类型和基本的语法进填的话讲的就深入一些了. js的函数 1.js函数定义的方式 (1)普通方式 语法:functio ...

  3. JS基础语法(二)

    目录 JavaScript基础语法(二) 八. 函数 1. 函数的概念 2. 函数的使用 声明函数 调用函数 3. 函数的封装 4. 函数的参数 函数的参数匹配问题 5. 函数返回值 6. argum ...

  4. JS基础学习(二)

    昨天把网站上的基础知识看完了,下面是剩下的部分 第六节 JS Window浏览器对象模型 JavaScript全局对象,函数,变量均自动成为window对象的成员. 1.Window对象 1.获取浏览 ...

  5. js基础之动画(三)

    一.链式运动 首先,要改进运动框架 function getStyle(obj,attr){ if(obj.currentStyle){ return obj.currentStyle[attr]; ...

  6. js基础之动画(一)

    一.让div动起来 var oBtn = document.getElementById('btn1');  var timer='';//设置定时器 oBtn.onclick=function st ...

  7. 前端新人学习笔记-------html/css/js基础知识点(二)

    4月7日学到的知识点:     一:<img src="1.png" alt="美女"/> alt是给图片添加介绍,当图片没加载出来时,会直接显示a ...

  8. JS——基础知识(二)

    1.变量提升问题 <script> var num=10; fun(); function fun(){ console.log(num); var num=20; } </scri ...

  9. JS基础速成(二)-BOM(浏览器对象模型)

    .t1 { background-color: #ff8080; width: 1100px; height: 40px } 一.BOM(浏览器对象模型) 1.screen对象. console.lo ...

随机推荐

  1. mysql复制的配置

    # 78服务器 server-id=78 # 从哪个数开始 auto_increment_offset=1  # 每次增加多少 auto_increment_increment=2 log-bin=m ...

  2. js实现checkbox的全选和全不选功能

    html代码: <form name="form1" method="post" action="manage.php?act=sub" ...

  3. (五)uboot移植补基础之shell

    1.shell介绍:shell是操作系统的终端命令行 (1)shell可以理解为软件系统提供给用户操作的命令行界面,可以说它是人机交互的一种方式.(2)我们可以使用shell和操作系统.uboot等软 ...

  4. Codeforces 527C Glass Carving

    vjudge 上题目链接:Glass Carving 题目大意: 一块 w * h 的玻璃,对其进行 n 次切割,每次切割都是垂直或者水平的,输出每次切割后最大单块玻璃的面积: 用两个 set 存储每 ...

  5. centos用户权限设置

    了解常见的账号配置文件 学会管理用户账号.组账号 学会设置目录或文件的权限 学会设置目录或文件的归属 用户账号文件/etc/passwd   :保存用户名称.宿主目录.登录shall等基本信息 每一行 ...

  6. 【Oracle 数据迁移】环境oracle 11gR2,exp无法导出空表的表结构【转载】

    今天做数据迁移,但是发现有些空表无法exp,后来找到问题所在. [原文]:http://www.cnblogs.com/wenlong/p/3684230.html 11GR2中有个新特性,当表无数据 ...

  7. JavaScript数学揭密之函数与勾股定理

    一.函数 function show(n){ return n*2; } alert( show(2) ); alert( show(3) ); alert( show(4) ); 二.勾股定理 1. ...

  8. yum的使用及配置

    yum的使用及配置 文章来源:http://www.ilanni.com/?p=9032 最近由于服务器需求,需要在公司内网搭建内网yum源. 搭建内网yum源需要分以下几个步骤,如下: 1. yum ...

  9. SQL Server 2008 R2 开启允许远程连接

      方法/步骤 1 登陆SQL Server 2008(windows身份认证),登陆后右击,选择“属性”.   2 左侧选择“安全性”,选中右侧的“SQL Server 和 Windows 身份验证 ...

  10. VI经典插件ctags

    Vi经典插件ctags(转) (为了提高工作效率,必须学会使用一些工具) . 查看 key 相关信息说明的命令 :help keycodes ============================= ...