zoukankan      html  css  js  c++  java
  • 获取tranform参数函数的封装

    平时我们都会去获取元素的各种属性值,例如宽高等等的值!但是tranform是个让人很头疼的点,获取出来的是矩阵,耐何线性代数学的并不是那么6啊。

    解决方法的思路:只能采取有点取巧的方法,在我们设置的时候把它记录一下,然后在通过这个函数去获取出之前设置的transform相关的值,再也不用去依靠浏览器来知晓。

    不多说,上菜。

    <style type="text/css">
    #box {
        width: 100px;
        height: 100px;
        background: red;
    }
    </style>
    <script type="text/javascript">
    /* 设置和获取transform相关的值 */
    /*
        attr:
            rotate
            rotateX
            rotateY
            rotateZ
            scale
            scaleX
            scaleY
            skewX
            skewY
            translateX
            translateY
            translateZ    
    
        必须通过它设置,才可以通过它获取    
    */
    function setTransform(el,attr,val){
        if(!el.transform){
            el.transform = {};
            //如果元素没有这个自定义属性我们就创建一下,格式是个对象
        }
        if(typeof val == "undefined"){//如果没传val参数,说明是取值操作,则返回之前设置的对应的attr的值
            return el.transform[attr];
        } else {
            el.transform[attr] = val;//记录的值先记住或者改正
            var value = "";
            for(var s in el.transform){
                //console.log(s,el.transform[s]);
                switch(s){
                    case "rotate":
                    case "rotateX":
                    case "rotateY":
                    case "rotateZ":
                    case "skewX":
                    case "skewY":
                        value += (s+"("+el.transform[s]+"deg) ");    
                        break;
                    case "translateX":
                    case "translateY":
                    case "translateZ":    
                        value += (s+"("+el.transform[s]+"px) ");    
                        break;
                    case "scale":
                    case "scaleX":
                    case "scaleY":    
                        value += (s+"("+el.transform[s]+") ");    
                        break;        
                }
            }
            el.style.WebkitTransform = value;
            el.style.MozTransform = value;
            el.style.msTransform = value;
            el.style.transform = value;
        }
    }
    window.onload = function(){
        var box = document.querySelector('#box');
        /*
            在设置的时候去记录transform相应的值
        */
        setTransform(box,"rotate",30);
        setTransform(box,"scale",.2);
        console.log(setTransform(box,"scale"));
        
    };    
    </script>
    </head>
    <body>
    <div id="box"></div>
    </body>

    有个这样的函数,操作起来简直是方便多啦!

  • 相关阅读:
    vim 源码分析
    Crontab无法自动执行,直接运行脚本却能执行
    chromium源代码下载(Win7x64+VS2013sp2, 39.0.2132.2)
    linux 环境变量设置方法总结(PATH/LD_LIBRARY_PATH)
    Linux 的源码安装工具 CheckInstall
    两个开源项目要搞定
    FreeRADIUS + MySQL 安装配置笔记
    Linux指令详解useradd groupadd passwd chpasswd chage 密码修改
    Github上的几个C++开源项目
    linux 中解析命令行参数(getopt_long用法)
  • 原文地址:https://www.cnblogs.com/hjj2ldq/p/7623056.html
Copyright © 2011-2022 走看看