让div运动起来 js实现缓动效果


Posted in Javascript onJuly 06, 2017

本文实例为大家分享了js实现缓动效果的具体代码,供大家参考,具体内容如下

var tween = {
  linear:function(t,b,c,d){
    return c*t/d + b;
  },
  easeIn:function(t,b,c,d){
    return c * ( t /= d ) * t + b;
  },
  strongEaseIn:function(t,b,c,d){
    return c * ( t /= d ) * t * t * t * t + b;
  },
  strongEaseOut:function(t,b,c,d){
    return c * ( ( t = t / d -1 ) * t * t * t * t +1 ) + b;
  },
  sineaseIn:function(t,b,c,d){
    return c * ( t /= d ) * t * t + b;  
  },
  sineaseOut:function(t,b,c,d){
    return c * ( ( t = t / d -1 ) * t * t *t +1 ) + b;
  }
};

var Animate = function(dom){
  this.dom = dom;
  this.startTime = 0;
  this.startPos = 0;
  this.endPos = 0;
  this.propertyName = null;
  this.easing = null;
  this.duration = null;
}

Animate.prototype.start = function(propertyName,endPos,duration,easing){
  this.startTime = +new Date;
  this.startPos = this.dom.getBoundingClientRect()[propertyName];
  this.propertyName = propertyName;
  this.endPos = endPos;
  this.duration = duration;
  this.easing = tween[easing];

  var self = this;
  var timeId = setInterval(function(){
    if(self.step() === false){
      clearInterval(timeId);
    }
  },19);
}

Animate.prototype.step = function(){
  var t = +new Date;
  if(t>=this.startTime + this.duration){
    this.update(this.endPos);
    return false;
  }
  var pos = this.easing(t-this.startTime, this.startPos, this.endPos - this.startPos, this.duration);
  this.update(pos);
}

Animate.prototype.update = function(pos){
  this.dom.style[this.propertyName] = pos + 'px';
}

var div = document.getElementById('div');
var animate = new Animate(div);
animate.start('left',500,1000,'strongEaseOut');

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
动态样式类封装JS代码
Sep 02 Javascript
JavaScript使用IEEE 标准进行二进制浮点运算产生莫名错误的解决方法
May 28 Javascript
用Juery网页选项卡实现代码
Jun 13 Javascript
jQuery之字体大小的设置方法
Feb 27 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
Apr 01 Javascript
jQuery插件制作之参数用法实例分析
Jun 01 Javascript
Javascript将数字转化成为货币格式字符串
Jun 22 Javascript
js正则表达式惰性匹配和贪婪匹配用法分析
Dec 26 Javascript
xmlplus组件设计系列之图标(ICON)(1)
May 05 Javascript
JavaScript函数节流和函数去抖知识点学习
Jul 31 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
May 12 Javascript
JS实现分页导航效果
Feb 19 Javascript
老生常谈Bootstrap媒体对象
Jul 06 #Javascript
jQuery实现选中行变色效果(实例讲解)
Jul 06 #jQuery
运用jQuery写的验证表单(实例讲解)
Jul 06 #jQuery
Textarea输入字数限制实例(兼容iOS&安卓)
Jul 06 #Javascript
react系列从零开始_简单谈谈react
Jul 06 #Javascript
鼠标拖动改变DIV等网页元素的大小的实现方法
Jul 06 #Javascript
input框中自动展示当前日期yyyy/mm/dd的实现方法
Jul 06 #Javascript
You might like
PHP 时间转换Unix时间戳代码
2010/01/22 PHP
在smarty模板中使用PHP函数的方法
2011/04/23 PHP
async和DOM Script文件加载比较
2014/07/20 PHP
php变量与字符串的增删改查操作示例
2020/05/07 PHP
js 返回时间戳所对应的具体时间
2010/07/20 Javascript
JavaScript的递归之递归与循环示例介绍
2013/08/05 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
javascript计时器详解
2015/02/28 Javascript
JS实现可展开折叠层的鼠标拖曳效果
2015/10/09 Javascript
JS本地刷新返回上一页代码
2016/07/25 Javascript
深入浅出 jQuery中的事件机制
2016/08/23 Javascript
js实时获取窗口大小变化的实例代码
2016/11/18 Javascript
ES6的异步终极解决方案分享
2019/07/11 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
2020/04/26 Javascript
JavaScript监听键盘事件代码实现
2020/06/03 Javascript
Python2.x和3.x下maketrans与translate函数使用上的不同
2015/04/13 Python
Django中url的反向查询的方法
2018/03/14 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
2018/12/15 Python
Python 使用 attrs 和 cattrs 实现面向对象编程的实践
2019/06/12 Python
python连接PostgreSQL过程解析
2020/02/09 Python
Windows下Anaconda安装、换源与更新的方法
2020/04/17 Python
python 实现任务管理清单案例
2020/04/25 Python
区分python中的进程与线程
2020/08/13 Python
selenium自动化测试入门实战
2020/12/21 Python
Python就将所有的英文单词首字母变成大写
2021/02/12 Python
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
HTML5页面中尝试调起APP功能
2017/09/12 HTML / CSS
中东奢侈品市场:Coveti
2019/05/12 全球购物
积极分子思想汇报
2014/01/04 职场文书
人事档案接收函
2014/01/12 职场文书
廉洁校园实施方案
2014/05/25 职场文书
水污染治理工程专业自荐信
2014/06/21 职场文书
2014年秋季开学典礼主持词
2014/08/02 职场文书
2014年小学教学工作总结
2014/11/13 职场文书
2014年个人年终总结
2015/03/09 职场文书
仓库管理制度范本
2015/08/04 职场文书