JS div匀速移动动画与变速移动动画代码实例

 更新时间:2019年03月26日 08:43:34   作者:夏沐_lk  
这篇文章主要介绍了JS div匀速移动动画与变速移动动画,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

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匀速移动动画与变速移动动画详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • ES6变量赋值和基本数据类型详解

    ES6变量赋值和基本数据类型详解

    本文详细讲解了ES6变量赋值和基本数据类型,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • javascript操作符

    javascript操作符"!~"详解

    这篇文章主要详细介绍了javascript操作符"!~",最基本也最容易忽略的东西,混了几年连基本都没了,被人问到得贻笑大方。
    2015-02-02
  • uniapp返回上一页执行上一页方法解决方案

    uniapp返回上一页执行上一页方法解决方案

    这篇文章主要给大家介绍了关于uniapp返回上一页执行上一页方法解决方案,在UniApp中可以通过uni.navigateBack()方法返回上一个页面,文中通过代码示例介绍的非常详细,需要的朋友可以参考下
    2023-08-08
  • JavaScript中Cookies的相关使用教程

    JavaScript中Cookies的相关使用教程

    这篇文章主要介绍了JavaScript中Cookies的相关使用教程,包括Cookies的存储和删除等操作方法,需要的朋友可以参考下
    2015-06-06
  • javascript数组里的27个方法总合详解

    javascript数组里的27个方法总合详解

    这篇文章主要为大家详细介绍了javascript数组里的方法27个总合,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-02-02
  • JavaScript设计模式开发中组合模式的使用教程

    JavaScript设计模式开发中组合模式的使用教程

    组合模式可以理解为树状结构,因此组合模式适合对大批对象的操作,特别是层次结构分明的,下面我们就来看看号称面向对象的JavaScript设计模式开发中组合模式的使用教程
    2016-05-05
  • javascript的BOM

    javascript的BOM

    BOM是浏览器的窗口对象,提供了很多窗口处理的API。在webapp框架越来越多的情况下,需要我们在同一窗口处理不同页面、不同的ajax数据,则需要我们熟悉BOM的内容。
    2016-05-05
  • 详解用JS添加和删除class类名

    详解用JS添加和删除class类名

    这篇文章主要介绍了用JS添加和删除class类名,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • js hover 定时器(实例代码)

    js hover 定时器(实例代码)

    下面小编就为大家分享一段js hover 定时器的简单实例。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-11-11
  • 一个简单的网站访问JS计数器 刷新1次加1次访问

    一个简单的网站访问JS计数器 刷新1次加1次访问

    一个简单的网站访问JS计数器,一般就是学习下原来,不建议使用,现在cnzz或百度统计多试不错的
    2012-09-09

最新评论