- 想要动画流程,更新频率要60帧每秒,即16.67ms更新一次视图
- setTimeout要手动控制频率,而RAF浏览器会自动控制
- 后台标签或隐藏iframe中,RAF会暂停,而setTimeout依然执行
https://code.h5jun.com/caze/40/edit?html,js,console,output
let div1 = document.querySelector('.div1')
let div2 = document.querySelector('.div2')
// 180px 3m 180帧
function fun1(){
console.log(div1.style.width);
let width = div1.offsetWidth+1;
div1.style.width = width+'px';
if(width<230){
setTimeout(fun1,16.7) // 自己控制时间
}
}
fun1()
function fun2(){
console.log(div1.style.width);
let width = div2.offsetWidth + 1;
div2.style.width = width+'px';
if(width < 230){
window.requestAnimationFrame(fun2); //不用自己控制时间
}
}
fun2()