让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 相关文章推荐
JavaScript入门学习书籍推荐
Jun 12 Javascript
javascript Window及document对象详细整理
Jan 12 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
Oct 21 Javascript
基于javascript实现的搜索时自动提示功能
Dec 26 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
Nov 07 Javascript
VueJs与ReactJS和AngularJS的异同点
Dec 12 Javascript
jQuery基于事件控制实现点击显示内容下拉效果
Mar 07 Javascript
对angularJs中2种自定义服务的实例讲解
Sep 30 Javascript
Javascript中绑定click事件的四种方式介绍
Oct 26 Javascript
微信小程序学习笔记之表单提交与PHP后台数据交互处理图文详解
Mar 28 Javascript
JavaScript 类的封装操作示例详解
May 16 Javascript
vue cli4.0项目引入typescript的方法
Jul 17 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购物网站支付paypal使用方法
2010/11/28 PHP
PHP字符编码问题之GB2312 VS UTF-8解决方法
2011/06/23 PHP
php数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
2016/10/08 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
使用Modello编写JavaScript类
2006/12/22 Javascript
客户端js判断文件类型和文件大小即限制上传大小
2013/11/20 Javascript
Javascript限制网页只能在微信内置浏览器中访问
2014/11/09 Javascript
jQuery实现径向动画菜单效果
2015/07/17 Javascript
详解vue-cli构建项目反向代理配置
2017/09/07 Javascript
JavaScript实现计数器基础方法
2017/10/10 Javascript
Node.js使用cookie保持登录的方法
2018/05/11 Javascript
vue2.0 实现富文本编辑器功能
2019/05/26 Javascript
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
Python内置数据类型详解
2014/08/18 Python
六个窍门助你提高Python运行效率
2015/06/09 Python
python 中的int()函数怎么用
2017/10/17 Python
django使用html模板减少代码代码解析
2017/12/12 Python
Python安装图文教程 Pycharm安装教程
2018/03/27 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
基于Python List的赋值方法
2018/06/23 Python
Python实现的tcp端口检测操作示例
2018/07/24 Python
python机器学习之神经网络实现
2018/10/13 Python
用Python实现BP神经网络(附代码)
2019/07/10 Python
Python爬虫实现HTTP网络请求多种实现方式
2020/06/19 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
办公自动化专业大学生职业规划书
2014/03/06 职场文书
商学院大学生求职的自我评价
2014/03/12 职场文书
环保公益广告语
2014/03/13 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
开门红主持词
2014/04/02 职场文书
机械设计及其自动化专业求职信
2014/06/09 职场文书
法制宣传标语集锦
2014/06/25 职场文书
六查六看剖析材料
2014/10/06 职场文书
Redis6.0搭建集群Redis-cluster的方法
2021/05/08 Redis
IDEA 链接Mysql数据库并执行查询操作的完整代码
2021/05/20 MySQL