requestAnimationFrame

requestAnimationFrame是浏览器用于定时循环操作的一个接口,类似于setTimeout,主要用途是让浏览器在下一个动画帧安排一次网页重绘

requestAnimationFrame的优势,在于充分利用显示器的刷新机制,比较节省系统资源。
显示器有固定的刷新频率(60Hz或75Hz),也就是说,每秒最多只能重绘60次或75次。

若我们利用setTimeout和setInterval来完成,如果设置的时间间隔小于16.7ms(每秒60次),那么中间有些帧的绘制是不会被展现在屏幕上的,会存在一个过度绘制的问题。

requestAnimationFrame的基本思想就是与浏览器的这个刷新频率保持同步,利用这个刷新频率进行页面重绘。

注意:requestAnimationFrame是在主线程上完成。

requestAnimationFrame使用一个回调函数作为参数。这个回调函数会在浏览器重绘之前调用。

requestID = window.requestAnimationFrame(callback); 

cancelAnimationFrame方法用于取消重绘。

window.cancelAnimationFrame(requestID);

兼容性:

window.requestAnimFrame = (function(){
  return  window.requestAnimationFrame       ||
          window.webkitRequestAnimationFrame ||
          window.mozRequestAnimationFrame    ||
          function( callback ){
            window.setTimeout(callback, 1000 / 60);
          };
})();

若浏览器没有实现的话,可以用setTimeout来代替实现,频率则为1秒/60。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值