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使用andSelf()来包含之前的选择集
May 19 Javascript
用循环或if语句从json中取数据示例
Aug 18 Javascript
使用jquery解析XML的方法
Sep 05 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
Dec 28 Javascript
js实现将json数组显示前台table中
Jan 10 Javascript
深入理解angular2启动项目步骤
Jul 15 Javascript
详解升级react-router 4 踩坑指南
Aug 14 Javascript
详解ionic本地相册、拍照、裁剪、上传(单图完全版)
Oct 10 Javascript
vue.js编译时给生成的文件增加版本号
Sep 17 Javascript
vue-cli中安装方法(图文详细步骤)
Dec 12 Javascript
layui树形菜单动态遍历的例子
Sep 23 Javascript
vue数据字典取键值项目的字典问题
Apr 12 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备份MySQL和网站发送到邮箱实例代码
2013/11/28 PHP
PHP统计目录大小的自定义函数分享
2014/11/18 PHP
php+mysql查询优化简单实例
2015/01/13 PHP
jquery fancybox ie6不显示关闭按钮的解决办法
2013/12/25 Javascript
innerText 使用示例
2014/01/23 Javascript
javascript实现的字符串与十六进制表示字符串相互转换方法
2015/07/17 Javascript
Javascript基于对象三大特性(封装性、继承性、多态性)
2016/01/04 Javascript
Angular2  NgModule 模块详解
2016/10/19 Javascript
JavaScript函数基础详解
2017/02/03 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
文章或博客自动生成章节目录索引(支持三级)的实现代码
2020/05/10 Javascript
Node快速切换版本、版本回退(降级)、版本更新(升级)
2021/01/07 Javascript
跟老齐学Python之print详解
2014/09/28 Python
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
Python获取当前页面内所有链接的四种方法对比分析
2017/08/19 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
DataFrame中去除指定列为空的行方法
2018/04/08 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
Python Pandas批量读取csv文件到dataframe的方法
2018/10/08 Python
tensorflow 环境变量设置方式
2020/02/06 Python
Tensorflow限制CPU个数实例
2020/02/06 Python
Python matplotlib绘制图形实例(包括点,曲线,注释和箭头)
2020/04/17 Python
Jupyter打开图形界面并画出正弦函数图像实例
2020/04/24 Python
python如何查看安装了的模块
2020/06/23 Python
利用CSS3的3D效果制作正方体
2020/03/10 HTML / CSS
aden + anais官方网站:婴儿襁褓、毯子、尿布和服装
2017/06/21 全球购物
网络工程师个人的自我评价范文
2013/10/01 职场文书
个人素质的自我评价分享
2013/12/16 职场文书
服务型党组织建设典型材料
2014/05/07 职场文书
技术负责人任命书
2014/06/05 职场文书
解除劳动合同证明书
2014/09/26 职场文书
酒店客房服务员岗位职责
2015/04/09 职场文书
《圆明园的毁灭》教学反思
2016/02/16 职场文书
MySQL数据库中的锁、解锁以及删除事务
2022/05/06 MySQL
Nginx本地配置SSL访问的实例教程
2022/05/30 Servers