matchMedia (انیمیشن واکنشگرا و دسترسپذیر)
در GSAP، ()gsap.matchMedia
یک ابزار قدرتمند برای ساخت انیمیشنهای واکنشگرا (Responsive) و دسترسپذیر (Accessible) است.
با این قابلیت میتوان انیمیشنها را بر اساس Media Query یا شرایط دلخواه فعال یا غیرفعال کرد.
🟢 1️⃣ ایجاد matchMedia
-
mm
یک شیء مدیریتکننده Media Query است. -
اجازه میدهد Tweenها و Timelineها فقط وقتی شرایط مشخص برقرار است اجرا شوند.
🟡 2️⃣ استفاده با Media Query
-
آرگومان اول: Media Query مشابه CSS
-
آرگومان دوم: تابعی که انیمیشنها را تعریف میکند و میتواند یک تابع cleanup بازگرداند.
مثال واکنشگرایی:
-
برای هر Breakpoint انیمیشن متفاوت اجرا میشود.
🟠 3️⃣ استفاده با شرایط غیر Media Query
میتوانید شرایط دلخواه هم بدهید:
-
مناسب برای کاربرانی که Reduce Motion فعال کردهاند.
🟣 4️⃣ Cleanup خودکار
-
وقتی Media Query تغییر کند یا انیمیشن غیرفعال شود، GSAP انیمیشنها را پاک و CSS را revert میکند.
-
این باعث میشود که پروژه SPA یا صفحات واکنشگرا بدون مشکل اجرا شوند.
🟤 5️⃣ ترکیب با Context و Timeline
-
ترکیب Context + matchMedia بهترین روش برای مدیریت انیمیشنهای پیچیده واکنشگرا است.
⚡ نکات حرفهای
-
Responsive Animations: تغییر انیمیشن با تغییر اندازه صفحه.
-
Accessibility: تشخیص
prefers-reduced-motion
و کاهش یا حذف انیمیشنها. -
Cleanup خودکار: وقتی شرایط Media Query دیگر برقرار نیست، انیمیشنها پاک میشوند.
-
Stagger و Timeline: تمام ویژگیهای GSAP قابل استفاده داخل matchMedia هستند.
✅ جمعبندی
ویژگی | کاربرد |
---|---|
()gsap.matchMedia | تعریف شرایط اجرای انیمیشن بر اساس Media Query یا شرایط دلخواه |
add(query, func) | اضافه کردن انیمیشن واکنشگرا |
تابع cleanup | بازگرداندن استایلها و پاکسازی انیمیشنها هنگام تغییر شرایط |
ترکیب با Context | مدیریت کامل، جلوگیری از memory leak و هماهنگی با SPA |
با matchMedia میتوانید انیمیشنها را واکنشگرا، قابل کنترل و دسترسپذیر طراحی کنید، بدون نیاز به کدنویسی پیچیده CSS یا JS برای شرایط مختلف.