欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

原生JS封装transform函数

程序员文章站 2024-03-17 11:51:34
...

分享一个原生JS封装的函数,设置和获取transform属性
node为元素 prop为tranform属性 value为值

function transform(node,prop,value) {
//如果当前元素是对象,并且该元素没有transform属性,那就给该元素扩展一个transform属性
if(typeof node ==="object" && typeof node["transform"] === "undefined"){
	node["transform"] = {};(此写法等同于node.transform)
}
// 如果传递的参数是3个,那么就是设置属性
if (arguments.length >= 3) {
//把值设置给transform属性
node["transform"][type] = value;

//定义一个变量(空字符串),用来保存遍历完node对象得到的结果,得到的结果是字符串
var text = "";

//用for...in来遍历对象
for(var item in node["transform"]){
switch (item) {
//transformY和transformX设置的方式是一样的,所以可以省略
case "translateY":
case "translateX": text += item+"("+ node["transform"][item] +"px) ";//item是遍历node对象得到的值
break;
case "rotate":
case "rotateX":
case "rotateY":
case "skewX":
case "skewY": text += item+"("+ node["transform"][item] +"deg) ";
break;
case "scaleX":
case "scaleY": text += item+"("+ node["transform"][item] +") ";
break;
}
}

node.style.transform = text;//把得到的结果赋值给transform属性

}else if(arguments.length == 2){
//读取node对象的属性
value = node["transform"][type];
if(typeof value=== "undefined"){//如果node对象的transform属性不存在,给它设置个默认值
switch (type) {
case "translateX":
case "translateY":
case "skewX":
case "skewY":
case "roateX":
case "roateY":
case "roate":
value = 0;//设置默认值
break;
case "scaleX":
case "scaleY":
value = 1;//设置默认值
break;
}
}
return value;
}
}