JavaScript实现缓动动画


Posted in Javascript onNovember 25, 2020

JavaScript原生定时器实现动画的缓动效果,供大家参考,具体内容如下

原理很简单通过定时器修改边距达到移动动画效果

实现速度的变化

缓动必然移动速度会有变化,这里需要用到一个小公式或者说算法?

移动单位 = (指定移动位置边距 - obj.offsetLeft) / 10;
var step = (ydpx - obj.offsetLeft) / 10;

有一个细节需要注意下:

移动的步数应该去掉小数,否者因为除法的原因无法移动到指定位置,会有一些差距
当step小于0对应的是向左移动舍去小数如:1.2 为1
大于0向右移动,进位,如:1.2为2
这应该是个数学问题**

之后代码的实现就简单多了:

//ydjl:移动到指定位置 (obj.offsetLeft)
function animate(obj,ydpx) {
 //清除定时器 防止每一次调用都产生一个定时器,叠加导致问题(速度变快)
 clearInterval(obj.timer); 
 obj.timer=setInterval(function () {
  var step = (ydpx - obj.offsetLeft) / 10; //移动距离
  //取整
  step = step>0 ? Math.ceil(step) : Math.floor(step);
  //判断是否移动到指定位置
  if(obj.offsetLeft == ydpx)
  {
  //清除定时器,停止移动
   clearInterval(obj.timer);
  }
  //修改left实现移动
  obj.style.left = obj.offsetLeft + step + 'px';

 },15)//移动间隔设置
}

下面是演示:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>Title</title>
 <style>
  .boks{
   position: absolute;
   top: 300px;
   left:0;
   width: 100px;
   height: 100px;
   background-color: #ff0011;
  }
 </style>

</head>
<body>
<button class="yd500">移动500px</button>
<button class="yd800">移动800px</button>
<div class="boks">hezi</div>
</body>
<script>
 function animate(obj,ydpx) {
  //清除定时器
  clearInterval(obj.timer);
  obj.timer=setInterval(function () {
   var step = (ydpx - obj.offsetLeft) / 10;
   step = step>0 ? Math.ceil(step) : Math.floor(step);
    if(obj.offsetLeft == ydpx)
    {
     clearInterval(obj.timer);
    }
   obj.style.left = obj.offsetLeft + step + 'px';

  },15);
 }
 var yd500 = document.querySelector(".yd500");
 var yd800 = document.querySelector(".yd800");
 //盒子
 var boks = document.querySelector(".boks");

 yd500.addEventListener('click', function() {
  // 调用函数
  animate(boks, 500); //传递要移动的对象 和 移动位置
 })

 yd800.addEventListener('click', function() {
  // 调用函数
  animate(boks, 800); //传递要移动的对象 和 移动位置
 })
</script>
</html>

萌新小白的学习记录

JavaScript实现缓动动画

JavaScript实现缓动动画

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

Javascript 相关文章推荐
js+div实现图片滚动效果代码
Feb 10 Javascript
jQuery实现鼠标经过图片变亮其他变暗效果
May 08 Javascript
avalon js实现仿微博拖动图片排序
Aug 14 Javascript
js实现的早期滑动门菜单效果代码
Aug 27 Javascript
html+js+highcharts绘制圆饼图表的简单实例
Aug 04 Javascript
基于jQuery实现歌词滚动版音乐播放器的代码
Sep 17 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
Nov 16 Javascript
Bootstrap CSS布局之表格
Dec 17 Javascript
vue2.0 中#$emit,$on的使用详解
Jun 07 Javascript
SVG实现时钟效果
Jul 17 Javascript
微信小程序new Date()方法失效问题解决方法
Jul 29 Javascript
Js实现复选框的全选、全不选反选功能代码实例
Feb 28 Javascript
Vue3配置axios跨域实现过程解析
Nov 25 #Vue.js
Vue使用Element实现增删改查+打包的步骤
Nov 25 #Vue.js
JavaScript实现网页动态生成表格
Nov 25 #Javascript
vue + el-form 实现的多层循环表单验证
Nov 25 #Vue.js
JavaScript实现HTML导航栏下拉菜单
Nov 25 #Javascript
vue打开其他项目页面并传入数据详解
Nov 25 #Vue.js
Vue开发中常见的套路和技巧总结
Nov 24 #Vue.js
You might like
laravel 5 实现模板主题功能
2015/03/02 PHP
WordPress主题制作之模板文件的引入方法
2015/12/28 PHP
PHP模糊查询技术实例分析【附源码下载】
2019/03/07 PHP
Ext grid 添加右击菜单
2009/11/26 Javascript
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
2013/01/07 Javascript
js 定时器setTimeout无法调用局部变量的解决办法
2013/11/28 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
jQuery的cookie插件实现保存用户登陆信息
2014/04/15 Javascript
JS的事件绑定深入认识
2014/06/26 Javascript
js propertychange和oninput事件
2014/09/28 Javascript
JavaScript数组Array对象增加和删除元素方法总结
2015/01/20 Javascript
JQuery+CSS实现图片上放置按钮的方法
2015/05/29 Javascript
js正则表达式中exec用法实例
2015/07/23 Javascript
js模仿java的Map集合详解
2016/01/06 Javascript
完美解决JS文件页面加载时的阻塞问题
2016/12/18 Javascript
jQuery插件FusionWidgets实现的Cylinder图效果示例【附demo源码】
2017/03/23 jQuery
利用JS实现简单的瀑布流加载图片效果
2017/04/22 Javascript
使用vue框架 Ajax获取数据列表并用BootStrap显示出来
2017/04/24 Javascript
微信小程序 动态传参实例详解
2017/04/27 Javascript
使用Vue做一个简单的todo应用的三种方式的示例代码
2018/10/20 Javascript
nodejs微信开发之自动回复的实现
2019/03/17 NodeJs
微信小程序 确认框的实现(附代码)
2019/07/23 Javascript
微信小程序返回箭头跳转到指定页面实例解析
2019/10/08 Javascript
[54:17]DOTA2-DPC中国联赛定级赛 RNG vs iG BO3第二场 1月10日
2021/03/11 DOTA
Python help()函数用法详解
2014/03/11 Python
python根据出生年份简单计算生肖的方法
2015/03/27 Python
解决sublime+python3无法输出中文的问题
2018/12/12 Python
Python extract及contains方法代码实例
2020/09/11 Python
英国汽车零件购物网站:GSF Car Parts
2019/05/23 全球购物
团工委书记自荐书范文
2013/12/17 职场文书
教师中国梦演讲稿
2014/04/23 职场文书
新闻编辑专业自荐信
2014/07/02 职场文书
竞选班干部演讲稿500字
2014/08/20 职场文书
2015年社区国庆节活动总结
2015/07/30 职场文书
2016年学校党支部公开承诺书
2016/03/25 职场文书