Словами самого skill
Официальные рекомендации GSAP по поддержанию плавных 60 fps за счёт выбора «дешёвых» свойств и избегания работы с layout. В них сказано анимировать transform-свойства (x, y, scaleX, scaleY, rotation, rotationX, rotationY, skewX, skewY) и opacity вместо width, height, top, left, margin или padding, указывать will-change в CSS только для элементов, которые действительно анимируются, и выполнять все чтения DOM до записей, чтобы не вызывать layout thrashing.
Рекомендации по батчингу охватывают stagger вместо ручных задержек в твинах, виртуализацию для длинных списков, gsap.quickTo() для эффектов следования за курсором, настройку pin и scrub с дебаунсингом ScrollTrigger.refresh(), а также остановку твинов за пределами экрана. Это предназначено для дизайнеров и разработчиков, настраивающих уже существующие анимации GSAP, а не создающих их с нуля.
Что он выдаёт
- Объявление will-change, которое нужно добавить в CSS анимируемого элемента.
- Настройка gsap.quickTo() для x и y, управляемая слушателем mousemove на контейнере.
Как это работает
- 01Анимируйте свойства, совместимые с компоситором
Ограничьте анимацию transform-свойствами и opacity, которые оставляют работу на компоситоре, не вызывая layout и paint.
- 02Позвольте GSAP батчить записи
GSAP уже внутренне батчит обновления, поэтому риск заключается в том, что ваш собственный код DOM чередует чтения и записи вокруг этого механизма.
- 03Используйте один твин для «горячих» значений
Для свойств, обновляемых при каждом движении указателя, gsap.quickTo() сохраняет один активный твин вместо выделения нового при каждом обновлении.
- 04Укротите работу, связанную со скроллом
Небольшое значение scrub, например scrub: 1, может снизить объём работы во время скролла, но в файле сказано проверять эту настройку на слабых устройствах.
- 05Останавливайте анимацию, которую не видно
Приостанавливайте или останавливайте анимации за пределами экрана и неактивные анимации, например когда пользователь уходит с раздела.