問題描述
我正在開發(fā)一個使用拖放的 html5 界面.當我拖動一個元素時,目標獲得了一個 css 類,這使得它由于 -webkit-animation 而雙向旋轉.
i am working on a html5 interface wich uses drag and drop. While i am dragging an element, the target gets a css-class, which makes it bidirectionally rotate due to a -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;
}
當我放下目標時,我希望它采用當前的旋轉狀態(tài).
When I drop the target, I want it to adopt the current state of rotation.
我的第一個想法是使用 jquery 和 .css('-webkit-transform') 方法檢查 css 屬性.但是這個方法只返回'none'.
My first thought was to check the css property with jquery and the .css('-webkit-transform') method. But this method just returns 'none'.
所以我的問題是:有沒有辦法獲取通過動畫旋轉的元素的當前度值?
So my question: Is there a way to get the current degree value of an element which is rotated via animation?
到目前為止謝謝亨德里克
Thanks so far Hendrik
推薦答案
我最近不得不寫一個函數(shù)來做你想要的!隨意使用它:
I recently had to write a function that does exactly what you want! Feel free to use it:
// 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 旋轉度數(shù)(即圍繞 Z 軸旋轉).
EDIT I updated the code to work with matrix3d strings, but it still only gives the 2d rotation degrees (ie. rotation around the Z axis).
這篇關于變換上的 CSS3 動畫:旋轉.獲取旋轉元素當前度數(shù)的方法?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,也希望大家多多支持html5模板網(wǎng)!