让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 相关文章推荐
jquery多浏览器捕捉回车事件代码
Jun 22 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
Jun 27 Javascript
javascript setinterval 的正确语法如何书写
Jun 17 Javascript
JavaScript三元运算符的多种使用技巧
Apr 16 Javascript
javascript验证邮件地址和MX记录的方法
Jun 16 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
Aug 24 Javascript
JS获取鼠标选中的文字
Aug 10 Javascript
js学使用setTimeout实现轮循动画
Jul 17 Javascript
React Native 集成jpush-react-native的示例代码
Aug 16 Javascript
Vue 进阶之路(三)
Apr 18 Javascript
Layui实现数据表格中鼠标悬浮图片放大效果,离开时恢复原图的方法
Sep 11 Javascript
vscode中的vue项目报错Property ‘xxx‘ does not exist on type ‘CombinedVueInstance<{ readyOnly...Vetur(2339)
Sep 11 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编程开发“虚拟域名”系统
2006/10/09 PHP
对javascript和select部件的结合运用
2006/10/09 PHP
Codeigniter的一些优秀特性总结
2015/01/21 PHP
学习PHP session的传递方式
2016/06/15 PHP
laravel框架学习笔记之组件化开发实现方法
2020/02/01 PHP
jQuery移动和复制dom节点实用DOM操作案例
2012/12/17 Javascript
JS等比例缩小图片尺寸的实例
2013/02/27 Javascript
js的Boolean对象初始值示例
2014/03/04 Javascript
js实现正方形颜色从下往上升的效果
2014/08/04 Javascript
js实现可得到不同颜色值的颜色选择器实例
2015/02/28 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
完美解决jQuery fancybox ie 无法显示关闭按钮的问题
2016/11/29 Javascript
JS常用知识点整理
2017/01/21 Javascript
基于Marquee.js插件实现的跑马灯效果示例
2017/01/25 Javascript
浅谈事件冒泡、事件委托、jQuery元素节点操作、滚轮事件与函数节流
2017/07/22 jQuery
vue.js与后台数据交互的实例讲解
2018/08/08 Javascript
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
2019/08/08 jQuery
Layui动态生成select下拉选择框不显示的解决方法
2019/09/24 Javascript
VUE-ElementUI 自定义Loading图操作
2020/11/11 Javascript
[04:09]显微镜下的DOTA2第十二期—NaVi美如画的团战
2014/06/23 DOTA
matplotlib中legend位置调整解析
2017/12/19 Python
Python使用sax模块解析XML文件示例
2019/04/04 Python
Python的numpy库下的几个小函数的用法(小结)
2019/07/12 Python
django连接mysql数据库及建表操作实例详解
2019/12/10 Python
Giglio英国站:意大利奢侈品购物网
2018/03/06 全球购物
雅诗兰黛澳大利亚官网:Estée Lauder澳大利亚
2019/05/31 全球购物
酒后驾驶检讨书
2014/01/27 职场文书
公司合作意向书
2014/04/01 职场文书
大学生社团活动总结
2014/04/26 职场文书
幼儿园教师节演讲稿
2014/09/03 职场文书
上班迟到检讨书
2014/09/15 职场文书
党员民主生活会对照检查材料思想汇报
2014/09/28 职场文书
人大代表选举标语
2014/10/07 职场文书
员工福利申请报告
2015/05/15 职场文书
基于JavaScript实现年月日三级联动
2021/06/22 Javascript
如何利用python实现列表嵌套字典取值
2022/06/10 Python