Nghiên cứu class scrollingEffect 👌

Đây có source html, js, css thuần

Source

1MB
Open
const MathUtils = {
  map: (x: number, a: number, b: number, c: number, d: number) => ((x - a) * (d - c)) / (b - a) + c,
  lerp: (a: number, b: number, n: number) => (1 - n) * a + n * b,
  getRandomFloat: (min: number, max: number) => parseFloat((Math.random() * (max - min) + min).toFixed(2))
};

Ý nghĩa của phương thức map trong MathUtils

Phương thức map có nhiệm vụ chuyển đổi giá trị x từ một khoảng [a, b] sang một khoảng mới [c, d], đảm bảo tỷ lệ (scale) giữa hai khoảng không đổi.

Ví dụ thực tế để dễ hiểu:

Bài toán:

  • Bạn có một giá trị nhiệt độ đo được trong khoảng [0, 100] °C.

  • Bạn muốn chuyển nó sang khoảng [32, 212] °F (nhiệt độ theo độ F).

➡️ Công thức map sẽ thực hiện điều đó.

Cách hoạt động:

Giả sử:

  • x = 50 (giá trị cần map)

  • a = 0, b = 100 (khoảng cũ)

  • c = 32, d = 212 (khoảng mới)

Thay vào:

✅ Kết quả: 50°C = 122°F (đúng theo công thức chuyển đổi nhiệt độ).

Tóm tắt ngắn gọn:

🔹 map(x, a, b, c, d) ➡️ Chuyển đổi x từ khoảng [a, b] sang [c, d] theo tỷ lệ tương ứng.

Ứng dụng trong lập trình đồ họa, canvas, animation:

  • Chuyển đổi toạ độ giữa các hệ trục (canvas sang window, percent sang pixel).

  • Scale giá trị tốc độ, thời gian, độ mờ opacity từ range logic sang range hiển thị.

  • Map giá trị input (ví dụ mouseX từ [0, windowWidth]) sang giá trị output (ví dụ rotation từ [-45°, +45°]).

Nếu bạn cần các ví dụ cụ thể trong dự án animation, GSAP, hoặc Three.js sắp tới, cho tôi biết để tôi chuẩn bị snippet minh hoạ phù hợp cho workflow học và build của bạn.

Example 1: Áp dụng cho reactjs (áp dụng với background)

Tham số background: true

src\scrollingEffect.ts

src\PreloadExample.tsx

src\App.tsx

public\index.html

src\App.css

package.json

Example 2: Áp dụng cho reactjs (áp dụng với image)

Chú ý: Sử dụng content__item-img thay đổi thành content__item_img vì trong tsx sử dụng biến

Thêm cái này

src\PreloadExample.tsx

src\app.module.css

src\App.tsx

Example 3: Áp dụng cho nexttjs

Đã có bài viết sử dụng rồi.

https://app.gitbook.com/o/-LZtQgrzulP3oOTKQpDc/s/-MGMzApU_kEyI7nsYtZs/nghien-cuu-scrollingimageseffect

Last updated

Was this helpful?