让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中的call实现继承
Jan 22 Javascript
Sample script that displays all of the users in a given SQL Server DB
Jun 16 Javascript
JavaScript 序列化对象实现代码
Dec 18 Javascript
简单的jquery拖拽排序效果实现代码
Sep 20 Javascript
js调用AJAX时Get和post的乱码解决方法
Jun 04 Javascript
jquery实现select下拉框美化特效代码分享
Aug 18 Javascript
老生常谈js动态添加事件--- 事件委托
Jul 19 Javascript
JS 插件dropload下拉刷新、上拉加载使用小结
Apr 13 Javascript
JS实现点击Radio动态更新table数据
Jul 18 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
Apr 04 Javascript
layui清除radio的选中状态实例
Nov 14 Javascript
js中Map和Set的用法及区别实例详解
Feb 15 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
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
一段php加密解密的代码
2006/10/09 PHP
php正则表达式获取内容所有链接
2015/07/24 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
YII中Ueditor富文本编辑器文件和图片上传的配置图文教程
2017/03/15 PHP
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
多个js与css文件的合并方法详细说明
2012/12/26 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
2014/01/14 Javascript
详解JavaScript中的forEach()方法的使用
2015/06/08 Javascript
浅谈Nodejs观察者模式
2015/10/13 NodeJs
轻松实现javascript数据双向绑定
2015/11/11 Javascript
Web开发必知Javascript技巧大全
2016/02/23 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
自己动手制作基于jQuery的Web页面加载进度条插件
2016/06/03 Javascript
适用于手机端的jQuery图片滑块动画
2016/12/09 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
完美解决手机网页中输入框被输入法遮挡的问题
2017/12/19 Javascript
VueJs组件之父子通讯的方式
2018/05/06 Javascript
浅谈Vue路由快照实现思路及其问题
2018/06/07 Javascript
深入理解使用Vue实现Context-Menu的思考与总结
2019/03/09 Javascript
聊聊Vue中provide/inject的应用详解
2019/11/10 Javascript
jQuery实现容器间的元素拖拽功能
2020/12/01 jQuery
[01:13]DOTA2群星解读国服召集令 一起说出回归的理由
2013/07/17 DOTA
python网络编程学习笔记(10):webpy框架
2014/06/09 Python
Linux中Python 环境软件包安装步骤
2016/03/31 Python
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
numpy matrix和array的乘和加实例
2018/06/28 Python
Python基于sklearn库的分类算法简单应用示例
2018/07/09 Python
python操作toml文件的示例代码
2020/11/27 Python
下面关于"联合"的题目的输出是什么
2013/08/06 面试题
公司优秀员工获奖感言
2014/08/14 职场文书
医院护士见习期自我鉴定
2014/09/15 职场文书
西柏坡导游词
2015/02/05 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
2016年学校爱国卫生月活动总结
2016/04/06 职场文书
【DOTA2】总决赛血虐~ XTREME GAMING vs MAGMA - OGA DOTA PIT 2022 CN
2022/04/02 DOTA