核心思想
JS动画本质是利用setinterval模拟打关键帧,每一次调用修改speed控制缓冲运动的速度
注意点
获取style
通常的直接style.attr 只能获取到内部样式,内嵌和外部样式无法获取,所以需要用getComputedStyle(obj, false)[attr] (火狐,谷歌)或者 currentstyle(IE)
封装后如下所示:
12345function getStyle(obj, attr) {if (obj.currentStyle) {return obj.currentStyle[attr]; }else {return getComputedStyle(obj, false)[attr]; }}设置透明度
IE和谷歌也有区别
12filter:alpha(opacity:30);opacity: 0.3;
动画框架实现
接收三个参数 obj,json,fn。 分别指向动画作用对象,属性最终结果,回掉。
每一个对象对应一个timer
每一个timer的操作中,需要对传入的所有属性进行遍历,只要有一个属性没有到预定的值,便把flag置为false
由于属性只能为整数,所以speed需要进行四舍五入
由于opacity的特殊性,需要单独判断
完整代码如下:
|
|