我正在尝试将元素从其起始旋转点旋转360度,而不是从0deg
旋转。例如,如果起点为90deg
,则会从90deg
转为90deg
(整圆)。
我的目标是使用简单的@keyframes动画来旋转元素而不是使用JS进行动画制作。我目前正在通过JS设置元素的初始变换,如下所示:
this.$element.css({
transform: 'rotate' + startingDegreePosition + 'deg)'
});
问题在于,当动画开始时,它仅在其起始位置和关键帧的结束位置之间进行动画处理。我希望使用1turn
值可以容纳这个,但它似乎没有达到预期的效果。我希望它从起点开始是360度。我的感觉是,这是不可能的,但我想我还是会把它扔出去。
示例代码:
http://jsbin.com/jayedi/1/edit
您可以在示例中看到它将从其起点旋转到360deg
,然后再次跳过最后90度切回到起点。我正在寻找从起点开始的平滑360度旋转。
答案 0 :(得分:0)
对于90度,您需要从-90deg旋转到+ 90deg。我知道你想让90deg
动态而不是固定值。在这种情况下,您还必须更新@keyframes rotate
css。这是一点点工作;你可以在一个单独的css文件中定义关键帧css,并通过js读取css文件内容,并在运行时用js修改它的内容。这是一个如何从js动态改变@keyframe css的jsfiddle链接:http://jsfiddle.net/russelluresti/RHhBz/3/
div {
width: 10px;
height: 40px;
background-color: thistle;
animation: rotate 2s linear infinite;
}
@keyframes rotate {
/* to { transform: rotateZ(1turn); } */
from {
transform: rotateZ(-90deg);
}
to {
transform: rotateZ(90deg);
}
}
/*///*/
html,
body {
height: 100%;
}
body {
display: flex;
justify-content: center;
align-items: center;
}

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>JS Bin</title>
</head>
<body>
<div style="transform: rotateZ(90deg)"></div>
</body>
</html>
&#13;