javascript - 使用 Javascript/jQuery 获取 rotate3d 值

标签 javascript jquery css css-transforms rotatetransform

具有具有以下转换的元素:

style="transform: rotate3d(1, 0, 0, -50deg);"

我希望能够使用 Javascript/jQuery 获取值 -50我想得到绝对值,所以如果是370deg,我不想得到10,而是370。

使用 $('#element').css('transform') 返回如下矩阵:

matrix3d(1, 0, 0, 0, 0, 0.642788, -0.766044, 0, 0, 0.766044, 0.642788, 0, 0, 0, 0, 1)

可以更好地表示为:

matrix3d(
    1, 0, 0, 0, 
    0, 0.642788, -0.766044, 0, 
    0, 0.766044, 0.642788, 0,
    0, 0, 0, 1
)

正在解决the equations获取此值的唯一方法?

enter image description here

知道 Z =0 和 X =1 为 rotate3d(1, 0, 0, -50deg);

enter image description here

有没有更快的替代方法?

最佳答案

虽然它仍然需要对矩阵值进行计算,但我能找到的最简单的示例如下:

var el = document.getElementById('test');
var st = window.getComputedStyle(el, null);
var m = st.getPropertyValue('transform');

var values = m.slice(7,-1).split(',');
// angle is in range -180 > 180
var angle = Math.round(Math.atan2(values[1], values[0]) * (180/Math.PI));

fiddle here .更多信息 here .


注意:给出的示例是在 matrix 而不是 matrix3d 上测试的。然而来自 MDN:

matrix(a, b, c, d, tx, ty) is a shorthand for matrix3d(a, b, 0, 0, c, d, 0, 0, 0, 0, 1, 0, tx, ty, 0, 1)

因此您可以应用完全相同的方法来解决这两种情况,您只需要更新提取值的方法。

关于javascript - 使用 Javascript/jQuery 获取 rotate3d 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39852138/

相关文章:

javascript - 使用angularjs获取div的文本

javascript - 使用 jQuery AJAX GET 和 AngularJS 不更新 View

javascript - 如何访问谷歌地图事件处理程序中的标记?

jquery - 如何仅运行一次点击功能的一部分

html - 居中 DIV inside DIV with image

html - 如何使浏览器的黑色跨度宽度?

javascript - 隐藏 Vimeo 控件并替换为播放/暂停切换按钮

jquery - 在 select2 中使用 $(this)

javascript - jquery提交表单错误

html - 使用 CSS 在 <span> 元素为空时隐藏它们