• 想要动画流程,更新频率要60帧每秒,即16.67ms更新一次视图
    • setTimeout要手动控制频率,而RAF浏览器会自动控制
    • 后台标签或隐藏iframe中,RAF会暂停,而setTimeout依然执行

    https://code.h5jun.com/caze/40/edit?html,js,console,output

    1. let div1 = document.querySelector('.div1')
    2. let div2 = document.querySelector('.div2')
    3. // 180px 3m 180帧
    4. function fun1(){
    5. console.log(div1.style.width);
    6. let width = div1.offsetWidth+1;
    7. div1.style.width = width+'px';
    8. if(width<230){
    9. setTimeout(fun1,16.7) // 自己控制时间
    10. }
    11. }
    12. fun1()
    13. function fun2(){
    14. console.log(div1.style.width);
    15. let width = div2.offsetWidth + 1;
    16. div2.style.width = width+'px';
    17. if(width < 230){
    18. window.requestAnimationFrame(fun2); //不用自己控制时间
    19. }
    20. }
    21. fun2()