JS屬性動(dòng)畫框架

使用js實(shí)現(xiàn)的屬性動(dòng)畫框架:

  • obj // 動(dòng)畫對象
  • json //屬性表 {屬性名:動(dòng)畫結(jié)束值}
  • callback // 動(dòng)畫結(jié)束后的回掉函數(shù)
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];
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 在線閱讀 http://interview.poetries.top[http://interview.poetr...
    前端進(jìn)階之旅閱讀 114,841評(píng)論 24 450
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,257評(píng)論 4 61
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,558評(píng)論 25 708
  • 讀書是取人思想之精華以為己用之活動(dòng),所以讀書這個(gè)過程就堪比采金還有意義的活動(dòng)。采金之時(shí)篩得萬沙,方得一金,得之甚喜...
    crazy_wolf閱讀 234評(píng)論 1 2
  • 我的時(shí)間記錄 DAY1 5:50左右 醒來 去洗手間 重新回到床上閉眼睛 回味剛做過的夢,貌似很好玩 6:10起床...
    Min_Xu閱讀 218評(píng)論 0 0