requestAnimationFrame 动画
requestAnimationFrame : 调用这个方法,就是告诉浏览器要执行动画了,从而浏览器自动计算动画时间间隔,从而在恰当的时候刷新UI, 动画更加平滑。
他的用法和setTimeout() 一致,只是不用告诉浏览器循环间隔,而是让浏览器自己决定,各大浏览器都会充分利用自己的性能。
创建一个简单的动画,
function animation(){
var div = document.getElementById("div1");
div.style.left = div.offsetLeft + 10 + "px";
}
然后调用requestionAnimationFrame 方法,他接受一个参数,就是动画函数。
requestAnimationFrame(animation);
执行函数后,浏览器重绘DOM, div 向右移动10px,这时就停止了。如果再次调用 这个函数,div 又向右移动10px; 也就是说每执行一个requestAnimationFrame(animation); div 就向右移动10px;
因此创建循环动画,就需要在 动画函数中调用 requestAnimationFrame(animation);
function animation(){
var div =document.getElementById("div1");
div.style.left = div.offsetLeft +10 +"px";
requestAnimationFrame(animation);
}
requestAnimationFrame(animation);
其次 还提供了一个cancelAnimationFrame方法,它接受一个参数,用于取消动画。 参数就是 requestAnimationFrame(animation) 的返回值,和setTimeout 返回值一样。
完整的requestAnimationFrame动画。
<div id="div1">
ddd
</div>
<script>
var timer = null;
var div = document.getElementById("div1");
function animation(){
div.style.left = div.offsetLeft + 10 + "px";
if(div.offsetLeft > 800){
cancelAnimationFrame(timer);
}else {
requestAnimationFrame(animation);
}
}
timer =requestAnimationFrame(animation);
</script>
requestAnimationFrame 动画的更多相关文章
- 移动端 transition动画函数的封装(仿Zepto)以及 requestAnimationFrame动画函数封装(仿jQuery)
移动端 css3 transition 动画 ,requestAnimationFrame 动画 对于性能的要求,h5优先考虑: 移动端 单页有时候 制作只用到简单的css3动画即可,我们封装一下, ...
- requestAnimationFrame动画方法
一.动画方式 在HTML5/CSS3时代,实现动画的方式有许多种: 你可以用css3的animation和@keyframes: 可以用css3的transition: 还可以用原始的setTimeo ...
- Window.requestAnimationFrame()动画更新
概述 Window.requestAnimationFrame()方法告诉浏览器你希望执行动画,并且再下一次重绘之前要求浏览器调用一个特定的函数去更新动画.该方法把一个回调函数作为参数,该回调函数会在 ...
- requestAnimationFrame动画封装
function Animator(duration, progress) { this.duration = duration; this.progress = progress; this.nex ...
- 简单的requestAnimationFrame动画
html部分 <div id="test" style="width:1px;height:17px;background:#0f0;">0%< ...
- 移动端 touchmove高频事件与requestAnimationFrame的结合优化
移动端最高频耗内存的的操作 莫属 touchmove 与scroll事件 两者需要 微观的 优化,使用 requestAnimationFrame性能优化 H5性能优化requestAnimati ...
- Html5游戏开发-图形与动画(一)
最近研究了一下出来了很久的HTML5,总结了一下,准备来个系列,文中也许有很多问题,欢迎大家指正. Canvas介绍 canvas用于在网页中绘制图形的一个元素,具体内容请查看 -> HTML5 ...
- Canvas动画基础之碰撞检测
在Canvas中进行碰撞检测,大家往往直接采用游戏引擎(Cocos2d-JS.Egret)或物理引擎(Box2D)内置的碰撞检测功能,好奇的你有思考过它们的内部运行机制吗?下面将针对基本的碰撞检测技术 ...
- Html5 Canvas动画基础碰撞检测的实现
在Canvas中进行碰撞检测,大家往往直接采用游戏引擎(Cocos2d-JS.Egret)或物理引擎(Box2D)内置的碰撞检测功能,好奇的你有思考过它们的内部运行机制吗?下面将针对基本的碰撞检测技术 ...
随机推荐
- php5-fpm.sock failed (13: Permission denied) error
In order to fix the php5-fpm.sock failed error follow these instructions 1) Make sure your virtual h ...
- jQuery获取一般处理程序(ashx)的JSON数据
昨天有在开发的软件生产线生产流程,RFID扫描IC卡的数据,当中有用到jQuery获取一般处理程序(ashx)的JSON数据.今有把它写成一个小例子,望需要的网友能参考. 在网站中,创建一个一般应用程 ...
- IAR EW8051-8.10.4安装及破解方法
第一步:获取破解license 1: 点击桌面左下角“开始”按钮,找到cmd.exe,右键创建cmd.exe 快捷方式到桌面: ————如果是windows7 ,请右键点击cmd.exe 快捷图标,点 ...
- C++ Primer Pluse_7_课后题
#include <iostream> using namespace std; double Sum2(double x, double y) { double sum = 0; if ...
- mongodb的使用
1.启动mongodb 启动mongodb在Linux中可以进入mongodb的bin目录下执行 ./mongod -dbpath=所建立的数据文件夹 -logpath=所建立的日志文件 ...
- 由SecureCRT引发的思考和学习
由SecureCRT引发的思考和学习 http://mp.weixin.qq.com/s?__biz=MzAxOTAzMDEwMA==&mid=2652500597&idx=1& ...
- [SLAM] GMapping SLAM源码阅读(草稿)
目前可以从很多地方得到RBPF的代码,主要看的是Cyrill Stachniss的代码,据此进行理解. Author:Giorgio Grisetti; Cyrill Stachniss http: ...
- C#基础知识大杂烩
这样是调用父类中第二个有参的构造函数,如果去掉Base默认调用无参构造函数 注意执行顺序是:先调用父类的构造函数,然后再执行子类自己的构造函数. 父类: class Person { public P ...
- 忘记Linux root用户的密码怎么办?
以前忘记windows密码的时候,要么用工具清除,要么重装系统.假如你忘记了linux系统的root密码,怎么办呢?是像windows一样用工具破解还是重装系统呢?哈哈,都不用.这方法很简单,现在做一 ...
- cocos2dx 3.x(移动修改精灵坐标MoveTo与MoveBy)
// // MainScene.cpp // helloworld // // Created by apple on 16/11/8. // // #include "MainScene. ...