该方法主用是解决JS动画卡顿,所以上面的长任务导致浏览器css动画阻塞的问题就不适用了。
requestAnimationFrame 是HTML5中提供的动画API,简称 rAF, 在Web应用中,实现动画效果的方法比较多,Javascript 中可以通过定时器 setTimeout 或 setInterval 来实现,css3 可以使用 transition 和 animation 来实现,html5 中的 canvas 也可以实现。除此之外,html5 还提供一个专门用于请求动画的API,那就是 requestAnimationFrame,顾名思义就是请求动画帧。
屏幕刷新频率
屏幕的刷新频率可在电脑中“高级显示设置”中查看,一般为60Hz,就是说,屏幕静置情况下,显示器会以每秒60次的频率不断更新屏幕上的图像,因为人的“视觉停留效应”,并感觉不到变化或者抖动,看到的仍是一幅幅连续的画面,其实这中间间隔时间是16.7ms(即1000/60)。
页面可见
当页面被最小化或者被切换成后台标签页时,页面为不可见,浏览器会触发一个 visibilitychange 事件,并设置 document.hidden 属性为true;切换到显示状态时,页面为可见,也同样触发一个 visibilitychange 事件,设置 document.hidden 属性为false。
动画帧请求回调函数列表
每个 Document 都有一个动画帧请求回调函数列表,该列表可以看成是由 <handlerId, callback> 元组组成的集合。其中 handlerId 是一个整数,唯一地标识了元组在列表中的位置;callback是回调函数。