让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 相关文章推荐
Extjs Ext.MessageBox.confirm 确认对话框详解
Apr 02 Javascript
Javascript 倒计时源代码.(时.分.秒) 详细注释版
May 09 Javascript
40个新鲜出炉的jQuery 插件和免费教程[上]
Jul 24 Javascript
jquery插件方式实现table查询功能的简单实例
Jun 06 Javascript
JS如何判断json是否为空
Jul 06 Javascript
关于JavaScript 原型链的一点个人理解
Jul 31 Javascript
JS中将多个逗号替换为一个逗号的实现代码
Jun 23 Javascript
微信小程序 密码输入(源码下载)
Jun 27 Javascript
利用Javascript获取选择文本所在的句子详解
Dec 03 Javascript
详解Vue项目中出现Loading chunk {n} failed问题的解决方法
Sep 14 Javascript
生产制造追溯系统之再说条码打印
Jun 03 Javascript
微信小程序 简易计算器实现代码实例
Sep 02 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
利用文件属性结合Session实现在线人数统计
2006/10/09 PHP
php中设置多级目录session的问题
2011/08/08 PHP
PHP 通过Socket收发十六进制数据的实现代码
2013/08/16 PHP
PHP JS Ip地址及域名格式检测代码
2013/09/27 PHP
推荐几款用 Sublime Text 开发 Laravel 所用到的插件
2014/10/30 PHP
php绘图之加载外部图片的方法
2015/01/24 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
[原创]PHP正则匹配中英文、数字及下划线的方法【用户名验证】
2017/08/01 PHP
javascript onmouseout 解决办法
2010/07/17 Javascript
jquery关于图形报表的运用实现代码
2011/01/06 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
JS Date函数整理方便使用
2013/10/23 Javascript
封装的jquery翻页滚动(示例代码)
2013/11/18 Javascript
JavaScript实现的in_array函数
2014/08/27 Javascript
jquery简单实现图片切换效果的方法
2015/05/12 Javascript
使用AngularJS中的SCE来防止XSS攻击的方法
2015/06/18 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
js实现对ajax请求面向对象的封装
2016/01/08 Javascript
laydate时间日历插件使用方法详解
2018/11/14 Javascript
Vue中多个元素、组件的过渡及列表过渡的方法示例
2019/02/13 Javascript
vue调用语音播放的方法
2019/09/27 Javascript
vue+iview框架实现左侧动态菜单功能的示例代码
2020/07/23 Javascript
[34:39]Secret vs VG 2018国际邀请赛淘汰赛BO3 第二场 8.23
2018/08/24 DOTA
python控制台显示时钟的示例
2014/02/24 Python
用Python解析XML的几种常见方法的介绍
2015/04/09 Python
python实现将html表格转换成CSV文件的方法
2015/06/28 Python
Python3多进程 multiprocessing 模块实例详解
2018/06/11 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
Django 表单模型选择框如何使用分组
2019/05/16 Python
详解用pyecharts Geo实现动态数据热力图城市找不到问题解决
2019/06/26 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
html5使用canvas绘制太阳系效果
2014/12/15 HTML / CSS
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
给男朋友的道歉信
2014/01/12 职场文书
青春无悔演讲稿
2014/05/08 职场文书
pytorch--之halfTensor的使用详解
2021/05/24 Python