让div运动起来 js实现缓动效果

 更新时间:2017年07月06日 09:11:02   作者:风雨后见彩虹  
让div运动起来,这篇文章主要介绍了js实现缓动效果的相关代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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');

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 详解JS事件循环及宏任务微任务的原理

    详解JS事件循环及宏任务微任务的原理

    在js中,我们一般将所有的任务都分成两类,一种是同步任务,另外一种是异步任务。而在异步任务中,又有着更加细致的分类,那就是微任务和宏任务。本文将详细讲解这二者的原理与使用,需要的可以参考一下
    2022-05-05
  • Bootstrap树形组件jqTree的简单封装

    Bootstrap树形组件jqTree的简单封装

    这篇文章主要介绍了Bootstrap树形组件jqTree的简单封装,封装一个稍微完整点的树形组件,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • 小程序跳转H5页面的方法步骤

    小程序跳转H5页面的方法步骤

    这篇文章主要介绍了小程序跳转H5页面的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Echarts Bar横向柱状图实例代码

    Echarts Bar横向柱状图实例代码

    柱状图主要用于表示离散数据的频数,也是一种基础可视化图,这篇文章主要给大家介绍了关于Echarts Bar横向柱状图的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2021-08-08
  • JavaScript中去掉数组中的重复值的实现方法

    JavaScript中去掉数组中的重复值的实现方法

    百度面试时问的一道题目,蛮常规的,但是当时自己的回答挺差劲的。现在总结记录下~
    2011-08-08
  • 原生JavaScript实现Tooltip浮动提示框特效

    原生JavaScript实现Tooltip浮动提示框特效

    这篇文章主要为大家详细介绍了原生JavaScript设计和实现Tooltip浮动提示框特效,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • javascript常用代码段搜集

    javascript常用代码段搜集

    这篇文章主要记录了本人搜集的几段javascript常用代码段,都是平时项目中需要用到的,需要的朋友可以参考下
    2014-12-12
  • JS实现的汉字与Unicode码相互转化功能分析

    JS实现的汉字与Unicode码相互转化功能分析

    这篇文章主要介绍了JS实现的汉字与Unicode码相互转化功能,结合实例形式分析了javascript实现汉字与Unicode码转换相关操作技巧与注意事项,需要的朋友可以参考下
    2018-05-05
  • 标题过长使用javascript按字节截取字符串

    标题过长使用javascript按字节截取字符串

    在网页展示中经常会碰到,标题过长,需要截取字符串,用CSS的实现的话各种兼容问题,下面为大家介绍下javascript如何按字节截取字符串
    2014-04-04
  • JavaScript字符串处理常见操作方法小结

    JavaScript字符串处理常见操作方法小结

    这篇文章主要介绍了JavaScript字符串处理常见操作方法,结合实例形式分析了JavaScript字符串操作常见的转换、截取、分割、获取等相关实现技巧,需要的朋友可以参考下
    2019-11-11

最新评论