requestAnimationFrame 与setTimeout 大概一致,
requestAnimationFrame 每秒60帧 ,setTimeout与setInterval根据你自己的定义
requestAnimationFrame 可以准时执行每一帧。setTimeout与setInterval会在上一帧动画执行完才会执行下一帧
requestAnimationFrame 兼容性不是很好
cancelAnimationFrame 基本相当于clearTimeout(),清除上是一样的,其机制不一样
const box = document.getElementsByClassName('box')[0];
let timer = null;
function move() {
if (box.offsetLeft > 700) {
cancelAnimationFrame(timer);
return;
}
box.style.left = box.offsetLeft + 20 + 'px';
timer = requestAnimationFrame(move)
}
move()