javaScript--animate函数
一、思路
1、获取目标值
2、再获取初始值
3、得到总距离
4、定义定时器的执行间隔
5、获取时间
6、得到总次数
7、总距离/总次数 = 步长
8、使用setInterval不停地改变dom元素的每一个css值 让元素不停地改变样式 造成动画的错觉。
9、定义一个计数器 每改变一次样式就累加一次 直到计数器大于等于总次数 此时说明执行完毕
10、强行拉到终点
11、停表
12、执行回调函数
二、代码
- /*
- * animate 函数能够实现动画
- * @dom 要运动的元素
- * @json css样式对象
- * @time 时间 以毫秒值为单位
- * callback 回调函数
- */
- function animate(dom, json, time, callback) {
- // 定义定时器的间隔
- var interval = 20;
- // 定义总次数
- var allCount = time / interval;
- // 获取初始值
- // 因为不确定json中有多少条css样式 所以不能写具体的代码条数
- // 使用对应的思想 所以 我们也定义一个json
- var nowJSON = {};
- // 使用for循环获取初始值
- for(var i in json) {
- // 强制性的给nowJSON添加属性 并赋值
- if(window.getComputedStyle) {
- nowJSON[i] = parseInt(getComputedStyle(dom)[i]);
- } else {
- nowJSON[i] = parseInt(dom.currentStyle[i]);
- }
- }
- // 定义步长json
- var stepJSON = {};
- for(var i in json) {
- stepJSON[i] = (json[i] - nowJSON[i]) / allCount;
- }
- // 定义计数器
- var count = 0;
- var timer = setInterval(function() {
- count++;
- // 改变dom元素的css样式
- for(var i in json) {
- dom.style[i] = nowJSON[i] + stepJSON[i] * count + "px";
- }
- // 判断是否执行完毕
- if(count >= allCount) {
- // 停表
- clearInterval(timer);
- // 拉终
- for(var i in json) {
- dom.style[i] = json[i] + "px";
- }
- // 回调函数执行
- callback && callback();
- }
- }, interval);
- }
javaScript--animate函数的更多相关文章
- javascript工具函数
第一部分 JavaScript工具函数 转义特殊字符为html实体 HtmlEncode: function(str){ return str.replace(/&/g, '&') ...
- javascript + jquery函数大全
JAVASCRIPT Array 函数 array创建数组 concat()连接两个或更多的数组,并返回结果. join()把数组中所有元素组成字符串. pop()删除并返回数组的最后一个元素 s ...
- jquery animate函数实现
jquery animate 函数 实现动画效果 参数一 比如高度宽度 之类的:'-=50' 参数二 速度之类 <html xmlns="http://www.w3.org/1999/ ...
- JavaScript中函数函数的定义与变量的声明<基础知识一>
1.JavaScript中函数的三种构造方式 a.function createFun(){ } b.var createFun=function (){ } c.var createFun=new ...
- 理解 JavaScript 回调函数并使用
JavaScript中,函数是一等(first-class)对象:也就是说,函数是 Object 类型并且可以像其他一等对象(String,Array,Number等)一样使用.它们可以"保 ...
- 5种 JavaScript 调用函数的方法
一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正理解Javascript函数是如何工作而导致的(顺便说一下,许多那样的代码是我写的).JavaScript拥有函数式编程的特性 ...
- javascript escape()函数和unescape()函数
javascript escape()函数和unescape()函数 escape() 函数可对字符串进行编码,这样就可以在所有的计算机上读取该字符串. 语法: escape(string) stri ...
- JavaScript调用函数的方法
摘要:这篇文章详细的介绍了Javascript中各种函数调用的方法及其原理,对于理解JavaScript的函数有很大的帮助! 一次又一次的,我发现,那些有bug的Javascript代码是由于没有真正 ...
- Javascript常用方法函数收集(二)
Javascript常用方法函数收集(二) 31.判断是否Touch屏幕 function isTouchScreen(){ return (('ontouchstart' in window) || ...
- [转]javascript eval函数解析json数据时为什加上圆括号eval("("+data+")")
javascript eval函数解析json数据时为什么 加上圆括号?为什么要 eval这里要添加 “("("+data+")");//”呢? 原因在于: ...
随机推荐
- TCP/IP ARP
ARP(Address Resolution Protocol)地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议. 当在同一网络段内或同一子网内,主机发送信息时将包含目标IP地址的ARP ...
- 20.C# 创建自己的泛型类型
1.定义泛型类 可以使用以下语法创建泛型类,T可以是任意符合C#标识符命名规范的任意标识符 class MyGenericClass<T> { //.... } 泛型类可以包含任意多个类型 ...
- G面经Prepare: Print Zigzag Matrix
For instance, give row = 4, col = 5, print matrix in zigzag order like: [1, 8, 9, 16, 17] [2, 7, 10, ...
- OpenGL入门之入门
programs on the GPU-------shader 顶点着色器-->形状(图元)装配-->几何着色器-->光栅化-->片段着色器-->测试与混合 图形渲染管 ...
- window安装pycharm Django
pycharm 安装Pycharm 直接在官网下载就可以,这里说一下如何破解注册码的问题: 修改电脑中hosts文件(地址: C:\Windows\System32\drivers\etc ),改变 ...
- [CentOS] rsync同步目录进行备份文件
操作不难,网上一堆.这里列几个 CentOS7 参考地址: https://www.server-world.info/en/note?os=CentOS_7&p=rsync Copy fil ...
- 理解linux网络管理命令
linux 管理命令,iproute 查看帮助文件: man ip 以下为常用帮助文件. SEE ALSO ip-address(), ip-addrlabel(), ip-l2tp(), ip-li ...
- 简单尝试Spring Cloud Gateway
简单尝试Spring Cloud Gateway 简介 Spring Cloud Gateway是一个API网关,它是用于代替Zuul而出现的.Spring Cloud Gateway构建于Sprin ...
- sitecore 获取item的URL
给出一个简单的sitecore项: Item item; 该项目本身不包含它的网址.要获取项目的URL,您需要调用static类Sitecore.Links.LinkManager string ur ...
- PIL模块
处理图片的模块 打开图片 im=Image.open("1.png") 创建字体对象 先要字体文件 font = ImageFont.truetype('C:\\WINDOWS\\ ...