当前位置:网站首页>原生JS-获取transform值 x y z及rotate旋转角度
原生JS-获取transform值 x y z及rotate旋转角度
2022-07-26 10:24:00 【唐策】
CSS3的时代经常会操作transform动画属性,所以也会有想获取transform属性的时候,不过当你去取值时就懵逼了,得出来的是matrix矩阵数值,而且有一点让你恼火,当你操作过z,矩阵的长度与排序就不一样了,你无法固定的取值,(貌似用jQ的一个方法是能固定取到),为了能正常取到这些值,从网上找了一些纯js版的修修改改总算搞定了。
function getTranslate(node,sty){//获取transform值
var translates=document.defaultView.getComputedStyle(node,null).transform.substring(7);
var result = translates.match(/\(([^)]*)\)/);// 正则()内容
var matrix=result?result[1].split(','):translates.split(',');
if(sty=="x" || sty==undefined){
return matrix.length>6?parseFloat(matrix[12]):parseFloat(matrix[4]);
}else if(sty=="y"){
return matrix.length>6?parseFloat(matrix[13]):parseFloat(matrix[5]);
}else if(sty=="z"){
return matrix.length>6?parseFloat(matrix[14]):0;
}else if(sty=="rotate"){
return matrix.length>6?getRotate([parseFloat(matrix[0]),parseFloat(matrix[1]),parseFloat(matrix[4]),parseFloat(matrix[5])]):getRotate(matrix);
}
}
function getRotate(matrix){
var aa=Math.round(180*Math.asin(matrix[0])/ Math.PI);
var bb=Math.round(180*Math.acos(matrix[1])/ Math.PI);
var cc=Math.round(180*Math.asin(matrix[2])/ Math.PI);
var dd=Math.round(180*Math.acos(matrix[3])/ Math.PI);
var deg=0;
if(aa==bb||-aa==bb){
deg=dd;
}else if(-aa+bb==180){
deg=180+cc;
}else if(aa+bb==180){
deg=360-cc||360-dd;
}
return deg>=360?0:deg;
}
/* 第一个参数是元素,第二个是要获取x y z rotate这4个其一
好了,不管你是用translate3d还是translateX、translateY,都能获取到x y z*/
var nowRotate=getTranslate(document.getElementById(“id”),“x”);
console.log(nowRotate)
边栏推荐
- IEEE conference upload font problem
- 微信公众号发布提醒(微信公众号模板消息接口)
- [C language] named type and anonymous type
- Wechat official account release reminder (wechat official account template message interface)
- Mlx90640 infrared thermal imager temperature sensor module development notes (6)
- 数通基础-Telnet远程管理设备
- The problem of four columns of Hanoi Tower
- Use spiel expressions in custom annotations to dynamically obtain method parameters or execute methods
- Using undertow, Nacos offline logout delay after service stop
- C language course design Tetris (Part 1)
猜你喜欢

Uniapp error 7 < Map >: marker ID should be a number

PLC overview

AirTest

Uniapp "no mobile phone or simulator detected, please try again later" and uniapp custom components and communication

【Halcon视觉】数组

Learning about opencv (4)

Learning about opencv (2)

新建福厦铁路全线贯通 这将给福建沿海带来什么?

Common errors when starting projects in uniapp ---appid

Basic usage of protobuf
随机推荐
Flask框架初学-03-模板
SQL Server 2008 R2 installation problems
The practice of OpenCV -- bank card number recognition
Network related journals and conferences in CS
函数模板与同名的非模板函数不可以重载(重载的定义)
如何写一篇百万阅读量的文章
新建福厦铁路全线贯通 这将给福建沿海带来什么?
Review of database -- 1. Overview
句句解析js中的完美 / 缓冲运动框架(新手专用)
The CLOB field cannot be converted when querying Damon database
数通基础-网络基础知识
How to use Gmail to pick up / send mail on Foxmail
Basics of data communication - basic knowledge of network
[gossip] error loading psychopg2 module: no module named psychopg2
SQL Server 2008 server engine failed to start?
IEEE conference upload font problem
关于函数模板描述错误的是(链接格式错误怎么解决)
【有奖提问】向图灵奖得主、贝叶斯网络之父 Judea Pearl 提问啦
Learning about opencv (1)
Use of Android grendao database