获取元素css3的transform rotate旋转角度的方法

469 阅读1分钟

先获取transform属性,有两种方式,一种是直接使用jquery来获取

$('#xxx').css('transform'); // 'matrix(1, 0, 0, 1, 0, 0)' 浏览器console.log()出来的就是这个值

另外一种就是通过原生js来获取transform的属性

var el = document.getElementById('xxx'); 
var st = window.getComputedStyle(el, null); 
var tr = st.getPropertyValue('-webkit-transform') || 
        st.getPropertyValue('-moz-transform') || 
        st.getPropertyValue('-ms-transform') || 
        st.getPropertyValue('-o-transform') || 
        st.getPropertyValue('transform') || 
        'FALL'; 
        //兼容不同的内核的写法 //'matrix(1, 0, 0, 1, 0, 0)' 浏览器console.log()出来的就是这个值

网上看到有说这两种途径获取的打印结果不一致,但是在浏览器console中打印出来的结果是一致的,贴图为证,双击放大查看,

Image_20220928145741.jpg 下面分别计算图片的放大或者缩小倍数:

var values = tr.split('(')[1].split(')')[0].split(',');//获取矩阵值,转为数组 
var a = values[0]; 
var b = values[1]; 
var c = values[2]; 
var d = values[3]; 
var scale = Math.sqrt(a * a + b * b); 
console.log('Scale: ' + scale);//放大或者缩小值 
var angle = Math.round(Math.atan2(b, a) * (180 / Math.PI)); 
console.log('Rotate: ' + angle + 'deg');//旋转的角度