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 相关文章推荐
永不消失的title提示代码
Feb 15 Javascript
window.navigate 与 window.location.href 的使用区别介绍
Sep 21 Javascript
Javascript中的方法和匿名方法实例详解
Jun 13 Javascript
jQuery easyui的validatebox校验规则扩展及easyui校验框validatebox用法
Jan 18 Javascript
基于jQuery仿淘宝产品图片放大镜特效
Oct 19 Javascript
Bootstrap轮播插件简单使用方法介绍
Jun 21 Javascript
EditPlus中的正则表达式 实战(4)
Dec 15 Javascript
JavaScript实现简单的双色球(实例讲解)
Jul 31 Javascript
Vue页面骨架屏注入方法
May 13 Javascript
vue使用原生js实现滚动页面跟踪导航高亮的示例代码
Oct 25 Javascript
vue+Vue Router多级侧导航切换路由(页面)的实现代码
Dec 20 Javascript
详解vue-cli+element-ui树形表格(多级表格折腾小计)
Apr 17 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
PHP sprintf()函数用例解析
2011/05/18 PHP
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
PHP实现通过中文字符比率来判断垃圾评论的方法
2014/10/20 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
javascript中返回顶部按钮的实现
2015/05/05 Javascript
JavaScript中0和&quot;&quot;比较引发的问题
2016/05/26 Javascript
jQuery双向列表选择器select版
2016/11/01 Javascript
JS实现简单抖动效果
2017/06/01 Javascript
AngularJS页面带参跳转及参数解析操作示例
2017/06/28 Javascript
nodejs简单读写excel内容的方法示例
2018/03/16 NodeJs
Nodejs中获取当前函数被调用的行数及文件名详解
2018/12/12 NodeJs
自定义Vue组件打包、发布到npm及使用教程
2019/05/22 Javascript
JavaScript函数柯里化实现原理及过程
2020/12/02 Javascript
Vue 实现可视化拖拽页面编辑器
2021/02/01 Vue.js
[01:38]DOTA2第二届亚洲邀请赛中国区预选赛出线战队晋级之路
2017/01/17 DOTA
[58:32]EG vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Django入门使用示例
2017/12/12 Python
微信跳一跳小游戏python脚本
2018/01/05 Python
python实现12306抢票及自动邮件发送提醒付款功能
2018/03/08 Python
python模拟表单提交登录图书馆
2018/04/27 Python
pandas的唯一值、值计数以及成员资格的示例
2018/07/25 Python
python3.6.3安装图文教程 TensorFlow安装配置方法
2020/06/24 Python
对python文件读写的缓冲行为详解
2019/02/13 Python
python 将字符串完成特定的向右移动方法
2019/06/11 Python
在Windows上安装和配置 Jupyter Lab 作为桌面级应用程序教程
2020/04/22 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
美国在线家具网站:GDFStudio
2021/03/13 全球购物
学雷锋演讲稿
2014/03/04 职场文书
初中班主任心得体会
2016/01/07 职场文书
基于PyTorch实现一个简单的CNN图像分类器
2021/05/29 Python
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python
进行数据处理的6个 Python 代码块分享
2022/04/06 Python
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript