html5+shim脚本,HTML5探秘:用requestAnimationFrame优化Web动画

requestAnimationFrame是什么?

在浏览器动画程序中,我们通常使用一个定时器来循环每隔几毫秒移动目标物体一次,来让它动起来。如今有一个好消息,浏览器开发商们决定:“嗨,为什么我们不在浏览器里提供这样一个API呢,这样一来我们可以为用户优化他们的动画。”所以,这个requestAnimationFrame()函数就是针对动画效果的API,你可以把它用在DOM上的风格变化或画布动画或WebGL中。

使用requestAnimationFrame有什么好处?

浏览器可以优化并行的动画动作,更合理的重新排列动作序列,并把能够合并的动作放在一个渲染周期内完成,从而呈现出更流畅的动画效果。比如,通过requestAnimationFrame(),JS动画能够和CSS动画/变换或SVG SMIL动画同步发生。另外,如果在一个浏览器标签页里运行一个动画,当这个标签页不可见时,浏览器会暂停它,这会减少CPU,内存的压力,节省电池电量。

requestAnimationFrame的用法

// shim layer with setTimeout fallback

window.requestAnimFrame = (function(){

return window.requestAnimationFrame ||

window.webkitRequestAnimationFrame ||

window.mozRequestAnimationFrame ||

function( callback ){

window.setTimeout(callback, 1000 / 60);

};

})();

// usage:

// instead of setInterval(render, 16) ....

(function animloop(){

requestAnimFrame(animloop);

render();

})();

// place the rAF *before* the render() to assure as close to

// 60fps with the setTimeout fallback.

对requestAnimationFrame更牢靠的封装

Opera浏览器的技术师Erik Möller 把这个函数进行了封装,使得它能更好的兼容各种浏览器。你可以读一读这篇文章,但基本上他的代码就是判断使用4ms还是16ms的延迟,来最佳匹配60fps。下面就是这段代码,你可以使用它,但请注意,这段代码里使用的是标准函数,我给它加上了兼容各种浏览器引擎前缀。

(function() {

var lastTime = 0;

var vendors = ['webkit', 'moz'];

for(var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) {

window.requestAnimationFrame = window[vendors[x]+'RequestAnimationFrame'];

window.cancelAnimationFrame =

window[vendors[x]+'CancelAnimationFrame'] || window[vendors[x]+'CancelRequestAnimationFrame'];

}

if (!window.requestAnimationFrame)

window.requestAnimationFrame = function(callback, element) {

var currTime = new Date().getTime();

var timeToCall = Math.max(0, 16 - (currTime - lastTime));

var id = window.setTimeout(function() { callback(currTime + timeToCall); },

timeToCall);

lastTime = currTime + timeToCall;

return id;

};

if (!window.cancelAnimationFrame)

window.cancelAnimationFrame = function(id) {

clearTimeout(id);

};

}());

我来看看使用requestAnimationFrame的效果

requestAnimationFrame API

window.requestAnimationFrame(function(/* time */ time){

// time ~= +new Date // the unix time

});

回调函数里的参数可以传入时间。

各种浏览器对requestAnimationFrame的支持情况

谷歌浏览器,火狐浏览器,IE10+都实现了这个函数,即使你的浏览器很古老,上面的对requestAnimationFrame封装也能让这个方法在IE8/9上不出错。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533126.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机科学与技术的专业论述,关于计算机科学专业的论文题目 计算机科学专业论文题目怎样定...

【100道】关于关于计算机科学专业的论文题目汇总,作为大学生的毕业生应该明白了计算机科学专业论文题目怎样定,选一个好的题目后续的计算机科学专业论文写作起来会更轻松&#xff01;一、比较好写的计算机科学专业论文题目:1、计算机科学与技术专业应用型人才培养改革调研分析—…

ming window 交叉编译_opencv3编译pc端及交叉编译arm端

环境&#xff1a; opensuse opencv3.4.1 交叉编译器arm-openwrt-linux 作者&#xff1a;帅得不敢出门https://github.com/opencv/opencv/tree/3.4.1选择右边的"clone or download"按钮进行下载&#xff0c;选择下载zip我下的是opencv-3.4.1.zip, 3.4.1的版本号…

锁定计算机 背景图片,win7系统电脑更换锁屏壁纸的方法

当win7系统电脑在一段时间不动的话就进入锁屏状态&#xff0c;然而很多用户觉得默认的锁屏壁纸不好看&#xff0c;就想要更换自己喜欢的锁屏壁纸&#xff0c;那么win7怎么更换锁屏壁纸呢&#xff1f;下面给大家讲解一下win7系统电脑更换锁屏壁纸的方法。1、同时按下窗口键winR组…

两阶段最小二乘法原理_R语言代写工具变量与两阶段最小二乘法

我们要估计的模型是yabxcdeyabxcde&#xff0c;其中是解释变量&#xff0c;&#xff0c;和是我们想要估计的系数。是控制变量&#xff0c;是治疗变量。我们特别关注我们的治疗效果对。生成数据首先&#xff0c;让我们生成数据。假设 的工具变量和之间的相关矩阵如下&#xff1a…

计算机二级循环队列知识点,考点!计算机二级考试公共基础知识冲刺复习笔记:栈、队列和循环队列...

小编所收集到的相关计算机二级考试公共基础知识冲刺复习笔记&#xff1a;栈、队列和循环队列的资料 大家要认真阅读哦&#xff01;1、栈(Stack)又称堆栈。(1)栈是一种运算受限的线性表&#xff0c;其限制是仅允许在表的一端进行插入和删除运算。人们把此端称为栈顶&#xff0c;…

lua 字符串包含_Programming in Lualua学习第11期 Lua模块与包

微信公众号&#xff1a;GameToolDev关注可了解更多的游戏工具开发教程。问题或建议&#xff0c;请公众号留言;从Lua 5.1开始&#xff0c;我们可以使用require和module函数来获取和创建Lua中的模块。从使用者的角度来看&#xff0c;一个模块就是一个程序库&#xff0c;可以通过r…

学计算机优盘多少内存够用,u盘建议买多大内存的

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。u盘建议买多大内存主要看用途&#xff0c;一般容量为&#xff1a;1G、2G、4G、8G、16G、32G、64G、128G、256G、512G、1T&#xff0c;具体来说&#xff1a;1、如果是用来存放视频的&…

.net 从txt中读取行数据_【VBA项目】从指定文件中读取数据并绘制图表

VBA 是一种很久远的编程语言&#xff0c;但并不过时。在满足以下两个条件时&#xff0c;借助 VBA 可以极大的提升生产率&#xff0c;降低出错率&#xff1a;你的电脑上不允许自主安装软件&#xff1b; 你需要执行的工作中大部分的步骤都是固定且重复的。项目背景近期接到一个工…

本地摄像头应用到远程计算机,远程摄像头设置

可以的&#xff0c;智能家用监控摄像头&#xff0c;只要你手机有网&#xff0c;千里之外打开手机都可以查看视频&#xff0c;而且智能摄像头主要用于看家看孩子看老人照看猫猫狗狗等宠物的。智能摄像头&#xff0c;与市面上普通的事件录制不一样&#xff0c;它可以实现7*24小时…

axure实现复选框全选_jq简单的全选、反选和全不选效果

jquery是很实用和方便的前端效果库&#xff0c;可以让我减少很多的操作和节省很多的时间。今天&#xff0c;我们来说一下jq的全选、全不选和反选效果&#xff0c;本篇讲的是最简单简洁的jq全选、全不选和反选的例子。如果还有什么其他的功能要求可自己根据所学到的基础来扩展一…

计算机设备管理器驱动,设备管理器安装驱动程序的详细教程

系统出现问题&#xff0c;很多人都会选择重装系统。但系统重装后&#xff0c;我们所做的第一件事&#xff0c;就是安装驱动。有的驱动程序有安装包&#xff0c;直接安装就行了。但是有的驱动是只有驱动程序文件&#xff0c;而没有执行程序&#xff0c;这时候就需要通过设备管理…

ef执行原生sql语句_EF Core中执行原生SQL语句

一、课程介绍之所以今天录制这个系列文章的主要原因是&#xff0c;想在快速帮助到大家上手在ASP.NET Core WebAPI中结合EF Core来操作我们的数据库。EF Core的基础文章和基础课程实在是太多了&#xff0c;那么阿笨既然也来录制这个系列课堂&#xff0c;阿笨想必肯定会给大家带来…

华立学院计算机组成原理考试,广东工业大学华立学院计算机组成原理期末复习重点...

广工华立-2015-2016学年度-计算机组成原理考试复习一、考试题型&#xff1a;分为选择、判断、填空、简述题四大类。其中选择题有大约三分之一送分&#xff0c;大题占了50分、题目从课后作业出、重点大题为&#xff1a;指令方面&#xff1b;芯片连接&#xff1b;硬盘计算外存&am…

电路串联和并联图解_一个关于交流电路谐振现象的仿真实验

对于一个具有电阻、电感、电容的交流电路中&#xff0c;交流电源两端的电压一般不和它输出的电流同相位。如果调节电路的参数或者电源频率使它们同相位&#xff0c;这时电路就发生了谐振现象。按照发生谐振现象的电路不同&#xff0c;可以分为串联谐振和并联谐振。1、串联谐振在…

sync不生效 vue_Vue实战项目-记账器-重要知识点汇总

历时3周&#xff0c;记账器项目终于可以运行了&#xff0c;这次项目是基于Vue开发&#xff0c;用到了typeScript和Scss,下面基于项目做一个阶段性的总结&#xff0c;回顾一下项目中用到的知识点。一.组件一开始用的是JS对象的写法&#xff1a;构造选项&#xff1a;{ data(){ret…

开设计算机课程的必要性,学前教育专业开设计算机音乐制作课程的必要性与可行性...

学前教育专业开设计算机音乐制作课程的必要性与可行性李 萍430061【期刊名称】课程教育研究【年(卷),期】2012(000)020【总页数】1一、学前教育专业开设音乐相关课程的现状二、现代教育的新型特点&#xff0c;计算机音乐及制作的发展概况三、计算机音乐制作在学前教育专业开设的…

fifo页面置换算法设计思路_千万级并发!如何设计一个多级缓存系统?

什么是一个多级缓存系统?它有什么用?我们又如何设计一个多级缓存系统?图片来自 Pexels所谓多级缓存系统&#xff0c;就是指在一个系统的不同的架构层级进行数据缓存&#xff0c;以提升访问效率。我们都知道&#xff0c;一个缓存系统&#xff0c;它面临着许多问题&#xff0c…

广东省计算机学校哪所最好,广东省哪个技校比较好哪里好

湖北省有少数大中专院校在教育事业中&#xff0c;无论是投入还是创办教育学院&#xff0c;都比较好&#xff0c;的话就是至少能赚到三成。至于那些综合性、公益性大的院校&#xff0c;可能要好几千块钱不是问题&#xff0c;毕竟我们是艺术类的&#xff0c;所以毕竟整体上看&…

apple quicktime怎么在ppt中用_PPT情感专题大赏No. 007:一份这就是街舞第三季主题PPT(上集)...

Hello&#xff0c;大家好&#xff0c;这里是千师傅小作坊第35期&#xff0c;我是你们的老朋友千千。熟悉千师傅小作坊的人都知道&#xff0c;千师傅特别喜欢看综艺&#xff0c;尤其是音乐、表演、舞蹈类。作为一个十八线PPT设计师&#xff0c;如果我看到好看的节目视觉设计&…

计算机语言低下限高上限,学习语言有没有上限

学习语言有没有上限科学家普遍认为&#xff0c;语言是人类特有的认知天赋的一部分&#xff0c;所以长期以来&#xff0c;科学家一直在研究疾病和创伤如何削弱语言能力。但是&#xff0c;直到现在&#xff0c;科学家仍不清楚一个人最多能掌握多少种语言。在经过长期沉默后&#…