Window.requestAnimationFrame()动画更新
概述
Window.requestAnimationFrame()
方法告诉浏览器你希望执行动画,并且再下一次重绘之前要求浏览器调用一个特定的函数去更新动画。该方法把一个回调函数作为参数,该回调函数会在浏览器下一次重绘之前执行。
注意:如果你想在浏览器下次重绘之前继续更新下一帧动画,那么回调函数自身必须再次调用Window.requestAnimationFrame()
当你准备更新你的动画的时候,你应该调用该方法。这会要求你的动画函数在浏览器下次重绘之前被调用。回调的频率一般是60次/秒,但通常会按照W3C的建议与大多数网络浏览器中的显示刷新率匹配。为了提高性能和电池寿命,因此在大多数浏览器里,当requestAnimationFrame()
运行在后台标签页或者隐藏的的<iframe>
里时,requestAnimationFrame()
会被暂停调用以提升性能和电池寿命。
回调函数会被传入DOMHighResTimeStamp
参数,DOMHighResTimeStamp
指示当前被 requestAnimationFrame()
排序的回调函数被触发的时间。在同一个帧中的多个回调函数,它们每一个都会接受到一个相同的时间戳,即使在计算上一个回调函数的工作负载期间已经消耗了一些时间。该时间戳是一个十进制数,单位毫秒,最小精度为1ms(1000μs)。
语法
window.requestAnimationFrame(callback);
参数
callback
下一次重绘之前更新动画帧所调用的函数(即上面所说的回调函数)。该回调函数会被传入DOMHighResTimeStamp
参数,该参数与performance.now()
的返回值相同,它表示requestAnimationFrame()
开始去执行回调函数的时刻。
返回值
一个 long
整数,请求 ID ,是回调列表中唯一的标识。是个非零值,没别的意义。你可以传这个值给 window.cancelAnimationFrame()
以取消回调函数。
范例
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);
最新文章
- yii2 ActiveRecord多表关联以及多表关联搜索的实现
- iOS CALayer应用详解(2)
- Animation用法
- js&;jquery验证邮箱和手机号是否正确范例
- Oracle错误
- Hibernate -- 注解(Annotation)关系映射
- Spark学习笔记--Transformation 和 action
- MD5和SHA512Managed ——哈希算法
- Flex 自定义事件
- GitHub 入门不完全指南(未完待续)
- php面试题汇总四(基础篇附答案)
- python_如何通过实例方法名字调用方法?
- java~集合的介绍和使用
- C++ 中 double、 long double、long 和 long long
- python精进之路1---基础数据类型
- Java虚拟机内存分配详解
- 5个强大的Java分布式缓存框架
- python BeautifulSoup的简单使用
- LeetCode——9. Palindrome Number
- NodeJs使用Express框架开发时的快速调试方法
热门文章
- echarts 图点击事件
- 简单的节流函数throttle
- WEB渗透 - XSS
- vue2.0:项目开始,首页入门(main.js,App.vue,importfrom)
- Python3 + requests + unittest接口测试
- 使用C#+EmguCV处理图像入门(图像读取_显示_保存)二
- Html的总结(待完善)
- Python3学习之路~10.2 协程、Greenlet、Gevent
- 6. concat_ws用法
- 环境篇:VMware Workstation安装Centos7