获取、设置transfrom相关属性: 封装函数 cssTransform.js 系列篇一

简介: 笔记

概述


传统的使用transfrom,直接设置值,未免太过粗暴,且代码冗长复杂,例 :

var rotate = document.querySelector(".rotate");
rotate.addEventListener("touchstart",()=>{
    rotate.style.transform = rotate.style.transform = "rotate(90deg)";
})

因为存在这种情况,所以想办法把它简化,方便维护,可读性强。


开始封装



调用此方法可以是获取元素或是设置元素的值,以value判断,有则是设置值,无value则是取值

function cssTransform(element, prop, value) {
  // element  将要操作的元素
    // prop 将要进行的运动属性,缩放,旋转等等
    // value  具体值
    // 为了方便操作, 给该调用的元素定义一个属性
    var transform, 
        transformValue = "";
    if (element.transform === undefined) {
        element.transform = transform = Object.create(null);
        // 这里创建了一个纯净的对象 没有原型链 提高循环效率
    }
    // 设置元素
    if (value !== undefined) {
        element.transform[prop] = value;
        transform = element.transform;
        // 因为transform对象中可能不止一个属性,所以要对其进行遍历
        for (var name in transform) {
            switch (name) {
                case "scale":
                case "scaleX":
                case "scaleY":
                    transformValue += " " + name + "(" + transform[name] + ")";
                    break;
                case "rotate":
                case "rotateX":
                case "rotateY":
                case "rotateZ":
                case "skewX":
                case "skewY":
                    transformValue += " " + name + "(" + transform[name] + "deg)";
                    break;
                default:
                    transformValue += " " + name + "(" + transform[name] + "px)";
            }
        }
        element.style.WebkitTransform = element.style.transform = transformValue;
    } else {
        // 读取元素
        return element.transform[prop];
    }
}


使用说明



 var rotate = document.querySelector(".rotate");
     rotate.addEventListener("touchstart",()=>{
         // 设置属性 传三个值
          cssTransform(rotate,"rotate",90);
          // 读取属性 传两个值便可
          console.log(cssTransform(rotate,"rotate");
  })

FAQ:

一个简单的版本就完成了,不难,当然还是很low的版本,后续会进行优化。

目录
相关文章
|
2月前
|
JavaScript
JS设置日期为0时0分0秒
项目中经常要给设置默认值,搜索从哪天开始,这时候,如果直接通过new Date()来获取时间,会有时分秒,如果快速设置为0时0分0秒?
36 0
|
1月前
|
JSON JavaScript 前端开发
设置WebStorm像VSCode一样每行代码结尾自动格式化加入“;”分号(JavaScript、TypeScript格式化)
设置WebStorm像VSCode一样每行代码结尾自动格式化加入“;”分号(JavaScript、TypeScript格式化)
|
4月前
|
JavaScript 数据安全/隐私保护
|
8月前
|
JavaScript
Node.js npm设置淘宝npm镜像
Node.js npm设置淘宝npm镜像
1222 0
|
3天前
|
JavaScript 定位技术 API
[JS]百度地图设置城市
[JS]百度地图设置城市
11 1
|
13天前
|
JavaScript 前端开发 网络协议
利用Node.js和cpolar实现远程访问,无需公网IP和路由器设置的完美解决方案
利用Node.js和cpolar实现远程访问,无需公网IP和路由器设置的完美解决方案
21 0
|
16天前
|
JavaScript 前端开发
JavaScript如何设置定时器,怎么清除定时器
JavaScript如何设置定时器,怎么清除定时器
20 3
|
2月前
|
JavaScript
JS动态转盘可自由设置个数与概率
JS动态转盘可自由设置个数与概率
|
5月前
|
JavaScript
JS设置键盘快捷键、组合键
JS设置键盘快捷键、组合键
|
5月前
|
JavaScript 前端开发
设置Angular路径别名用于ts、js、scss、less
设置Angular路径别名用于ts、js、scss、less