JS div匀速移动动画与变速移动动画代码实例


Posted in Javascript onMarch 26, 2019

1.匀速移动代码

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>title</title>
 <style>
  * {
   margin: 0;
   padding: 0;
  }
 
  div {
   margin-top: 20px;
   width: 200px;
   height: 100px;
   background-color: green;
   position: absolute;
   left: 0;
   top: 0;
  }
 </style>
</head>
<body>
<input type="button" value="移动到400px" id="btn1"/>
<input type="button" value="移动到800px" id="btn2"/>
<div id="dv">
 <script src="common.js"></script>
 <script>
  //点击按钮移动div
 
  my$("btn1").onclick = function () {
   animate(my$("dv"), 400);
  };
  my$("btn2").onclick = function () {
   animate(my$("dv"), 800);
  };
 
  //匀速动画
  function animate(element, target) {
   //清理定时器
   clearInterval(element.timeId);
   element.timeId = setInterval(function () {
    //获取元素的当前位置
    var current = element.offsetLeft;
    //移动的步数
    var step = 10;
    step = target > current ? step : -step;
    current += step;
    if (Math.abs(current - target) > Math.abs(step)) {
     element.style.left = current + "px";
    } else {
     clearInterval(element.timeId);
     element.style.left = target + "px";
    }
   }, 20);
  }
 </script>
</div>
</body>
</html>

2.变速移动代码

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>title</title>
 <style>
  * {
   margin: 0;
   padding: 0;
  }
 
  div {
   margin-top: 20px;
   width: 200px;
   height: 100px;
   background-color: green;
   position: absolute;
   left: 0;
   top: 0;
  }
 </style>
</head>
<body>
<input type="button" value="移动到400px" id="btn1"/>
<input type="button" value="移动到800px" id="btn2"/>
<div id="dv">
 <script src="common.js"></script>
 <script>
  //点击按钮移动div
 
  my$("btn1").onclick = function () {
   animate(my$("dv"), 400);
  };
  my$("btn2").onclick = function () {
   animate(my$("dv"), 800);
  };
 
  //变速动画
  function animate(element, target) {
   //清理定时器
   clearInterval(element.timeId);
   element.timeId = setInterval(function () {
    //获取元素的当前位置
    var current = element.offsetLeft;
    //移动的步数
    var step = (target-current)/10;
    step = step>0?Math.ceil(step):Math.floor(step);
    current += step;
    element.style.left = current + "px";
    if(current==target) {
     //清理定时器
     clearInterval(element.timeId);
    }
    
   }, 20);
  }
 </script>
</div>
</body>
</html>

common.js

/**
 * 获取指定标签对象
 * @param id 标签的id属性值
 * @returns {Element}根据id属性值返回指定标签对象
 */
function my$(id) {
  return document.getElementById(id);
}

以上所述是小编给大家介绍的JS div匀速移动动画与变速移动动画详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
jQuery Ajax之load()方法
Oct 12 Javascript
JavaScript学习笔记(一) js基本语法
Oct 25 Javascript
DOM2非标准但却支持很好的几个属性小结
Jan 21 Javascript
通过一段代码简单说js中的this的使用
Jul 23 Javascript
JS对HTML标签select的获取、添加、删除操作
Oct 17 Javascript
巧用replace将文字表情替换为图片
Apr 17 Javascript
JavaScript代码里的判断小结
Aug 22 Javascript
彻底学会Angular.js中的transclusion
Mar 12 Javascript
利用vue.js把静态json绑定bootstrap的table方法
Aug 28 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
Oct 14 Javascript
vue实现PC端分辨率适配操作
Aug 03 Javascript
Vue CLI中模式与环境变量的深入详解
May 30 Vue.js
vue cli3.0结合echarts3.0与地图的使用方法示例
Mar 26 #Javascript
详解用JS添加和删除class类名
Mar 25 #Javascript
详解javascript设计模式三:代理模式
Mar 25 #Javascript
js实现鼠标拖拽缩放div实例代码
Mar 25 #Javascript
Vue框架下引入ActiveX控件的问题解决
Mar 25 #Javascript
9102了,你还不会移动端真机调试吗
Mar 25 #Javascript
详解原生JS回到顶部
Mar 25 #Javascript
You might like
一篇有意思的技术文章php介绍篇
2010/10/26 PHP
PHP设计模式之责任链模式的深入解析
2013/06/13 PHP
php给数组赋值的实例方法
2019/09/26 PHP
Javascript代码混淆综合解决方案-Javascript在线混淆器
2006/12/18 Javascript
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
jquery 得到当前页面高度和宽度的两个函数
2010/02/21 Javascript
javascript与CSS复习(二)
2010/06/29 Javascript
window.addEventListener来解决让一个js事件执行多个函数
2012/12/26 Javascript
JS实现点击图片在当前页面放大并可关闭的漂亮效果
2013/10/18 Javascript
JavaScript获取function所有参数名的方法
2015/10/30 Javascript
jQuery实现文本框邮箱输入自动补全效果
2015/11/17 Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
2016/09/09 Javascript
详解vue-cli开发环境跨域问题解决方案
2017/06/06 Javascript
用POSTMAN发送JSON格式的POST请求示例
2018/09/04 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
JavaScript常用内置对象用法分析
2019/07/09 Javascript
vue 判断页面是首次进入还是再次刷新的实例
2020/11/05 Javascript
python中wx将图标显示在右下角的脚本代码
2013/03/08 Python
Python中实现三目运算的方法
2015/06/21 Python
Python读取指定目录下指定后缀文件并保存为docx
2017/04/23 Python
python 文件转成16进制数组的实例
2018/07/09 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
pyshp创建shp点文件的方法
2018/12/31 Python
详解pandas数据合并与重塑(pd.concat篇)
2019/07/09 Python
Django为窗体加上防机器人的验证码功能过程解析
2019/08/14 Python
python 错误处理 assert详解
2020/04/20 Python
Python中无限循环需要什么条件
2020/05/27 Python
印度低票价航空公司:GoAir
2017/10/11 全球购物
英国玛莎百货新西兰:Marks & Spencer New Zealand
2019/07/21 全球购物
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
SQL Server里面什么样的视图才能创建索引
2015/04/17 面试题
《白鹅》教学反思
2014/04/13 职场文书
小学生爱国演讲稿
2014/04/25 职场文书
化工生产实习心得体会
2016/01/22 职场文书
java固定大小队列的几种实现方式详解
2021/07/15 Java/Android
《游戏王:大师决斗》新活动上线 若无符合卡组可免费租用
2022/04/13 其他游戏