Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Cách đặt đường cong tốc độ chuyển động (transitionTimingFunction) bằng JavaScript

Thuộc tính transitionTimingFunction xác định đường cong tốc độ (easing) của hiệu ứng transition. Giá trị phổ biến: ease, linear, ease-in, ease-out, ease-in-out, cubic-bezier(), steps().

Ví dụ minh họa

Mã sau đặt timing function = ease-in cho div2 khi nhấn nút:

<!DOCTYPE html>
<html>
<head>
  <style>
    #div1 {
      position: relative;
      margin: 10px;
      height: 300px;
      width: 400px;
      padding: 20px;
      border: 2px solid blue;
    }
    #div2 {
      padding: 80px;
      position: absolute;
      border: 2px solid blue;
      background-color: yellow;
      transform: rotateY(45deg);
      transition: all 5s;
    }
    #div2:hover {
      background-color: orange;
      width: 50px;
      height: 50px;
      padding: 100px;
      border-radius: 50px;
    }
  </style>
</head>
<body>
  <p>Di chuột qua DIV2</p>
  <button onclick="setTimingFunction()">Đặt Timing Function</button>
  <div id="div1">DIV1
    <div id="div2">DIV2</div>
  </div>
  <script>
    function setTimingFunction() {
      document.getElementById("div2").style.transitionTimingFunction = "ease-in";
      /* Chậm lúc đầu, nhanh dần về cuối */
    }
  </script>
</body>
</html>

Các hàm timing phổ biến

Giá trị Đặc điểm Phù hợp cho
easeChậm đầu, nhanh giữa, chậm cuối (mặc định)UI chung, tự nhiên
linearTốc độ đềuLoading bar, quay liên tục
ease-inChậm đầu, nhanh dầnPhần tử xuất hiện (enter)
ease-outNhanh đầu, chậm dầnPhần tử biến mất (exit)
ease-in-outChậm đầu, nhanh giữa, chậm cuốiChuyển cảnh, modal
cubic-bezier(n,n,n,n)Tùy chỉnh đường cong BezierHiệu ứng đặc thù, brand motion
steps(n, start|end)Nhảy theo bước (không mượt)Sprite animation, tick clock

Mẹo: Dùng cubic-bezier.com để thiết kế easing tùy chỉnh. Kết hợp với transitionDelay để tạo chuỗi animation phức tạp.