我有以下代码段:
function animate()
{
testdiv.style.transitionDuration="2500ms"
testdiv.style.transitionTimingFunction="linear"
testdiv.style.transform="rotate(45deg)"
window.requestAnimationFrame(animate)
}
window.requestAnimationFrame(animate)
这将div旋转45度并正在工作 如何将其转换为无限动画循环以便动画 自动重启(从0度开始)?
答案 0 :(得分:0)
您可以尝试使用以下代码。
var FPS = 24; //Frame per second.
var prevTime,curTime;
function animate()
{
curTime = new Date();
if(prevTime === undefined || (curTime - prevTime) >= 1000/FPS)
{
testdiv.style.transitionDuration="2500ms"
testdiv.style.transitionTimingFunction="linear"
testdiv.style.transform="rotate(45deg)"
prevTime = curTime;
}
window.requestAnimationFrame(animate);
}
window.requestAnimationFrame(animate)
答案 1 :(得分:0)
对您当前的代码或要更改的代码使用requestAnimationFrame
没有意义。
对于当前代码,您需要设置样式然后让CSS接管。经过一段时间后,没有必要做任何事情。
要将其更改为重置并重复循环,您希望在动画结束时触发新代码,而不是在浏览器准备好渲染新帧时触发。为此,请侦听transitionend
事件,然后删除转换值以将其设置为默认值。
var testdiv = document.querySelector("div");
testdiv.addEventListener("transitionend", animate);
setTimeout(animate, 100);
function animate() {
if (testdiv.style.transform) {
testdiv.style.transform = "";
} else {
testdiv.style.transform = "rotate(45deg)";
}
}

body {
padding: 100px;
}
div {
transition-Duration: 2500ms;
transition-Timing-Function: linear;
}

<div>....</div>
&#13;