多用途運動框架

該運動框架能夠用於改變寬度、高度、字體大小、透明度、Left、top等值json

 

先上一個獲取真正樣式的函數框架

//定義getStyle函數,獲取真正樣式
function getStyle(obj,attr){
    if(obj.currentStyle){//兼容IE
        return obj.currentStyle[attr];
    }else if(window.getComputedStyle(obj,false)){//兼容FF
        return getComputedStyle(obj,false)[attr]; 
    };
};

 

而後上都是主體部分:函數

//參數爲對象,屬性,目標值
function move(obj,json,fnEnd){
    clearInterval(obj.timer);
    
    obj.timer = setInterval(startmove,30);
    
    function startmove(){
        var bBtn = true;  //定義開關,初始值爲真,若是所有屬性達到目標值,則清除定時器
        
        for(var attr in json){  //循環json,處理沒一個JSON屬性值
            var iSpeed,iCur=0;
        
            if(attr == "opacity"){
                iCur = Math.round(parseFloat(getStyle(obj,attr)) * 100); // 若是傳入的屬性是透明度,則轉換爲百分制
            }else{
                iCur = Math.round(parseFloat(getStyle(obj,attr)));//獲取當前屬性的真正值
            };
            iSpeed = (json[attr]  - iCur) / 8;
            iSpeed = (iSpeed > 0 ? Math.ceil(iSpeed) : Math.floor(iSpeed)); // 當速度大於0是向上取整,小於0向下取整

            if(iCur != json[attr]){
                bBtn = false;
            }
            if(attr == "opacity"){
                obj.style.opacity =  (iCur + iSpeed)/100; 
                obj.style.filter = "alpha(opacity:" + iCur + iSpeed + ")";            
            }else{
                obj.style[attr] = iCur + iSpeed + "px";
            };
        };
        if(bBtn){
            clearInterval(obj.timer);
            if(fnEnd){
                fnEnd.call(obj);
            };                
        };
    };
    
};
相關文章
相關標籤/搜索