Ich sah eine video beschreiben, wie Sie requestAnimationFrame verwenden, um eine Animation zu loopen. Ich habe versucht, es zu replizieren und glaube, dass ich sehr nahe bin, aber einen Schlüsselpunkt vermisse. Wenn ich auf die "Box" klicke, wird onclick = "loopKeyFrame()" aktiviert und ruft runKeyFrame() nur einmal auf?So rufen Sie in Javascript eine AnfrageAnimationFrame-Schleife?
Meine Absicht war es, runKeyframe() unendlich mit diesem Code zu loopen. Ich weiß, dass ich "unendlich" in die CSS setzen kann, um es für immer laufen zu lassen, aber das ist nicht der Punkt. Ich versuche, requestAnimationFrame wie im Video verwendet zu verwenden.
Mein Code in CodePen
<html>
<head>
<title>RequestAnimation Lesson</title>
<style>
body {
background-color: grey;
}
#box {
position:relative;
width:30px;
border:1px solid blue;
background-color:blue;
height:10px;
top:0px;
left:0px;
}
@keyframes myMove {
0%{left:0%;}
50%{left:95%;}
100%{left:0%;}
}
</style>
<script>
function runKeyFrame() {
document.getElementById("box").style.animation = "myMove 4s";
}
function loopKeyFrame() {
runKeyFrame();
requestAnimationFrame(loopKeyFrame);
}
</script>
</head>
<body>
<div id="box" onclick="loopKeyFrame()"></div>
</body>
</html>
Vielen Dank für die gründliche Korrektur. aber ich habe eine wertvolle Lektion gelernt. Sie können nicht requestAnimationFrame auf einem @keyframe verwenden ... es wäre super praktisch gedacht, wenn das behoben wäre, so könnten Sie aber – Ghoyos
warum die Verwendung von rAF, wenn Sie es in SetTimeout umwickeln? – Kaiido
@Kaiido Um diesen Browser anzufordern, führen Sie die Animation vor dem nächsten Repaint durch. – guest271314