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 相关文章推荐
同一个表单 根据要求递交到不同页面的实现方法小结
Aug 05 Javascript
jquery实现点击文字可编辑并修改保存至数据库
Apr 15 Javascript
JS实现控制表格行内容垂直对齐的方法
Mar 30 Javascript
详解WordPress开发中get_current_screen()函数的使用
Jan 11 Javascript
webpack+vue.js实现组件化详解
Oct 12 Javascript
leaflet的开发入门教程
Nov 17 Javascript
BootStrap Fileinput初始化时的一些参数
Dec 30 Javascript
Angular实现图片裁剪工具ngImgCrop实践
Aug 17 Javascript
JS实现对json对象排序并删除id相同项功能示例
Apr 18 Javascript
小程序实现五星点评效果
Nov 03 Javascript
JavaScript或jQuery 获取option value值方法解析
May 12 jQuery
如何在面试中手写出javascript节流和防抖函数
Oct 22 Javascript
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
laravel 实现设置时区的简单方法
2019/10/10 PHP
jquery lazyload延迟加载技术的实现原理分析
2011/01/24 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
用NODE.JS中的流编写工具是要注意的事项
2016/03/01 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
微信小程序 rpx 尺寸单位详细介绍
2016/10/13 Javascript
基于slideout.js实现移动端侧边栏滑动特效
2016/11/28 Javascript
jquery二级目录选中当前页的css样式
2016/12/08 Javascript
vue.js实现请求数据的方法示例
2017/02/07 Javascript
jQuery EasyUI Panel面板组件使用详解
2017/02/28 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
深入理解ES6之数据解构的用法
2018/01/13 Javascript
jQuery实现动态加载select下拉列表项功能示例
2018/05/31 jQuery
vue axios请求频繁时取消上一次请求的方法
2018/11/10 Javascript
vue 实现input表单元素的disabled示例
2019/10/28 Javascript
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
浅谈Python类的__getitem__和__setitem__特殊方法
2016/12/25 Python
python django 增删改查操作 数据库Mysql
2017/07/27 Python
django富文本编辑器的实现示例
2019/04/10 Python
python字符串格式化方式解析
2019/10/19 Python
Python API自动化框架总结
2019/11/12 Python
Python内置加密模块用法解析
2019/11/25 Python
pyinstaller 3.6版本通过pip安装失败的解决办法(推荐)
2020/01/18 Python
python 双循环遍历list 变量判断代码
2020/05/04 Python
python属于解释型语言么
2020/06/15 Python
基于Python的一个自动录入表格的小程序
2020/08/05 Python
美国在线医疗分销商:MedEx Supply
2020/02/04 全球购物
会计电算化专业毕业生自荐信
2013/12/20 职场文书
公司担保书格式范文
2014/05/12 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
具结保证书范本
2015/05/11 职场文书
Nginx反向代理及负载均衡如何实现(基于linux)
2021/03/31 Servers
多属性、多分类MySQL模式设计
2021/04/05 MySQL
pandas 实现将NaN转换为None
2021/05/14 Python
详细了解java监听器和过滤器
2021/07/09 Java/Android