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

Thiết lập animation tốc độ đều (linear) với CSS

Animation timing function: linear

Giá trị linear của animation-timing-function làm animation chạy với **tốc độ không đổi từ đầu đến cuối**. Không gia tốc, không giảm tốc - chuyển động cơ học, đều đặn.

Khi nào dùng linear?

  • Loading spinner, progress bar quay vòng.
  • Animation lặp lại vô hạn (infinite) như marquee, news ticker.
  • Chuyển động cơ học: bánh xe quay, con lắc dao động.
  • Khi cần tính toán chính xác vị trí theo thời gian.

Ví dụ hoàn chỉnh

<!DOCTYPE html>
<html>
<head>
  <style>
    div {
      width: 150px;
      height: 200px;
      position: relative;
      background-color: yellow;
      animation-name: myanim;
      animation-duration: 2s;
      animation-direction: alternate-reverse;
      animation-iteration-count: 3;
    }
    @keyframes myanim {
      from { left: 100px; }
      to { left: 200px; }
    }
    #demo {
      animation-timing-function: linear;
    }
  </style>
</head>
</head>
<body>
  <div id="demo">linear effect</div>
</body>
</html>

So sánh các timing function phổ biến

/* Mặc định - tự nhiên nhất */
animation-timing-function: ease;

/* Tùy chỉnh với cubic-bezier */
animation-timing-function: cubic-bezier(0.42, 0, 0.58, 1); /* ease-in-out */
animation-timing-function: cubic-bezier(0, 0, 0.2, 1);    /* ease-out (Material Design) */
animation-timing-function: cubic-bezier(0.4, 0, 1, 1);    /* ease-in */
animation-timing-function: cubic-bezier(0, 0, 1, 1);      /* linear */

Lưu ý hiệu suất

linear nhẹ nhất về tính toán, nhưng ít "tự nhiên" cho giao diện người dùng. Ưu tiên ease, ease-out cho UX tốt hơn.