当前位置:网站首页>原生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)
边栏推荐
- Jpg to EPS
- Structure of [Halcon vision] operator
- Mlx90640 infrared thermal imager temperature sensor module development notes (6)
- Data communication foundation TCPIP reference model
- The reason why go language is particularly slow to develop run and build commands
- Use of pclint in vs2013
- Uniapp error 7 < Map >: marker ID should be a number
- Deduct daily question 838 of a certain day
- Wu Enda linear regression of machine learning
- Function templates and non template functions with the same name cannot be overloaded (definition of overloads)
猜你喜欢

Necessary for beginners: debug breakpoint debugging skills in idea and common breakpoint skills

点赞,《新程序员》电子书限时免费领啦!

Study on the basis of opencv

30分钟彻底弄懂 synchronized 锁升级过程

Vs Code configures go locale and successfully installs go related plug-ins in vscode problem: Tools failed to install

【Halcon视觉】图像滤波

Data communication foundation STP principle

数据库的复习--1.概述

抓包工具fiddler和wireshark对比

INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误解决方式
随机推荐
微信公众号发布提醒(微信公众号模板消息接口)
2022/07/25------字符串的排列
On the compilation of student management system of C language course (simple version)
Force deduction DFS
RecyclerView最后一条显示不全或显示部分的问题解决
In Net 6.0
Jpg to EPS
函数模板参数(函数参数在哪)
Learning about opencv (1)
畅听,网文流量竞争的下一站?
What is wrong about the description of function templates (how to solve link format errors)
Flask框架初学-04-flask蓝图及代码抽离
Learning about tensor (III)
【Halcon视觉】阈值分割
equals与==的区别
The problem of incomplete or partial display of the last recyclerview is solved
【Halcon视觉】形态学腐蚀
Opencv image processing
Uniapp common error [wxml file compilation error]./pages/home/home Wxml and using MySQL front provided by phpstudy to establish an independent MySQL database and a detailed tutorial for independent da
Using undertow, Nacos offline logout delay after service stop