window.requestAnimationFrame()函数作用

window.requestAnimationFrame()

window.requesrAnimateionFrame(callback)
告诉浏览器–你希望执行一个动画,并且要求浏览器在下次重绘之前调用指定的回调函数更新动画,该方法需要传入一个回调函数作为参数,该回调函数会在浏览器下一次重绘之前执行。
callback(DOMHightResTimeStamp)
DOMHightResTimeStamp指示当前被requestAnimationFrame()排序的回调函数被触发的时间。咋同一帧中的多个回调函数,他们每一个都会接受到一个相同的时间戳,及时在计算上一个回调函数的工作负载期间已经消耗了一些时间。该时间错是一个十进制数,单位毫秒,最小精度为1ms.

var start = null;
var element = document.getElementById('SomeElementYouWantToAnimate');
element.style.position = 'absolute';

function step(timestamp) {
  if (!start) start = timestamp;
  var progress = timestamp - start;
  element.style.left = Math.min(progress / 10, 200) + 'px';
  if (progress < 2000) {
    window.requestAnimationFrame(step);
  }
}

window.requestAnimationFrame(step);

兼容性:IE10及以上

与setTimeout相比,rAFt最大的优势是有系统来决定回调函数执行时机,系统每次绘制之前会主动调用rAFt中的回调函数,如果系统绘制率是60Hz,那么回调函数就每16.7ms被执行一次,它能保证回调函数在屏幕每一次的绘制间隔中只被执行一次,不会出现丢帧的现象,也不会导致画面出现卡顿的问题。

简单的来说,类似一个定时器,用来执行动画的回调函数。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值