JS 등 속 과 감속 느 린 운동 을 실현 하 는 애니메이션 효과 패키지 예시

본 고 는 JS 가 등 속 과 감속 느 린 운동 을 실현 하 는 애니메이션 효 과 를 실례 로 서술 하 였 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title>www.jb51.net JS  /    </title>
  <style>
    *{
      margin: 0;
      padding: 0;
    }
    .box1 {
      width: 100px;
      height: 100px;
      background-color: pink;
      margin-top: 10px;
      position: relative;
    }
    .box2 {
      width: 100px;
      height: 100px;
      background-color: red;
      margin-top: 10px;
      position: relative;
    }
  </style>
</head>
<body>
<button>    </button>
<button>    </button>
<div class="box1" ></div>
<div class="box2" ></div>
<script>
  //      =      +   。
  //   1.  。 (    )
  //   2.  。 (       )
  //   3.  。 (        ,      )
  //        (    ,    ,    ...)
  //   :
  //   1.          ,          。
  //   2.        ,           。
  var box1 = document.getElementsByClassName("box1")[0];
  var box2 = document.getElementsByClassName("box2")[0];
  var but1 = document.getElementsByTagName("button")[0];
  var but2 = document.getElementsByTagName("button")[1];
  console.log(box1.offsetLeft);
  but1.onclick = function () {
    animate1(box1,200);
  }
  but2.onclick = function () {
    animate2(box2,500);
  }
  //    
  function animate1(ele,target){
    //     ,      
    //            ,     ,              
    //                
    clearInterval(ele.timer);
    //              ,             
    //            ,            
    var speed = target>ele.offsetLeft?3:-3;
    ele.timer = setInterval(function () {
      //                 
      var val = target - ele.offsetLeft;
      ele.style.left = ele.offsetLeft + speed + "px";
      //               ,         
      //        ,           
      if(Math.abs(val)<=Math.abs(speed)){
        ele.style.left = target + "px";
        clearInterval(ele.timer);
      }
    },30)
  }
  //      
  function animate2(ele,target) {
    clearInterval(ele.timer); //       
    ele.timer = setInterval(function () {
      //           (   )           ,     。
      var step = (target-ele.offsetLeft)/10;
      //         (  0    ,  0    )
      step = step>0?Math.ceil(step):Math.floor(step);
      //    :      =      +   
      console.log(step);
      ele.style.left = ele.offsetLeft + step + "px";
      //           
      if(Math.abs(target-ele.offsetLeft)<=Math.abs(step)){
        ele.style.left = target + "px"; //        
        clearInterval(ele.timer);
      }
    },30);
  }
</script>
</body>
</html>
온라인 HTML/CSS/JavaScript 코드 실행 도 구 를 사용 합 니 다http://tools.jb51.net/code/HtmlJsRun다음 과 같은 실행 효 과 를 얻 을 수 있 습 니 다.

자 바스 크 립 트 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.,,,,,,,,,,,,
본 고 에서 말 한 것 이 여러분 의 자 바스 크 립 트 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기