我正在使用代码
found at CSS-Tricks来获取JavaScript的当前旋转变换(在CSS中).
JavaScript函数:
function getCurrentRotation( elid ) { var el = document.getElementById(elid); 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") || "fail..."; if( tr !== "none") { console.log('Matrix: ' + tr); var values = tr.split('(')[1]; values = values.split(')')[0]; values = values.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); // arc sin,convert from radians to degrees,round /** / var sin = b/scale; var angle = Math.round(Math.asin(sin) * (180/Math.PI)); /*/ var angle = Math.round(Math.atan2(b,a) * (180/Math.PI)); /**/ } else { var angle = 0; } // works! console.log('Rotate: ' + angle + 'deg'); $('#results').append('<p>Rotate: ' + angle + 'deg</p>'); }
根据帖子,这适用于超过180度的值,我得到负数,360deg返回零.我需要能够正确地返回180-360度的度数值.
这个代码不能让它返回180度的正确度数,我做错了什么?
如果你观看演示会更有意义:See the pen for a demo of this in action.