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)内置的碰撞检测功能,好奇的你有思考过它们的内部运行机制吗?下面将针对基本的碰撞检测技术 ...
随机推荐
- (转)python爬取拉勾网信息
学习Python也有一段时间了,各种理论知识大体上也算略知一二了,今天就进入实战演练:通过Python来编写一个拉勾网薪资调查的小爬虫. 第一步:分析网站的请求过程 我们在查看拉勾网上的招聘信息的时候 ...
- Linux内核设计第八周 ——进程的切换和系统的一般执行过程
Linux内核设计第八周 ——进程的切换和系统的一般执行过程 第一部分 知识点总结 第二部分 实验部分 1.配置实验环境,确保menu内核可以正常启动 2.进入gdb调试,在shedule和conte ...
- 求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
package com.lw.HomeWork1;//包名 2 import java.util.Scanner; public class Demo18 { /** * @param args */ ...
- Nodejs开发(1.Sublime Text 3配置)
本例使用Sublime Text 3开发 原因: 1. 有开发提示: 2. 非常easy的调试运行: 下载Sublime Text 3,官网地址:http://www.sublimetext.com/ ...
- 使用swfupload上传超过30M文件,使用FLASH上传组件
原文:使用swfupload上传超过30M文件,使用FLASH上传组件 前一段时间会员的上传组件改用FLASH的swfupload来上传,既能很友好的显示上传进度,又能完全满足大文件的上传. 后来服务 ...
- Android动画设计源码地址
Android动画设计源码地址 http://blog.csdn.net/shanghaibao123/article/details/45223825
- C语言 ---- 循环分支 iOS学习-----细碎知识点总结
#import <Foundation/Foundation.h> // #import是OC种的导入头文件或者是系统框架的指令 // 定义了一个Season枚举类型enum Seaso ...
- 深度学习笔记(四)VGG14
Very Deep Convolutional Networks for Large-Scale Image Recognition 1. 主要贡献 本文探究了参数总数基本不变的情况下,CNN随着层数 ...
- LeetCode Palindrome Permutation
原题链接在这里:https://leetcode.com/problems/palindrome-permutation/ 题目: Given a string, determine if a per ...
- CentOS修改mysql 用户root的密码并允许远程登录
第一步:用帐号登录mysql[root@CentOs5 ~]# mysql -u root -p 第二步:改变用户数据库mysql> use mysql 第三步:修改密码,记得密码要用passw ...