Метод getState() библиотеки GSAP используется для
сохранения текущего состояния анимации или набора анимаций. Он позволяет
зафиксировать параметры объектов, чтобы в дальнейшем их можно было
восстановить или использовать в новых анимациях без потери исходных
значений.
let state = gsap.getState(targets);
Параметры:
targets — одиночный элемент или массив элементов DOM,
объекты которых необходимо сохранить.Возвращаемое значение: объект состояния, содержащий текущие значения всех свойств анимируемых элементов.
Сохранение текущего состояния перед новой
анимацией Использование getState() полезно, когда
необходимо временно изменить свойства элементов, а затем восстановить их
исходное состояние.
let state = gsap.getState(".box");
gsap.to(".box", { x: 200, rotation: 45, duration: 1 });
// Восстановление исходного состояния
gsap.set(state);Многоэтапные анимации Метод позволяет фиксировать промежуточные состояния элементов, создавая сложные последовательности без необходимости вручную отслеживать каждое свойство.
Комбинирование с from() и
fromTo() Полученное состояние можно использовать
для динамической генерации стартовых или конечных значений в новых
анимациях, что повышает гибкость управления анимацией.
from()Метод from() задает анимацию, начиная с указанного
значения и постепенно переходя к текущему значению элемента. Это
противоположность методу to(), где анимация идет от
текущего состояния к целевому.
gsap.from(targets, vars);
Параметры:
targets — один или несколько элементов DOM, которые
будут анимированы.vars — объект с параметрами анимации, включающий
свойства CSS, длительность, задержку и т.д.varsduration — время анимации в секундах.delay — задержка перед началом анимации.x, y, scale,
rotation — свойства трансформации.opacity — прозрачность.ease — функция сглаживания.Анимация появления элементов Элемент может появляться, начиная с полной прозрачности:
gsap.from(".box", { duration: 1, opacity: 0, y: -50, ease: "power2.out" });
В данном примере элемент изначально находится выше на 50px и полностью прозрачный, затем плавно возвращается в исходное положение с полной видимостью.
Создание эффектов “входа” Метод
from() особенно полезен при анимации элементов, которые
должны появляться на странице из невидимого состояния или со
смещением.
Комбинация с stagger При работе с
массивом элементов можно создавать каскадное появление:
gsap.from(".item", { duration: 0.5, y: 30, opacity: 0, stagger: 0.1 });
Каждый элемент будет анимироваться с небольшой задержкой, создавая эффект последовательного появления.
getState() и
from()getState() можно сохранить текущее положение
элементов, а затем использовать from() для анимации их
возвращения к сохранённым координатам.getState() позволяет
фиксировать состояние элементов до динамических анимаций.getState() и передавать в
from(), что упрощает работу с множеством элементов.// Сохраняем текущее состояние всех блоков
let state = gsap.getState(".card");
// Применяем временные изменения
gsap.to(".card", { scale: 1.2, rotation: 10, duration: 0.5 });
// Возвращаем блоки в исходное состояние с анимацией "от сохраненного состояния"
gsap.from(state.targets, { duration: 1, x: state.targets[0].x, y: state.targets[0].y, ease: "power3.out" });
В этом примере сначала сохраняется состояние, затем элементы
изменяются, а from() позволяет анимированно вернуть их в
исходное положение.
Методы getState() и from() являются
фундаментальными инструментами для создания сложных анимационных
сценариев, гибкого управления состояниями и динамического построения
эффектов появления и возврата элементов на странице. Они обеспечивают
полный контроль над временными и визуальными характеристиками анимации,
упрощая создание интерактивных и визуально привлекательных
интерфейсов.