gpt4 book ai didi

animation - 变换 : rotate. 上的 CSS3 动画获取旋转元素当前度数的方法?

转载 作者:行者123 更新时间:2023-11-27 23:53:45 24 4
gpt4 key购买 nike

我正在开发一个使用拖放的 html5 界面。当我拖动一个元素时,目标获得一个 css 类,由于 -webkit-animation,它会双向旋转。

@-webkit-keyframes pulse {
0% { -webkit-transform: rotate(0deg); }
25% { -webkit-transform:rotate(-10deg); }
75% { -webkit-transform: rotate(10deg); }
100% { -webkit-transform: rotate(0deg); }
}

.drag
{
-webkit-animation-name: pulse;
-webkit-animation-duration: 1s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-timing-function: ease-in-out;
}

当我放下目标时,我希望它采用当前的旋转状态。

我的第一个想法是使用 jquery 和 .css('-webkit-transform') 方法检查 css 属性。但此方法仅返回“无”。

所以我的问题是:有没有办法获取通过动画旋转的元素的当前度数值?

到目前为止谢谢亨德里克

最佳答案

我最近不得不编写一个函数来完全满足您的需求!随意使用它:

// Parameter element should be a DOM Element object.
// Returns the rotation of the element in degrees.
function getRotationDegrees(element) {
// get the computed style object for the element
var style = window.getComputedStyle(element);
// this string will be in the form 'matrix(a, b, c, d, tx, ty)'
var transformString = style['-webkit-transform']
|| style['-moz-transform']
|| style['transform'] ;
if (!transformString || transformString == 'none')
return 0;
var splits = transformString.split(',');
// parse the string to get a and b
var parenLoc = splits[0].indexOf('(');
var a = parseFloat(splits[0].substr(parenLoc+1));
var b = parseFloat(splits[1]);
// doing atan2 on b, a will give you the angle in radians
var rad = Math.atan2(b, a);
var deg = 180 * rad / Math.PI;
// instead of having values from -180 to 180, get 0 to 360
if (deg < 0) deg += 360;
return deg;
}

希望这对您有所帮助!

编辑 我更新了代码以使用 matrix3d 字符串,但它仍然只提供 2d 旋转度数(即绕 Z 轴旋转)。

关于animation - 变换 : rotate. 上的 CSS3 动画获取旋转元素当前度数的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56382870/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com