thảo luận Trả lời tất cả những câu hỏi về Front End !!!

View attachment 2477222
mấy thím cho e hỏi cái kiểu animation như cái hình em post nó có trong cái link. E dùng framer motion thì nó là cái nào v nhỉ ? scroll nhưng mà nó k theo chiều từ phải sang trái. Có thím nào biết mấy cái animation như trong cái app kiểu em scroll xuống thì ảnh nó hiện ra nhỉ. E cảm ơn
View attachment 2477225
như này e kéo xuống đúng khung thì nó hiện k thì nó đóng. Dùng useScroll inView của framer motion đúng k nhỉ
thề mấy cái animation như này dễ lắm lắm luôn ấy, dùng kiểu gì cũng ra được, như cái demo này là xấu òm xấu đau xấu mù, nói nhẹ nhàng là chẳng ra cái thể loại gì cả.
nguyên lý để giải quyết đơn giản là như này:
  • bằng bất cứ kỹ thuật gì cũng được, bạn phải xác định được là cái khung cần animation nó có nằm trong màn hình hiển thị hay không? cách căn bản chuẩn chỉ nhất là dùng "IntersectionObserver", nếu nó ngoài viewport thì xử lý tương ứng cho case ngoài viewport, như là ẩn đi, giảm opacity, scale nhỏ, hay trượt hẳn sang trái/phải 100% chẳng hạn
  • tiếp theo, bạn phải xác định được 2 khoản, tạm gọi là minTrigger và maxTrigger, dựa vào các thông tin trả về từ "IntersectionObserver" ở trên rồi tính ra min/max, min/max này cũng vô chừng lắm, không là một con số cụ thể, về ý nghĩa, thì nó sẽ biểu thị cho giá trị cái khung đó của bạn cách cạnh trên (hoặc dưới, tuỳ) màn hình của bạn là bao nhiêu? có thể là con số px, có thể quy đổi ra tỷ lệ %
  • sau khi tính được min/max Trigger rồi, thì đoạn animation sẽ diễn ra trong khoảng min/max này, bạn remap nó về miền giá trị từ 0 đến 1. Giá trị 0 tương ứng với trạng thái lúc bạn ẩn đi, như là opacity 0, scale 0, translate -100% chẳng hạn. Giá trị 1 tương ứng với trạng thái lúc cái khung của bạn xuất hiện hoàn toàn, như là opacity 1, scale 1, translate 0 chẳng hạn.
  • đấy, xử lý được như trên là sẽ ra được animation, việc gì phải phụ thuộc vào giải pháp sẵn có?
* àh, bonus thêm là đoạn remap giá trị của bạn từ 0 đến 1 tương ứng với min/max trigger thì thông thường nó sẽ là linear transition, tức là sự thay đổi của bạn là tuyến tính, thẳng đều, giá trị thay đổi là hằng số cố định. Thì, có thể tính lại giá trị remap 1 lần nữa bằng cách wrap nó vào 1 easing function nào đó, như là ease, ease-in-out, cubic-bezier gì gì đó, google cái ra cả đống.

đấy, dễ vl, cứ làm y chang vậy là ani đẹp bao chê.
 
thề mấy cái animation như này dễ lắm lắm luôn ấy, dùng kiểu gì cũng ra được, như cái demo này là xấu òm xấu đau xấu mù, nói nhẹ nhàng là chẳng ra cái thể loại gì cả.
nguyên lý để giải quyết đơn giản là như này:
  • bằng bất cứ kỹ thuật gì cũng được, bạn phải xác định được là cái khung cần animation nó có nằm trong màn hình hiển thị hay không? cách căn bản chuẩn chỉ nhất là dùng "IntersectionObserver", nếu nó ngoài viewport thì xử lý tương ứng cho case ngoài viewport, như là ẩn đi, giảm opacity, scale nhỏ, hay trượt hẳn sang trái/phải 100% chẳng hạn
  • tiếp theo, bạn phải xác định được 2 khoản, tạm gọi là minTrigger và maxTrigger, dựa vào các thông tin trả về từ "IntersectionObserver" ở trên rồi tính ra min/max, min/max này cũng vô chừng lắm, không là một con số cụ thể, về ý nghĩa, thì nó sẽ biểu thị cho giá trị cái khung đó của bạn cách cạnh trên (hoặc dưới, tuỳ) màn hình của bạn là bao nhiêu? có thể là con số px, có thể quy đổi ra tỷ lệ %
  • sau khi tính được min/max Trigger rồi, thì đoạn animation sẽ diễn ra trong khoảng min/max này, bạn remap nó về miền giá trị từ 0 đến 1. Giá trị 0 tương ứng với trạng thái lúc bạn ẩn đi, như là opacity 0, scale 0, translate -100% chẳng hạn. Giá trị 1 tương ứng với trạng thái lúc cái khung của bạn xuất hiện hoàn toàn, như là opacity 1, scale 1, translate 0 chẳng hạn.
  • đấy, xử lý được như trên là sẽ ra được animation, việc gì phải phụ thuộc vào giải pháp sẵn có?
* àh, bonus thêm là đoạn remap giá trị của bạn từ 0 đến 1 tương ứng với min/max trigger thì thông thường nó sẽ là linear transition, tức là sự thay đổi của bạn là tuyến tính, thẳng đều, giá trị thay đổi là hằng số cố định. Thì, có thể tính lại giá trị remap 1 lần nữa bằng cách wrap nó vào 1 easing function nào đó, như là ease, ease-in-out, cubic-bezier gì gì đó, google cái ra cả đống.

đấy, dễ vl, cứ làm y chang vậy là ani đẹp bao chê.
e mới làm thôi á thím. E có làm dc nhưng mà có cái khi e scroll vào 1 ảnh thì nó sẽ kéo sang phải hoặc trái thì chưa biết như nào. cũng k rõ lắm thím ạ, để e tìm hiểu cái thư viện này thêm
 
Back
Top