获取、设置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的版本,后续会进行优化。

目录
相关文章
|
11月前
|
JavaScript 前端开发 程序员
前端原生Js批量修改页面元素属性的2个方法
原生 Js 的 getElementsByClassName 和 querySelectorAll 都能获取批量的页面元素,但是它们之间有些细微的差别,稍不注意,就很容易弄错!
242 1
|
前端开发
用html+javascript打造公文一键排版系统3:获取参数设置、公文标题排版
用html+javascript打造公文一键排版系统3:获取参数设置、公文标题排版
|
9月前
|
JavaScript 算法 安全
深度剖析:共享文件怎么设置密码和权限的 Node.js 进阶算法
在数字化时代,共享文件的安全性至关重要。本文聚焦Node.js环境,介绍如何通过JavaScript对象字面量构建数据结构管理文件安全信息,包括使用`bcryptjs`库加密密码和权限校验算法,确保高效且安全的文件共享。通过实例代码展示加密与权限验证过程,帮助各行业实现严格的信息资产管理与协作。
|
11月前
|
监控 JavaScript 前端开发
确定使用 `defer` 属性还是 `async` 属性来异步加载 JavaScript
【10月更文挑战第24天】选择使用 `defer` 属性还是 `async` 属性来异步加载 JavaScript 是一个需要综合考虑多个因素的决策。需要根据脚本之间的依赖关系、页面加载性能要求、脚本的功能和重要性等因素来进行权衡。在实际应用中,需要通过测试和验证来确定最适合的加载方式,以提供更好的用户体验和页面性能。
196 56
|
11月前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤
随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤。通过这些工具,可以显著提升编码效率和代码质量。
2227 4
|
11月前
|
监控 JavaScript 前端开发
使用 `defer` 属性异步加载 JavaScript
【10月更文挑战第24天】使用 `defer` 属性异步加载 JavaScript 是一种有效的提高页面性能和用户体验的方法。通过合理设置 `defer` 属性,可以在不影响页面渲染的情况下异步加载脚本,并确保脚本的执行顺序。在实际应用中,需要根据具体情况选择合适的加载方式,并注意处理可能出现的问题,以确保页面能够正常加载和执行。
|
移动开发 JavaScript 前端开发
原生js如何获取dom元素的自定义属性
原生js如何获取dom元素的自定义属性
338 4
|
JavaScript 前端开发
JavaScript基础知识-枚举对象中的属性
关于JavaScript基础知识中如何枚举对象属性的介绍。
95 1
JavaScript基础知识-枚举对象中的属性
|
缓存 JavaScript 前端开发
探索Vue.js中的计算属性与侦听器
【10月更文挑战第5天】探索Vue.js中的计算属性与侦听器
191 1
|
JavaScript 前端开发
Javascript:获取、设置复选框的勾选状态
Javascript:获取、设置复选框的勾选状态
182 1