让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 相关文章推荐
一个XML格式数据转换为图表的例子
Feb 09 Javascript
JS控制图片翻转示例代码(兼容firefox,ie,chrome)
Dec 19 Javascript
纯js实现无限空间大小的本地存储
Jun 18 Javascript
JavaScript对象参数的引用传递
Jan 14 Javascript
JavaScript中数组添加值和访问值常见问题
Feb 06 Javascript
jQuery实现内容定时切换效果完整实例
Apr 06 Javascript
Express + Node.js实现登录拦截器的实例代码
Jul 01 Javascript
jquery实现倒计时小应用
Sep 19 jQuery
JavaScript使用indexOf()实现数组去重的方法分析
Sep 04 Javascript
微信上传视频文件提示(推荐)
Nov 22 Javascript
jquery 时间戳转日期过程详解
Oct 12 jQuery
js实现微信聊天界面
Aug 09 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的laravel框架快速集成微信登录的方法
2016/12/12 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
php实现银联商务公众号+服务窗支付的示例代码
2019/10/12 PHP
laravel 框架结合关联查询 when()用法分析
2019/11/22 PHP
获取JavaScript用户自定义类的类名称的代码
2007/03/08 Javascript
JavaScript 程序编码规范
2010/11/23 Javascript
JS中动态添加事件(绑定事件)的代码
2011/01/09 Javascript
Knockoutjs的环境搭建教程
2012/11/26 Javascript
使用CSS3的scale实现网页整体缩放
2014/03/18 Javascript
JS根据生日算年龄的方法
2015/05/05 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
2016/10/21 Javascript
JavaScript实现图片轮播组件代码示例
2016/11/22 Javascript
浅谈jquery拼接字符串效率比较高的方法
2017/02/22 Javascript
jq checkbox 的全选并ajax传参的实例
2017/04/01 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
基于JavaScript实现百度搜索框效果
2020/06/28 Javascript
如何使用 vue + d3 画一棵树
2018/12/03 Javascript
JS学习笔记之闭包小案例分析
2019/05/29 Javascript
JavaScript实现点击自制菜单效果
2021/02/02 Javascript
[02:23]2016国际邀请赛中国区预选赛wings晋级之路
2016/06/29 DOTA
[02:59]DOTA2完美大师赛主赛事第三日精彩集锦
2017/11/25 DOTA
[02:10]三分钟回顾完美世界城市挑战赛
2019/01/24 DOTA
儿童python练习实例
2018/05/27 Python
Python实现DDos攻击实例详解
2019/02/02 Python
Python判断对象是否相等及eq函数的讲解
2019/02/25 Python
pandas 使用均值填充缺失值列的小技巧分享
2019/07/04 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
Python unittest discover批量执行代码实例
2020/09/08 Python
德国二手设计师时装和复古时装跳蚤市场:Mädchenflohmarkt
2020/11/09 全球购物
集团公司总经理岗位职责
2013/12/20 职场文书
同事打架检讨书
2014/02/04 职场文书
超市周年庆活动方案
2014/08/16 职场文书
黄石寨导游词
2015/02/05 职场文书
2015年校本培训工作总结
2015/07/24 职场文书
学校远程教育工作总结
2015/08/11 职场文书
ICOM R71E和R72E图文对比解说
2022/04/07 无线电