javascript流畅动画效果,包括颜色,style属性,dom元素属性一步搞定

来源:互联网 发布:吉他调音软件guitar 编辑:程序博客网 时间:2024/06/06 08:43

 javascript的动画效果一般体现在HTMLElement元素的3个属性上:

  1. style对象的属性,如height,width,marginLeft等等
  2. 由于颜色的拐藻形式,如#eee,#ffffff,rgb(0,0,0)还有名字还百分比的我都不想提了,所以算然颜色也是style的属性但单独领出来。又称颜色梯度渐变。
  3. 就是HTMLElement的一些view properties,如scrollTop.当然有些是可以赋值的有些是只读的

自定义动画无非就是用定时器来改变上面提到的属性了,我们也分3步走:

  1. 解析自定义动画参数
  2. 配置动画步骤
  3. 启动定时器开始动画
  4. 如何能让低效率的javascript流畅动画呢见这里  : http://blog.csdn.net/tom_221x/archive/2009/09/07/4528564.aspx

 

现在无废话见代码:

 

第一部解析动画参数

 

这一步之后ops这个数组中存放了我们需要动画的属性,例如{height:'300px',width:'+=300px',color:'#eee'},

ops = ['height','',300,'px','width','+=','px','color','#eee','#','']可以看到每4个位置存放一个动画属性

 

 

接下来第二部配置动画步骤:

 

这里主要是计算动画的初始值和最终值,并且判断相对运动方向,如+=,-+,用到了两个辅助函数,如下

 

 

着这步之后step数组中存放了,需要动画的属性,开始值与最终值,例如{height:'300px',width:'+=300px',color:'#eee'}

 

step = [

            height的初始值,300,0(这个是动画开始时间,后面用到),'height','px',

            width的初始值,计算后的width的值,0,'width','px',

            十进制颜色数组,'#'(表示为颜色属性),0,'color',''

            ]

可以看到,每5个位置存放一个动画属性的相关信息,现在一切就绪了需要启动计时器开始动画了

 

 

下面是tween算法和辅助函数

 

 

 

最后可运行代码下载和示例见这里:

http://mojo-js.appspot.com/

原创粉丝点击