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 相关文章推荐
js实现的仿新浪微博完美的时间组件升级版
Dec 20 Javascript
node.js中的fs.rename方法使用说明
Dec 16 Javascript
js实现兼容IE和FF的上下层的移动
May 04 Javascript
Jquery $when done then的用法详解
May 20 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
Jan 12 Javascript
微信小程序实战之顶部导航栏(选项卡)(1)
Jun 19 Javascript
如何快速解决JS或Jquery ajax异步跨域的问题
Jan 08 jQuery
Vue 实时监听窗口变化 windowresize的两种方法
Nov 06 Javascript
详解基于node.js的脚手架工具开发经历
Jan 28 Javascript
js+html5 canvas实现ps钢笔抠图
Apr 28 Javascript
百度小程序自定义通用toast组件
Jul 17 Javascript
javascript实现前端input密码输入强度验证
Jun 24 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
discuz7 phpMysql操作类
2009/06/21 PHP
php加密算法之实现可逆加密算法和解密分享
2014/01/21 PHP
简单PHP会话(session)说明介绍
2016/08/21 PHP
php实现登陆模块功能示例
2016/10/20 PHP
关于document.cookie的使用javascript
2010/10/29 Javascript
javascript 闭包疑问
2010/12/30 Javascript
通过Javascript读取本地Excel文件内容的代码示例
2014/04/08 Javascript
用unescape反编码得出汉字示例
2014/04/24 Javascript
JavaScript中利用各种循环进行遍历的方式总结
2015/11/10 Javascript
jquery 删除节点 添加节点 找兄弟节点的简单实现
2016/12/07 Javascript
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
JS如何获取地址栏的参数实例讲解
2018/10/06 Javascript
Node.js操作系统OS模块用法分析
2019/01/04 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
2019/04/02 Javascript
浅谈webpack构建工具配置和常用插件总结
2020/05/11 Javascript
javascript实现随机抽奖功能
2020/12/30 Javascript
Python常用的日期时间处理方法示例
2015/02/08 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
Python使用numpy模块创建数组操作示例
2018/06/20 Python
APIStar:一个专为Python3设计的API框架
2018/09/26 Python
django orm 通过related_name反向查询的方法
2018/12/15 Python
Python如何实现线程间通信
2020/07/30 Python
python编写实现抽奖器
2020/09/10 Python
Python实现石头剪刀布游戏
2021/01/20 Python
pycharm 使用tab跳出正在编辑的括号(){}{}等问题
2021/02/26 Python
掌上明珠Java程序员面试总结
2016/02/23 面试题
HR喜欢的自荐信格式
2013/10/08 职场文书
车间统计员岗位职责
2014/01/05 职场文书
幼儿园亲子活动方案
2014/01/29 职场文书
伊索寓言教学反思
2014/05/01 职场文书
群众路线党员个人整改措施
2014/10/27 职场文书
如何写一份成功的商业计划书
2019/06/25 职场文书
CSS实现隐藏搜索框功能(动画正反向序列)
2021/07/21 HTML / CSS
Spring-cloud Config Server的3种配置方式
2021/09/25 Java/Android
详细聊聊关于Mysql联合查询的那些事儿
2021/10/24 MySQL
js前端设计模式优化50%表单校验代码示例
2022/06/21 Javascript