متحرک سازی عناصر صفحه وب در هنگام اسکرول — راهنمای کاربردی

۴۰۴ بازدید
آخرین به‌روزرسانی: ۲۹ شهریور ۱۴۰۲
زمان مطالعه: ۳ دقیقه
متحرک سازی عناصر صفحه وب در هنگام اسکرول — راهنمای کاربردی

کتابخانه AOS (+) که اختصاری برای عبارت Animate On است امکان انیمیت کردن عناصر صفحه وب در زمان اسکرول کردن به سمت بالا یا پایین را فراهم ساخته است. اگر به سمت ابتدای صفحه اسکرول کنید، همه عناصر به حالت قبلی خود بازمی‌گردند و آماده انیمیت مجدد در صورت اسکرول به سمت پایین می‌شوند.

متحرک سازی عناصر صفحه وب

کتابخانه AOS

گام اول: نصب AOS با ابزارهای مدیریت پکیج

AOS را می‌توان با استفاده از npm نصب کرد:

yarn add aos@next

همچنین می‌توانید آن را با استفاده از yarn نیز نصب کنید:

or npm install --save aos@next

سپس اسکریپت و استایل ها را ایمپورت کرده و AOS را راه‌اندازی کنید:

1import AOS from 'aos';
2import 'aos/dist/aos.css'; // You can also use <link> for styles
3//..
4AOS.init(); // init the library

شیء AOS به صورت یک متغیر سراسری عرضه شده است. فعلاً سه متد در اختیار ما قرار دارد:

  • Init – به راه‌اندازی AOS می‌پردازد.
  • refresh – همه آفست‌ها و محل‌های عناصر را مجدداً محاسبه می‌کند. در زمان تغییر یافتن اندازه پنجره فراخوانی می‌شود.
  • refreshHard – آرایه را با عناصر AOS مجدداً مقداردهی می‌کند و refresh را تحریک می‌کند. در زمان بروز تغییرات DOM که به عناصر AOS مرتبط هستند، فراخوانی می‌شود.

AOS به صورت پیش‌فرض تغییرات DOM را رصد می‌کند و اگر هر عنصر جدیدی به صورت ناهمگام بارگذاری شده باشد و یا چیزی از DOM حذف شده باشد، به صورت خودکار refreshHard را فرا می‌خواند.

در مرورگرهایی مانند اینترنت اکسپلورر که از MutationObserver پشتیبانی نمی‌کنند، ممکن است لازم باشد ()AOS.refreshHard را خودتان فراخوانی کنید. برای آغاز به کار با AOS برخی گام‌ها را باید بردارید که در بخش بعدی توضیح داده‌ایم.

گام دوم: مقداردهی AOS

گزینه‌های پیکربندی موجود به شرح زیر هستند:

1AOS.init();
2
3// You can also pass an optional settings object
4// below listed default settings
5AOS.init({
6  // Global settings:
7  disable: false, // accepts following values: 'phone', 'tablet', 'mobile', boolean, expression or function
8  startEvent: 'DOMContentLoaded', // name of the event dispatched on the document, that AOS should initialize on
9  initClassName: 'aos-init', // class applied after initialization
10  animatedClassName: 'aos-animate', // class applied on animation
11  useClassNames: false, // if true, will add content of `data-aos` as classes on scroll
12  disableMutationObserver: false, // disables automatic mutations' detections (advanced)
13  debounceDelay: 50, // the delay on debounce used while resizing window (advanced)
14  throttleDelay: 99, // the delay on throttle used while scrolling the page (advanced)
15  
16
17  // Settings that can be overridden on per-element basis, by `data-aos-*` attributes:
18  offset: 120, // offset (in px) from the original trigger point
19  delay: 0, // values from 0 to 3000, with step 50ms
20  duration: 400, // values from 0 to 3000, with step 50ms
21  easing: 'ease', // default easing for AOS animations
22  once: false, // whether animation should happen only once - while scrolling down
23  mirror: false, // whether elements should animate out while scrolling past them
24  anchorPlacement: 'top-bottom', // defines which position of the element regarding to window should trigger the animation
25
26});

انیمیشن با استفاده از خصوصیت data-aos تنظیم می‌شود:

1<div data-aos="fade-in"></div>

رفتار نیز با استفاده از خصوصیت‌های data-aos-* تعیین می‌شود:

1<div
2    data-aos="fade-up"
3    data-aos-offset="200"
4    data-aos-delay="50"
5    data-aos-duration="1000"
6    data-aos-easing="ease-in-out"
7    data-aos-mirror="true"
8    data-aos-once="false"
9    data-aos-anchor-placement="top-center"
10  >
11  </div>

انواع انیمیشن

گزینه‌ای برای به‌کارگیری انیمیشن‌های مختلف و easing-ها روی عناصر ارائه شده است. برخی از مثال‌هایی که می‌توان استفاده کرد، به شرح زیر هستند:

انیمیشن‌های محو شدن

  • fade
  • fade-up
  • fade-down

انیمیشن‌های چرخش

  • flip-up
  • flip-down

انیمیشن‌های لغزیدن

  • slide-up
  • slide-down

انیمیشن‌های easing

  • linear
  • ease
  • ease-in
  • ease-out

افزودن انیمیشن‌های سفارشی

برخی اوقات انیمیشن‌های داخلی کافی نیستند. فرض کنید به یک کادر نیاز دارید که باید بسته به وضوح صفحه نمایش، انیمیشن‌های متفاوتی داشته باشد. روش انجام این کار به صورت زیر است:

1[data-aos="new-animation"] {
2  opacity: 0;
3  transition-property: transform, opacity;
4  &.aos-animate {
5    opacity: 1;
6  }
7  @media screen and (min-width: 768px) {
8    transform: translateX(100px);
9    &.aos-animate {
10      transform: translateX(0);
11    }
12  }
13}

از آن به صورت زیر در HTML استفاده می‌کنیم:

1<div data-aos="new-animation"></div>

بدین ترتیب سطح شفافیت عناصر صرفاً روی دستگاه‌های موبایل انیمیت می‌شود، روی عرض صفحه بالاتر از 768 پیکسل از سمت راست به چپ می‌لغزد. بدین منظور می‌توانید یک کتابخانه انیمیشن CSS بیرونی مانند Animate.css (+) را نیز ایمپورت کنید.

از animatedClassName برای تغییر رفتار پیش‌فرض AOS و بکارگیری نام‌های کلاس که درون data-aos در زمان اسکرول قرار می‌گیرند استفاده کنید.

1<div data-aos="fadeInUp"></div>
2AOS.init({
3  useClassNames: true,
4  initClassName: false,
5  animatedClassName: 'animated',
6});

اگر این مطلب برای شما مفید بوده است، آموزش‌های زیر نیز به شما پیشنهاد می‌شوند:

==

بر اساس رای ۳ نفر
آیا این مطلب برای شما مفید بود؟
اگر بازخوردی درباره این مطلب دارید یا پرسشی دارید که بدون پاسخ مانده است، آن را از طریق بخش نظرات مطرح کنید.
منابع:
better-programming
نظر شما چیست؟

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *