webAPI

移动动画的封装之四:解决只能移动一个元素的问题

2019-05-13  本文已影响0人  椋椋夜色

<!DOCTYPE html>
<html lang="zh-CN">

<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title> 移动动画的封装之四:解决只能移动一个元素的问题 </title>

  <style>
      div {
          width: 100px;
          height: 100px;
          background-color: #f00;
          position: absolute;
          margin-top: 10px;
      }

      .blue {
          background-color: #00f;
          top: 150px;
      }
  </style>
</head>

<body>
  <input type="button" value="移动红色到1200" id="btn1">
  <input type="button" value="移动蓝色到800" id="btn2">
  <div class="red"></div>
  <div class="blue"></div>

  <!-- 

      解决只能移动一个元素的问题

      解决办法:把不能写死的数据当参数传进来
   -->
  <script>
      // 找到元素
      var red = document.querySelector('.red');
      var blue = document.querySelector('.blue');

      var timerID;
      function ben (add1,add2){
            // 先清除上一个计时器
          clearInterval(timerID);
           // 保证不管点多少次,只有一个计时器
          timerID = setInterval(function(){
               // 获取一下当前位置
              var add = add1.offsetLeft;
               // 要用距离 判断是否大于10,大于就走,不大于就直接到目的地
              if(Math.abs(add2 - add) > 10 ) {
                  // 当前位置往前走1步(1步为10像素)
                  add += add2 > add ? 10 : -10;
                  add1.style.left = add + "px";
              }else {
                  //距离不够走一步,就直接到目的地
                  add1.style.left = add2 + "px";
              } 
               // 如果到了目的地就停止
              if(add == add2) {
                  clearInterval(timerID);
              }

          },20 )
      }
      document.getElementById('btn1').onclick = function() {
          ben(red,1200);
      }
      document.getElementById('btn2').onclick = function() {
          ben(blue,800);
      }
      
      

  </script>

</body>

</html>

上一篇下一篇

猜你喜欢

热点阅读