JS属性动画框架

使用js实现的属性动画框架:

  • obj // 动画对象
  • json //属性表 {属性名:动画结束值}
  • callback // 动画结束后的回掉函数
function animation(obj,json,callback) {
    clearInterval(obj.timer);
    obj.timer = setInterval(function() {
        var flag = true;
        for (var style in json)  {
            var target = json[style];
            var objStyle;
            if (style === 'opacity') {
                objStyle = Math.round(getStyle(obj,style) * 100);
            }
            else {
                objStyle = parseInt(getStyle(obj,style));
            }
            if (objStyle != target) {
                flag = false;
            }
            var speed = (target - objStyle)/10;
            speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
            if (style === 'opacity') {
                obj.style[style] = objStyle + speed;
            }
            else {
                obj.style[style] = objStyle + speed + 'px';
            }
            if (flag) {
                if (callback) {
                    callback();
                }
            }
        }
    },30)
}

function getStyle(obj,style) {
    if (obj.currentStyle) {
        return obj.currentStyle(style);
    }
    else {
        return getComputedStyle(obj,false)[style];
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在线阅读 http://interview.poetries.top[http://interview.poetr...
    前端进阶之旅阅读 114,621评论 24 450
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,198评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,989评论 25 708
  • 读书是取人思想之精华以为己用之活动,所以读书这个过程就堪比采金还有意义的活动。采金之时筛得万沙,方得一金,得之甚喜...
    crazy_wolf阅读 233评论 1 2
  • 我的时间记录 DAY1 5:50左右 醒来 去洗手间 重新回到床上闭眼睛 回味刚做过的梦,貌似很好玩 6:10起床...
    Min_Xu阅读 215评论 0 0