<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style> #block { position: absolute; width: 100px; height: 100px; background-color: red; top: 0; left: 0; } </style> </head> <body> <div id="block"></div> <script type="text/javascript"> window.onload = function () { // API实现 const requestAnimationFrameHandle = () => { const element = document.getElementById('block'); let start = null; let animate = null; const step = timestamp => { if (!start) start = timestamp; const progress = timestamp - start; element.style.left = Math.min(progress / 10, 500) + 'px'; if (progress < 5000) { animate = window.requestAnimationFrame(step); } else { window.cancelAnimationFrame(animate); } }; animate = window.requestAnimationFrame(step); }; requestAnimationFrameHandle(); // 定时器实现 const timeAnimation = () => { const element = document.getElementById('block'); let progress = 0; let timer = setInterval(() => { element.style.left = Math.min(progress / 10, 500) + 'px'; progress = progress + 10; if (progress > 5000) { clearInterval(timer); timer = null; } }, 10); }; timeAnimation(); }; </script> </body> </html>