mTween动画框架封装-3

21.transform

22.添加transform的处理

23.特殊样式获取、批量设置


21.transform


22.添加transform的处理

/*

    css 函数

*/  

var transformAttr = [

    "rotate",

    "rotateX",

    "rotateY",

    "rotateZ",

    "translateX",

    "translateY",

    "translateZ",

    "scale",

    "scaleX",

    "scaleY",

    "skewX",

    "skewY"

]; 

function css(el,attr,val){

    if(transformAttr.indexOf(attr) >= 0){

        return setTransform(el,attr,val);

    }

    if(val === undefined){

        return parseFloat(getComputedStyle(el)[attr]);

    } else {

        if(attr == "opacity"){

            el.style[attr] = val;

            el.style.filter = "alpha(opacity="+(val*100)+")";

        } else {

            el.style[attr] = val + "px";

        }

    }

}

function setTransform(el,attr,val){

    el.transform = el.transform||{};

    if(val === undefined){

        return  el.transform[attr];

    }

    el.transform[attr] = val;

    var transformVal = "";

    for(var s in  el.transform){

        switch(s){

            case "rotate":

            case "rotateX":

            case "rotateY":

            case "rotateZ":

            case "skewX":

            case "skewY":

                transformVal += s+'('+ el.transform[s]+'deg) ';

                break;

            case "translateX":

            case "translateY":

            case "translateZ":

                transformVal += s+'('+ el.transform[s]+'px) ';

                break;

            case "scale":

            case "scaleX":

            case "scaleY":

                transformVal += s+'('+ el.transform[s]+') ';

                break;       

        }

    }

    el.style.WebkitTransform = el.style.transform = transformVal.trim();

}

(function(){

    var box = document.querySelector("#box");

    css(box,"rotate",0)

    css(box,"translateX",0)

    // console.log(css(box,"rotate"));

    console.log(css(box,"background"));

    mTween({

        el: box,

        attr: {

            rotate: 360

        },

        duration: 800,

        cb: function(){

            mTween({

                el: box,

                attr: {

                    translateX: 100

                }

            });

        }

    });

})();


23.特殊样式获取、批量设置

<script>

/*

    css 函数

*/  

var transformAttr = [

    "rotate",

    "rotateX",

    "rotateY",

    "rotateZ",

    "translateX",

    "translateY",

    "translateZ",

    "scale",

    "scaleX",

    "scaleY",

    "skewX",

    "skewY"

]; 

var normalAttr = [

    "width",

    "height",

    "left",

    "top",

    "right",

    "bottom",

    "marginBottom",

    "marginleft",

    "marginRight",

    "marginTop",

    "paddingLeft",

    "paddingRight",

    "paddingTop",

    "paddingBottom"

];

/*

attr:{

    width: 100,

    height: 200,

    background:

}

*/

function css(el,attr,val){

    if(typeof attr == "object"){

        for(var s in attr){

            css(el,s,attr[s]);

        }

        return ;

    }

    if(transformAttr.indexOf(attr) >= 0){

        return setTransform(el,attr,val);

    }

    if(val === undefined){

        val = getComputedStyle(el)[attr]; 

        return normalAttr.indexOf(attr)>=0||!isNaN(val)?parseFloat(val):val;

    } else {

        if(attr == "opacity"){

            el.style[attr] = val;

            el.style.filter = "alpha(opacity="+(val*100)+")";

        } else if(normalAttr.indexOf(attr)>=0) {

            el.style[attr] = val + "px";

        } else if(attr == "zIndex") {

            el.style[attr] = Math.round(val);

        } else {

            el.style[attr] = val;

        }

    }

}

function setTransform(el,attr,val){

    el.transform = el.transform||{};

    if(val === undefined){

        return  el.transform[attr];

    }

    el.transform[attr] = val;

    var transformVal = "";

    for(var s in  el.transform){

        switch(s){

            case "rotate":

            case "rotateX":

            case "rotateY":

            case "rotateZ":

            case "skewX":

            case "skewY":

                transformVal += s+'('+ el.transform[s]+'deg) ';

                break;

            case "translateX":

            case "translateY":

            case "translateZ":

                transformVal += s+'('+ el.transform[s]+'px) ';

                break;

            case "scale":

            case "scaleX":

            case "scaleY":

                transformVal += s+'('+ el.transform[s]+') ';

                break;       

        }

    }

    el.style.WebkitTransform = el.style.transform = transformVal.trim();

}

(function(){

    var box = document.querySelector("#box");

    css(box,{

        width: 200,

        height: 200,

        background: "yellow"

    });

})();

</script>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值