关于使用 requestAnimationFrame 制作 JavaScript 动画

昨天在 MDN 复习关于对象的知识,最后有个做吃球小游戏的练习,翻了翻以前做的这个练习的文件内容,复习了一波。在代码的最后,我发现了一个完全不知道的方法:requestAnimationFrame。

在 MDN 找到相关页面,是这么介绍的:使用该方法需要传入一个回调函数作为擦书,在使用该方法后,浏览器会在下次重绘前调用回调函数。如果需要在下次重绘前继续更新下一个动画,则需要在回调函数内部调用 window.requestAnimationFrame()。

该方法会返回一个 long 整数,该整数用于传入 window.cancelAnimationFrame() 方法中以取消回调函数。

使用这个方法优点在于:

  1、不会因大量的计算操作而使动画延迟

    原因:浏览器具有固定的重绘间隔,重绘间隔不会因大量计算操作而变化,重绘时间与显示器刷新率相关。

  2、不会因定时器的延迟时间与浏览器重绘时间不同而导致动画丢帧

  3、不会因存在多个 requestAnimationFrame 的回调函数而使动画延迟

    原因:设置多个 requestAnimationFrame 的回调函数时,它们会接受一个相同的时间戳。

那么,这个方法的兼容性如何呢?根据 caniuse 的查询结果,IE10 及之后的浏览器、Android4.4 及之后的浏览器和其他现代浏览器均支持该方法。如果不需要兼容老 IE 或者针对移动端的话,就可以大胆使用了。

参考资料:

window.requestAnimationFrame - Web API 接口参考 | MDN

CSS3动画那么强,requestAnimationFrame还有毛线用?

原文地址:https://www.cnblogs.com/FreezeNow/p/12184696.html

时间: 2024-10-03 17:21:24

关于使用 requestAnimationFrame 制作 JavaScript 动画的相关文章

html5 requestAnimationFrame制作动画:旋转风车

详细内容请点击 在以往,我们在网页上制作动画效果的时候,如果是用javascript实现,一般都是通过定时器和间隔来实现的,出现HTML5之后,我们还可以用CSS3 的transitions和animations很方便的实现动画,这些技术手段在对于简单的或者对流畅性要求不高的动画不会有什么问题,然而随着用户体验的提高,我们制作的动画效果有了更高的要求,那么对于比较复杂的而且具有较高流畅性的动画效果,用以上的两种方法就有点捉襟见肘了.对于质量较高的动画效果的实现,我们又不想用falsh,那怎么办呢

requestAnimationFrame制作动画:旋转风车

在以往,我们在网页上制作动画效果的时候,如果是用javascript实现,一般都是通过定时器和间隔来实现的,出现HTML5之后,我们还可以用CSS3 的transitions和animations很方便的实现动画,这些技术手段在对于简单的或者对流畅性要求不高的动画不会有什么问题,然而随着用户体验的提高,我们制作的动画效果有了更高的要求,那么对于比较复杂的而且具有较高流畅性的动画效果,用以上的两种方法就有点捉襟见肘了.对于质量较高的动画效果的实现,我们又不想用falsh,那怎么办呢?为解决这个问题

RequestAnimationFrame更好的实现Javascript动画

一直以来,JavaScript的动画都是通过定时器和间隔来实现的.虽然使用CSS transitions 和 animations使Web开发实现动画更加方便,但多年来以JavaScript为基础来实现动画却很少有所改变.直到Firefox 4的发布,才带来了第一种对JavaScript动画的改善的方法.但要充分认识改善,这有利于帮助我们了解web动画是如何演变改进的. 定时器Timer 用于创建动画的第一个模式是使用链式setTimeout()调用.在Netscape 3′s hayday的很

JavaScript动画知多少?

今天,小学生以自己浅薄的见地,在前辈大能的基础上写这篇文章,希望给大家打开一扇窥探JavaScript(以下简称JS)动画的窗户. JS如何制造出动画效果? 结合浏览器提供的 setInterval 或 setTimeout API,高频改变DOM元素的一些属性,即可创造一个肉眼可见的动画效果.一个看起来非常流畅的JS动画除了需要良好的变换算法外,与其执行宿主也是非不开的.程序写得再好,如果浏览器过于老旧,电脑CPU性能低下,也会出现卡顿,甚至卡死. 执行一个动画函数对于浏览器来说是个苦差,设置

JavaScript网站设计实践(三)设计有特色的主页,给主页链接添加JavaScript动画脚本

原文:JavaScript网站设计实践(三)设计有特色的主页,给主页链接添加JavaScript动画脚本 一.主页一般都会比较有特色,现在在网站设计(二)实现的基础上,来给主页添加一点动画效果. 1.这里实现的动画效果是:当鼠标悬停在其中某个超链接时,会显示出属于该页面的背景缩略图,让用户知道这个链接的页面大概内容是什么. 效果图: 2.实现这个效果的思路 (1)把主页的几个链接的背景图片缩放到150px*150px,拼成一张750*150的图片,并保存为slideshow.png,存放到ima

pc端对制作网页动画一些心得

最近做了一些pc端的页面,用了一些动画效果,总的来说感觉还不错,大概记录下一些体会 首先,我们把pc端的动画类型分三类: javascript和jQuery直接控制dom属性 css3的属性transition css3的animation 这三类是我目前主要使用的动画效果制作来源 javascript和jQuery直接控制dom属性 这种模式就是我们传统的js模式,或者在jquery上进行一些包装.主要是直接变化dom节点的普通属性,left,top,width,height之类的: 优点:

使用transform和transition制作CSS3动画

<!DOCTYPE HTML> <html lang="en-US"> <head> <meta charset="UTF-8"> <title>使用transform和transition制作CSS3动画</title> <style> ul,ol,li,h1,h2,h3,h4,h5,h6,pre,form,body,html,p,blockquote,fieldset,input

CSS3+Jquery制作的动画效果电子表

<!DOCTYPE HTML> <html> <head> <title>CSS3+Jquery制作的动画效果电子表丨石家庄网络公司-河北品牌策划公司</title> <style type="text/css"> body{ background:#202020; font:bold 12px Arial, Helvetica, sans-serif; margin:0; padding:0; min-width

javascript动画效果之缓冲动画(修改版)

在编写多块同时触发运动的时候,发现一个BUG, timer = setInterval(show, 30);本来show是一个自定义函数,当设为timer = setInterval(show(one,two), 30);时,发现show里面的参数one和two无法被导入,所以需要做以下代码改进和优化 原版的html和css代码在这里javascript动画效果之缓冲动画 js代码如下 1 <script> 2 function $(id) { 3 return typeof id === &