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 相关文章推荐
懒就要懒到底——鼠标自动点击(含时间判断)
Feb 20 Javascript
js当一个变量为函数时 应该注意的一点细节小结
Dec 29 Javascript
jquery validate在ie8下的bug解决方法
Nov 13 Javascript
zeroclipboard 单个复制按钮和多个复制按钮的实现方法
Jun 14 Javascript
深入探讨javascript中的数据类型
Mar 04 Javascript
jQuery关键词说明插件cluetip使用指南
Apr 21 Javascript
HTML5实现留言和回复页面样式
Jul 22 Javascript
Javascript基础_简单比较undefined和null 值
Jun 14 Javascript
详解vue axios二次封装
Jul 22 Javascript
一步一步的了解webpack4的splitChunk插件(小结)
Sep 17 Javascript
layui框架与SSM前后台交互的方法
Sep 12 Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
Oct 12 jQuery
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
ftp类(example.php)
2006/10/09 PHP
php登陆页的密码处理方式分享
2013/10/14 PHP
PHP采用自定义函数实现遍历目录下所有文件的方法
2014/08/19 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
JavaScript中SQL语句的应用实现
2010/05/04 Javascript
JavaScript时间转换处理函数
2015/04/14 Javascript
JS+DIV实现鼠标划过切换层效果的方法
2015/05/25 Javascript
jquery实现滑动特效代码
2015/08/10 Javascript
javascript跨域的方法汇总
2015/10/23 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
Node.js查找当前目录下文件夹实例代码
2017/03/07 Javascript
jQuery插件HighCharts实现气泡图效果示例【附demo源码】
2017/03/13 Javascript
Bootstrap 过渡效果Transition 模态框(Modal)
2017/03/17 Javascript
vue2.0构建单页应用最佳实战
2017/04/01 Javascript
JS字符串按逗号和回车分隔的方法
2017/04/25 Javascript
Ext JS 实现建议词模糊动态搜索功能
2017/05/13 Javascript
JS仿QQ好友列表展开、收缩功能(第二篇)
2017/07/07 Javascript
[02:59]2014DOTA2西雅图国际邀请赛 圆满落幕中国夺冠
2014/07/23 DOTA
python检测服务器是否正常
2014/02/16 Python
Python的math模块中的常用数学函数整理
2016/02/04 Python
浅析python打包工具distutils、setuptools
2018/04/20 Python
python+flask实现API的方法
2018/11/21 Python
selenium+python自动化测试之环境搭建
2019/01/23 Python
Python中一般处理中文的几种方法
2019/03/06 Python
Django分页功能的实现代码详解
2019/07/29 Python
大数据分析用java还是Python
2020/07/06 Python
Python实现Canny及Hough算法代码实例解析
2020/08/06 Python
python实现图片转字符画的完整代码
2021/02/21 Python
CSS3移动端vw+rem不依赖JS实现响应式布局的方法
2019/01/23 HTML / CSS
Free People中国官网:波西米亚风格女装服饰
2016/08/30 全球购物
节水倡议书范文
2014/04/15 职场文书
党员国庆节演讲稿范文2014
2014/09/21 职场文书
关于法制教育的宣传语
2015/07/13 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书
一文搞懂Golang 时间和日期相关函数
2021/12/06 Golang
Oracle锁表解决方法的详细记录
2022/06/05 Oracle