Nhắc đến việc tạo ra những trải nghiệm trực quan và hấp dẫn trên các trang web và ứng dụng, không thể bỏ qua vai trò quan trọng của Scroll-Triggered Animation. Đối với những người thiết kế, việc sử dụng các thư viện tạo hiệu ứng hoạt hình dựa trên cuộn trang đã trở thành một cách thức hiệu quả để tạo điểm nhấn, thể hiện sự sáng tạo và tạo sự tương tác độc đáo. Trong bài viết này, chúng ta sẽ khám phá những thư viện Scroll-Triggered Animation tốt nhất mà các nhà thiết kế nên có trong tay để nâng cao chất lượng của công việc sáng tạo.
Giới thiệu
Scroll-triggered animations là gì?
Scroll-triggered animations, còn được gọi là hiệu ứng cuộn trang, là một loại hiệu ứng trang web xảy ra khi bạn cuộn trang web. Những animation này được kích hoạt bằng cách cuộn và có thể được kích hoạt tại các vị trí cuộn cụ thể. Khác với cuộn liên tục, scroll-triggered animations thực thi độc lập và có thể xảy ra một lần hoặc đặt lại khi phần tử được cuộn ra khỏi tầm nhìn và quay trở lại.
Cần phải sử dụng thư viện để tạo scroll-triggered animations không?
Mặc dù có nhiều thư viện scroll animation có sẵn, nhưng không cần thiết phải sử dụng chúng để triển khai scroll-triggered animations. Hoàn toàn có thể tạo những animation này mà không phải dựa vào một thư viện nào. Tuy nhiên, trừ khi bạn có yêu cầu cụ thể mà một thư viện không thể đáp ứng, hoặc nếu bạn có ràng buộc về hiệu suất nghiêm ngặt, tôi thường khuyến nghị sử dụng một thư viện. Nhiều thư viện có trọng lượng nhẹ; nếu bạn xây dựng animation từ đầu, bạn có thể sẽ tạo lại hầu hết các chức năng của thư viện.
Vậy, thư viện nào là lựa chọn tốt nhất?
Không có một thư viện “tốt nhất” duy nhất; sự lựa chọn phụ thuộc vào nhu cầu cụ thể của bạn. Thư viện tốt nhất cho bạn sẽ phụ thuộc vào các yếu tố như bạn muốn bắt đầu nhanh chóng như thế nào, các tính năng mong muốn, liệu bạn thích sử dụng các animation tích hợp sẵn, hay nếu bạn cần tạo các animation dựa trên cuộn trang. Mục đích của hướng dẫn này là giới thiệu các tùy chọn có sẵn một cách rõ ràng và dễ hiểu, để bạn có thể dễ dàng chọn thư viện phù hợp nhất cho dự án của mình.
Tất cả các thư viện được đề cập trong hướng dẫn này có thể được sử dụng để tạo scroll-triggered animations. Tuy nhiên, tôi sẽ đề xuất những thư viện tôi thấy đặc biệt hữu ích. Bây giờ, hãy cùng khám phá các thư viện.
Top 1: Sal JS và AOS JS
SAL JS – Thư viện nhẹ nhất!
Sal là một thư viện có những điểm tương đồng với thư viện phổ biến hơn là AOS (cũng đạt điểm 5 về sự dễ sử dụng). Tuy nhiên, Sal được xây dựng trên nguyên tắc của trình quan sát giao lộ, nhận biết các phần tử trong khung nhìn. Sự lựa chọn thiết kế này góp phần làm cho kích thước tổng thể của Sal chỉ khoảng 1.3kb, tạo nên sự gọn nhẹ so với các lựa chọn khác.

Với Sal, bạn có thể dễ dàng áp dụng các chuyển tiếp trực tiếp cho các phần tử HTML bằng cách sử dụng thuộc tính dữ liệu. Phương pháp này cho phép tích hợp nhanh chóng và thuận tiện vào trang web của bạn. Sal chủ yếu dựa vào chuyển tiếp CSS thay vì các animation CSS, khác với một số thư viện. Mặc dù hiệu ứng hình ảnh có thể trông giống nhau, nhưng điều này có thể là một hạn chế đối với những người muốn triển khai các animation phức tạp hơn.
Tóm lại, Sal là lựa chọn tối ưu để tích hợp những scroll-triggered animations đơn giản vào dự án của bạn.
AOS JS – khá nhẹ và nhiều chức năng
AOS là một thư viện đáng tin cậy với một bộ sưu tập đồ sộ các animation được xây dựng trước. Giống như Sal, những animation này được áp dụng bằng cách sử dụng thuộc tính dữ liệu và cung cấp các tùy chọn tùy chỉnh rộng rãi.
AOS sử dụng sự kiện cuộn trang làm công nghệ cơ bản, nhưng nó hoạt động đặc biệt hiệu quả về hiệu suất. Nó đặc biệt thân thiện với người dùng, đặc biệt là đối với những người không quen với JavaScript.

Một tính năng nổi bật của AOS, làm nó nổi bật so với hầu hết các thư viện khác, là khả năng sử dụng một phần tử làm kích hoạt cho việc tạo animation cho khía cạnh khác. Ví dụ, bạn có thể cấu hình Element 2 để xuất hiện mờ dần khi Element 1 đạt đỉnh trang. Chức năng này có thể được thiết lập trực tiếp trong mã HTML, loại bỏ nhu cầu viết mã JavaScript.
So với Sal, AOS cung cấp một loạt tính năng rộng hơn trong khi vẫn duy trì cùng mức độ sử dụng. Tuy nhiên, điều này đi kèm với kích thước tệp JavaScript lớn hơn một chút và ảnh hưởng không đáng kể đến hiệu suất do việc sử dụng sự kiện cuộn trang, thường không thể nhận thấy được.
| Sal JS | AOS JS | |
|---|---|---|
| Công dụng | 5/5 | 5/5 |
| Kích cỡ | 1.3 kb | 4.5 kb |
| Phụ thuộc | Không | Không |
Top 2: Emergence.js và ScrollReveal
Emergence.js
Emergence là một thư viện animation linh hoạt cho phép bạn tạo ra các animation tùy chỉnh dựa trên sự hiển thị của các phần tử trong khung nhìn. Mặc dù có tính linh hoạt, Emergence vẫn đáng kể thân thiện với người dùng và có khả năng tùy chỉnh cao. Nếu bạn muốn không dựa vào các animation được xây dựng sẵn và mong muốn hoàn toàn kiểm soát hành vi của các phần tử khi chúng đạt đến điểm kích hoạt, chẳng hạn như khi chúng nhập vào khung nhìn, thì Emergence là một lựa chọn tuyệt vời.

Mặc dù Emergence cho phép bạn xây dựng animation từ đầu, nó vẫn cung cấp tiện ích của việc sử dụng thuộc tính dữ liệu để gắn thẻ cho các phần tử cần được nhận diện bởi mã script. Điều này có nghĩa bạn có thể sử dụng Emergence mà không cần viết thêm mã JavaScript ngoài việc khởi tạo mã script. Tiếp cận tinh vi này đảm bảo việc triển khai Emergence nhanh chóng và dễ dàng.
Như một điểm bonus, Emergence cung cấp các cuộc gọi lại (callbacks) khi một phần tử được kích hoạt, cho phép bạn tích hợp tùy chỉnh bổ sung khi cần. Các cuộc gọi lại này cho phép bạn tích hợp chức năng của mình một cách mượt mà khi các phần trở nên hiển thị, nâng cao tính linh hoạt của Emergence.
ScrollReveal
ScrollReveal giữ vững tên gọi của mình bằng cách chuyên về việc tạo animation cho các phần tử khi chúng xuất hiện thông qua việc cuộn trang. Trọng tâm chính của nó là tiết lộ các tính năng và cung cấp các tùy chọn tùy chỉnh để điều chỉnh những hiệu ứng này. Mặc dù kỹ thuật chỉ có một animation được tích hợp sẵn, là hiệu ứng xuất hiện mờ dần, bạn có thể tùy chỉnh nó theo ý thích. Thay vì chuyển tiếp mặc định từ độ mờ 0 đến 1, bạn có thể bắt đầu từ 0.5 và tạo hiệu ứng đến 1 bằng cách sử dụng các tính năng tùy chỉnh có sẵn.
So với các thư viện đã đề cập ở trên, ScrollReveal yêu cầu một cách tiếp cận về việc tùy chỉnh JavaScript tương đối hơn. Không giống như Sal, AOS và Emergence, ScrollReveal không cung cấp các thuộc tính dữ liệu có thể áp dụng trực tiếp cho các phần tử HTML để điều khiển animation. Thay vào đó, bạn cần truyền một bộ chọn phần tử cho ScrollReveal bằng cách sử dụng JavaScript. Tuy nhiên, nếu bạn có một chút hiểu biết về JavaScript, nhiệm vụ này tương đối dễ dàng, và trang web của ScrollReveal cung cấp các hướng dẫn và tài liệu tốt để hỗ trợ bạn.

Một tính năng đáng chú ý của ScrollReveal là khả năng thiết lập khoảng thời gian interval giữa các animation tiết lộ. Chức năng này cho phép bạn tạo hiệu ứng tiết lộ từng bước, trong đó các phần tử thực hiện animation một sau một trong các khoảng thời gian được chỉ định.
ScrollReveal là một lựa chọn tuyệt vời nếu bạn ưa thích quản lý logic animation cuộn trong JavaScript thay vì HTML. Nó xuất sắc trong việc tiết lộ các phần tử như tập trung chính của các animation, mang đến cho bạn sự kiểm soát và các tùy chọn tùy chỉnh đầy đủ.
| Emergence.js | ScrollReveal | |
|---|---|---|
| Công dụng | 4/5 | 4/5 |
| Kích cỡ | 1.2 kb | 5.4 kb |
| Phụ thuộc | Không | Không |
Top 3: Josh.js, WOW.js, ScrollMagic và GSAP ScrollTrigger
Josh.js
Josh.js là một thư viện animation kích hoạt bởi cuộn trang, hoạt động mượt mà với thư viện animation CSS gọi là Animate.css. Giống như Sal và AOS, Josh.js điều khiển các animation thông qua các thuộc tính được áp dụng trực tiếp vào các phần tử HTML. Mặc dù một số cấu hình bổ sung có thể được thực hiện trong JavaScript, trọng tâm chính là điều khiển animation dựa trên thuộc tính.
Mặc dù việc sử dụng Animate.css là tùy chọn, Josh.js được thiết kế để tương thích với nó, và khuyến nghị sử dụng cả hai thư viện cùng nhau để đạt được kết quả tốt nhất.

Cần chú ý rằng các animation trong Josh.js không lặp lại khi phần tử được cuộn ra khỏi tầm nhìn và quay trở lại. Nếu bạn cần các animation lặp lại, thư viện này có thể không phù hợp với nhu cầu của bạn.
Một ưu điểm của Josh.js là khả năng làm việc với các phần tử DOM được tạo động. Điều này có nghĩa là các phần tử được thêm vào trang theo chương trình sau khi khởi tạo mã script vẫn sẽ được thực hiện animation theo cách tương ứng. Tính năng này hữu ích khi phát triển ứng dụng web hoặc các dự án tương tự.
Tôi khuyên bạn nên sử dụng Sal hơn là Josh.js, chủ yếu vì Josh.js không thể đặt lại animation. Tuy nhiên, nếu hạn chế này không ảnh hưởng đến bạn, Josh.js vẫn là một lựa chọn đáng tin cậy, đặc biệt nếu bạn dự định sử dụng các animation Animate.css trong dự án của mình.
WOW.js
WOW.js là một thư viện animation kích hoạt bởi cuộn trang khác, được thiết kế đặc biệt để bổ sung thư viện animation Animate.css. Giống như Josh.js, WOW.js cho phép bạn xác định các animation trực tiếp trên các phần tử HTML mà không cần cấu hình JavaScript phức tạp.
Nên lưu ý rằng, giống như Josh.js, các animation trong WOW.js không lặp lại khi phần tử được cuộn ra khỏi tầm nhìn và quay trở lại. Do đó, nếu bạn cần các animation lặp lại, WOW.js có thể không phải là thư viện lý tưởng cho dự án của bạn.

Hơn nữa, cần đề cập rằng WOW.js không tương thích với phiên bản mới nhất của Animate.css (v4) do có những thay đổi gây rối đã được giới thiệu. Thay vào đó, WOW.js yêu cầu sử dụng Animate.css v3 cùng với nó.
Xem xét các yếu tố này và sự thật rằng Josh.js được xây dựng bằng cách sử dụng Trình quan sát giao lộ hiệu quả hơn, tôi khuyến nghị chọn Josh.js hơn WOW.js nếu bạn phải lựa chọn giữa hai thư viện này.
ScrollMagic
ScrollMagic là một thư viện animation dựa trên cuộn trang toàn diện mang đến một loạt tính năng. Nó cho phép bạn triển khai cuộn cố định, animation kích hoạt bởi cuộn trang và animation dựa trên cuộn trang trong khi vẫn giữ kích thước tệp tương đối nhỏ.
Tuy nhiên, ScrollMagic có một độ dốc học cao hơn khi triển khai animation kích hoạt bởi cuộn trang so với các thư viện khác. Khác với việc sử dụng các thuộc tính phần tử HTML, ScrollMagic yêu cầu bạn làm việc với JavaScript một cách độc quyền, và nó không cung cấp các animation tích hợp sẵn. Mặc dù mức độ tùy chỉnh cao này có thể hữu ích cho các tình huống cụ thể, nhưng nó có thể không cần thiết cho hầu hết các animation kích hoạt bởi cuộn trang thông thường.

Do độ dốc học cao hơn và thiếu animation tích hợp sẵn, ScrollMagic có thể không phải là lựa chọn phù hợp nhất cho các dự án yêu cầu các animation kích hoạt bởi cuộn trang. Nếu dự án của bạn cũng liên quan đến cuộn cố định hoặc animation dựa trên cuộn trang, thì ScrollMagic có thể đáp ứng những yêu cầu đó và làm nhiệm vụ cho các animation kích hoạt bởi cuộn trang. Trong những trường hợp như vậy, không cần thiết phải tích hợp một thư viện bổ sung.
GSAP ScrollTrigger
ScrollTrigger là một plugin mạnh mẽ được thiết kế để hoạt động với thư viện animation JavaScript GSAP. Nó hoạt động như một phần mở rộng của GSAP, có nghĩa là bạn không thể sử dụng ScrollTrigger một mình; GSAP cũng được yêu cầu để sử dụng nó.
Giống như ScrollMagic, ScrollTrigger là một thư viện toàn diện cho phép bạn tạo ra các animation dựa trên cuộn trang khác nhau, bao gồm animation kích hoạt bởi cuộn trang, animation dựa trên cuộn trang và hiệu ứng cuộn cố định. Đối với dự án cá nhân hoặc dự án khách hàng, bạn có thể sử dụng ScrollTrigger miễn phí với một khoản phí một lần. Tuy nhiên, bạn phải mua một giấy phép nếu bạn dự định sử dụng nó trong các dự án thương mại nơi người dùng cuối phải trả một khoản phí sử dụng.

Khi đề cập đến việc triển khai animation kích hoạt bởi cuộn trang, ScrollTrigger có độ dốc học cao hơn so với các thư viện khác, chủ yếu là vì bạn cũng cần làm quen với việc sử dụng GSAP. Giống như ScrollMagic, JavaScript được sử dụng độc quyền cho cấu hình, và không có các animation tích hợp sẵn. Mặc dù ScrollTrigger cung cấp mức độ tùy chỉnh cao, nhiều tùy chọn tiên tiến này có thể không cần thiết cho các animation kích hoạt bởi cuộn trang thông thường.
Xem xét các yếu tố này, tôi không khuyến nghị sử dụng ScrollTrigger chỉ để tạo animation kích hoạt bởi cuộn trang mặc dù tên gần giống. Nếu dự án của bạn yêu cầu cả cuộn cố định hoặc các hiệu ứng dựa trên cuộn trang bên cạnh các animation kích hoạt bởi cuộn trang, ScrollTrigger có thể đáp ứng những yêu cầu đó.
| Josh.js | WOW.js | ScrollMagic | GSAP ScrollTrigger | |
|---|---|---|---|---|
| Công dụng | 3/5 | 3/5 | 3/5 | 3/5 |
| Kích cỡ | 1.0 kb | 2.60 kb | 7.5 kb | 24 kb (GSAP) + 8.93 kb (ScrollTrigger) |
| Phụ thuộc | Animate.css | Animate.css | Không | GSAP |
Top 4: T-scroll và Delighters.js
T-scroll
Ban đầu, T-scroll có thể dường như tương tự như một số lựa chọn hàng đầu cho các thư viện animation kích hoạt bởi cuộn trang. Nó cung cấp một tùy chọn tốt về các animation tích hợp sẵn và có thể xác định các animation trực tiếp trên các phần tử HTML.
Tuy nhiên, một hạn chế của T-scroll là tài liệu hướng dẫn của nó, không đủ hữu ích. Sử dụng thư viện này khó khăn hơn so với các lựa chọn thân thiện với người dùng như Sal và AOS. Ngoài ra, việc xác định các lớp animation cả trong phần tử HTML và JavaScript cảm thấy lặp lại và làm tăng độ phức tạp của quá trình triển khai.

Hơn nữa, T-scroll không thể đặt lại animation khi phần tử được cuộn ra khỏi tầm nhìn và quay trở lại. Hạn chế này có thể là một điểm trừ nếu bạn cần các animation lặp lại.
Một khía cạnh tích cực của T-scroll là việc bao gồm một cách dễ dàng để tạo hiệu ứng trì hoãn, tương tự như tùy chọn interval trong ScrollReveal. Tính năng này cho phép bạn tạo hiệu ứng tiết lộ từng bước, làm tăng tính linh hoạt cho thư viện.
Tổng thể, do tính không linh hoạt và quá trình triển khai phức tạp và rối rắm, T-scroll khó hơn các lựa chọn khác có sẵn cho các thư viện animation kích hoạt bởi cuộn trang.
Delighters.js
Delighters.js là một thư viện animation kích hoạt bởi cuộn trang hoạt động dưới một phương pháp “mang theo” animation của riêng bạn, tương tự như Emergence.js. Nó cung cấp một mức độ tùy chỉnh cao, cho phép bạn điều chỉnh các animation của mình bằng cách sử dụng các thuộc tính dữ liệu và cấu hình JavaScript.

Thư viện này cung cấp tính linh hoạt tuyệt vời, chủ yếu nếu bạn thích không dựa vào các animation tích hợp sẵn (vì không có animation nào) và muốn kiểm soát hoàn toàn các hiệu ứng của bạn.
Tuy nhiên, một thách thức đáng chú ý với Delighters.js là cần bao gồm phiên bản và xuất bản trên npm, làm cho việc sử dụng nó khó khăn hơn so với một thư viện tương tự như Emergence.js. Sự thiếu vắng của phiên bản và xuất bản npm có thể tạo ra khó khăn trong việc quản lý và tích hợp Delighters.js vào dự án của bạn.
| T-scroll | Delighters.js | |
|---|---|---|
| Công dụng | 2/5 | 2/5 |
| Kích cỡ | 1.16 kb | 1.16 kb |
| Phụ thuộc | Không | Không |








