让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实现div阴影效果示例代码
Sep 16 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
Sep 06 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
Sep 22 Javascript
javascript三种代码注释方法
Jun 02 Javascript
AngularJS中过滤器的使用与自定义实例代码
Sep 17 Javascript
babel基本使用详解
Feb 17 Javascript
微信小程序实现发送模板消息功能示例【通过openid推送消息给用户】
May 05 Javascript
vue分页插件的使用方法
Dec 25 Javascript
使用webpack搭建pixi.js开发环境
Feb 12 Javascript
微信小程序实现上传照片代码实例解析
Aug 04 Javascript
详解webpack的文件监听实现(热更新)
Sep 11 Javascript
vue使用Google Recaptcha验证的实现示例
Aug 23 Vue.js
老生常谈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合并静态文件详解
2014/11/14 PHP
php定时执行任务设置详解
2015/02/06 PHP
PHP实现根据图片色界在不同位置加水印的方法
2015/08/08 PHP
PHP设计模式之迭代器模式
2016/06/17 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
jQuery select控制插件
2009/08/17 Javascript
jquery处理页面弹出层查询数据等待操作实例
2015/03/25 Javascript
jQuery实现点击查看大图并以弹框的形式居中
2016/08/08 Javascript
javascript 内置对象及常见API详细介绍
2016/11/01 Javascript
vue 搭建后台系统模块化开发详解
2019/05/01 Javascript
vue实现公共方法抽离
2020/07/31 Javascript
多线程爬虫批量下载pcgame图片url 保存为xml的实现代码
2013/01/17 Python
python妹子图简单爬虫实例
2015/07/07 Python
详解python中的json的基本使用方法
2016/12/21 Python
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
python2 与 python3 实现共存的方法
2018/07/12 Python
python的继承知识点总结
2018/12/10 Python
浅谈Python中的全局锁(GIL)问题
2019/01/11 Python
python序列化与数据持久化实例详解
2019/12/20 Python
python爬取代理IP并进行有效的IP测试实现
2020/10/09 Python
Python用SSH连接到网络设备
2021/02/18 Python
TripAdvisor德国:全球领先的旅游网站
2017/12/07 全球购物
Veronica Beard官网:在酷、经典和别致之间找到了平衡
2018/01/11 全球购物
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
社会实践自我鉴定
2013/11/07 职场文书
自荐信格式写作方法有哪些呢
2013/11/20 职场文书
自荐信格式
2013/12/01 职场文书
节约用水演讲稿
2014/05/21 职场文书
小学运动会演讲稿
2014/08/25 职场文书
2014年信贷员工作总结
2014/11/18 职场文书
2014年小学辅导员工作总结
2014/12/23 职场文书
大连星海广场导游词
2015/02/10 职场文书
2015年度个人业务工作总结
2015/04/27 职场文书
golang中切片copy复制和等号复制的区别介绍
2021/04/27 Golang
MySQL优化常用的19种有效方法(推荐!)
2022/03/17 MySQL
Python经常使用的一些内置函数
2022/04/11 Python