will-change در CSS
🔹 تعریف
خاصیت CSS به اسم will-change
به مرورگر میگه این المان قراره تغییر کنه (مثلاً transform یا opacity) تا مرورگر قبل از شروع انیمیشن، اون المان رو آماده کنه و روی GPU بیاره.
این باعث میشه:
-
انیمیشن نرمتر اجرا بشه.
-
لگ و تأخیر اولیه (jank) کمتر بشه.
🔹 استفاده پایهای
مثال ساده با یک باکس:
📌 اینجا چون x
(که همون transform هست) و opacity
تغییر میکنن، ما توی CSS گفتیم:
تا مرورگر از قبل آماده GPU کنه.
🔹 نکته مهم ⚠️
استفادهی زیاد از will-change
خودش بدون نیاز هم مصرف RAM و GPU رو بالا میبره چون مرورگر برای هر المان یک لایه جدا درست میکنه.
✅ بهترین حالت:
-
روی المانهایی استفاده بشه که مطمئنی انیمیشن میشن.
-
اگر فقط یک بار انیمیشن اجرا میشه، میشه با GSAP
will-change
رو قبل از انیمیشن فعال کرد و بعد از انیمیشن برداشت.
🔹 کنترل با GSAP
میشه توی GSAP این خاصیت رو دینامیک ست و حذف کرد:
📌 این روش حرفهایتره چون فقط وقتی لازمه GPU درگیر میشه.
🔹 چه property هایی بهتره با will-change استفاده بشن؟
-
transform
(x, y, scale, rotate, skew) -
opacity
❌ توصیه نمیشه برای:
-
top
,left
,width
,height
,margin
,padding
(چون GPU-friendly نیستن)
✅ جمعبندی
-
will-change
به مرورگر میگه: این المان قراره تغییر کنه، آماده باش! -
برای انیمیشنهای GSAP، بهترین گزینهها:
transform
وopacity
. -
زیاد استفاده کردنش باعث مصرف اضافه حافظه میشه → فقط روی المانهای لازم فعال کن.
-
میتونی با GSAP قبل از انیمیشن فعال و بعدش غیرفعال کنی.