获取和设置transform值

一个前辈写的设置css样式的方法,可以获取和设置transform的值,我稍微修改了一下
获取的时候只要传两个参数,像是下面这样

icss($("div"),"translateY");

设置的时候传三个参数

icss($("div"),"translateY","100px");
function icss(obj, attr, value){
    if(obj[0]){
        obj=obj[0];
    };
    if(arguments.length==2){
        if(attr=='scale'|| attr=='rotate'|| attr=='rotateX'||attr=='rotateY'||attr=='scaleX'||attr=='scaleY'||attr=='translateY'||attr=='translateX'||attr=='translateZ')
        {
            if(! obj.$Transform)
            {
                obj.$Transform={};
            }
            switch(attr)
            {
                case 'scale':
                case 'scaleX':
                case 'scaleY':
                return typeof(obj.$Transform[attr])=='number'?obj.$Transform[attr]:100;
                break;
                case 'translateY':
                case 'translateX':
                case 'translateZ':
                return obj.$Transform[attr]?obj.$Transform[attr]:0;
                break;
                default:
                    return obj.$Transform[attr]?obj.$Transform[attr]:0;
            }
        }
        var sCur=obj.currentStyle?obj.currentStyle[attr]:document.defaultView.getComputedStyle(obj, false)[attr];
        if(attr=='opacity'){
            return Math.round((parseFloat(sCur)*100));
        }
        else{
            return parseInt(sCur);
        }
    }
    else if(arguments.length==3)
    {
        switch(attr){
            case 'scale':
            case 'scaleX':
            case 'scaleY':
            case 'rotate':
            case 'rotateX':
            case 'rotateY':
            case 'translateY':
            case 'translateX':
            case 'translateZ':
            setCss3(obj, attr, value);
            break;
            case 'width':
            case 'height':
            case 'paddingLeft':
            case 'paddingTop':
            case 'paddingRight':
            case 'paddingBottom':
            value=Math.max(value,0);
            case 'left':
            case 'top':
            case 'marginLeft':
            case 'marginTop':
            case 'marginRight':
            case 'marginBottom':
                if(typeof value=="string")
                {
                    obj.style[attr]=value;
                }
                else
                {
                    obj.style[attr]=value+'px';
                }
                break;
            case 'opacity':
                obj.style.filter="alpha(opacity:"+value+")";
                obj.style.opacity=value/100;
                break;
            default:
                obj.style[attr]=value;
        }
    }
}
function setCss3(obj, attr, value)
{
    var sTr="";
    var sVal="";
    var arr=["Webkit","Moz","O","ms",""];
    if(! obj["$Transform"])
    {
        obj["$Transform"]={};
    }
    obj["$Transform"][attr]=parseInt(value);
    for( sTr in obj["$Transform"])
    {
        switch(sTr)
        {
            case 'scale':
            case 'scaleX':
            case 'scaleY':
            sVal+=sTr+"("+(obj["$Transform"][sTr]/100)+") ";   
            break;
            case 'rotate':
            case 'rotateX':
            case 'rotateY':
            sVal+=sTr+"("+(obj["$Transform"][sTr])+"deg) ";    
            break;
            case 'translateY':
            case 'translateX':
            case 'translateZ':
            sVal+=sTr+"("+(obj["$Transform"][sTr])+"px) ";
            break;
        }
    }
    for(var i=0;i<arr.length;i++)
    {
        obj.style[arr[i]+"Transform"]=sVal;
    }   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值