GSAP (GreenSock Animation Platform) предоставляет гибкие инструменты для анимации свойств DOM-элементов, Canvas и других объектов в JavaScript. Одним из ключевых аспектов является работа с значениями свойств, которые могут быть заданы как в абсолютных единицах (например, пикселях), так и в относительных (процентах). Понимание различий между этими типами значений важно для точного контроля анимации и адаптивного дизайна.
Абсолютные значения задаются в пикселях, градусах или других фиксированных единицах. Они напрямую определяют конечное состояние анимируемого свойства без зависимости от контекста родительских элементов.
gsap.to(".box", { x: 200, y: 100, duration: 2 });
В этом примере элемент с классом .box будет перемещён на
200 пикселей по оси X и 100 пикселей по оси
Y за 2 секунды. Абсолютные значения обеспечивают точный
контроль над расположением элементов, однако они не учитывают
динамическую ширину или высоту контейнера.
Особенности абсолютных значений:
Проценты задаются относительно родительского контейнера или текущего
размера элемента. В GSAP процентные значения обычно используются для
CSS-свойств, таких как width, height,
left, top и translate.
gsap.to(".box", { x: "50%", y: "25%", duration: 2 });
Здесь .box смещается на 50% ширины родителя по
оси X и 25% высоты по оси Y. Это позволяет
элементам оставаться пропорциональными при изменении размеров окна или
родительского контейнера, что критично для адаптивного дизайна.
Ключевые моменты использования процентов:
width,
height, left, top или текущих
размеров элемента для translate.GSAP позволяет смешивать абсолютные и процентные значения для разных свойств одновременно:
gsap.to(".box", { x: "30%", y: 100, duration: 2 });
В этом случае элемент смещается на 30% ширины родителя по X и 100 пикселей по Y. Такой подход сочетает адаптивность и точность.
GSAP поддерживает относительные значения вида
"+=50" или "-=20%", что позволяет анимировать
элемент относительно его текущего состояния:
gsap.to(".box", { x: "+=50", y: "-=10%", duration: 1.5 });
"+=50" увеличивает текущее значение X на 50
пикселей."-=10%" уменьшает Y на 10% от соответствующего
контекста (высоты родителя).Преимущества относительных значений:
GSAP позволяет использовать функции, которые возвращают числовое или процентное значение для каждого анимируемого свойства:
gsap.to(".box", {
x: i => i * 20 + "%",
duration: 2,
stagger: 0.3
});
В данном примере каждый элемент .box с индексом
i получает смещение по X, зависящее от его позиции в
NodeList. Функции обеспечивают возможность создавать динамичные и
уникальные анимации для множества элементов одновременно.
Абсолютные числа предоставляют полный контроль над позицией и размером элементов, тогда как процентные значения дают адаптивность и динамическую реакцию на изменение контейнера. Возможность комбинирования и использования относительных значений превращает GSAP в мощный инструмент для создания сложных интерфейсов, где точность и гибкость анимации равнозначны.
Эффективное управление этими типами значений позволяет создавать как статичные, так и полностью адаптивные анимации, обеспечивая плавный и предсказуемый пользовательский опыт.