В работе с веб-анимациями важно отделять бизнес-логику приложения от анимационной логики. GSAP (GreenSock Animation Platform) предоставляет мощный инструментарий для реализации сложных анимаций без смешивания их с обработкой данных или состоянием приложения. Такой подход повышает читаемость кода, упрощает поддержку и тестирование.
Принцип:
Разделение позволяет анимациям быть независимыми от внутренней структуры данных и упрощает повторное использование анимационных компонентов.
Анимации в GSAP следует оформлять как отдельные функции или классы. Пример функции для анимации появления элемента:
function animateFadeIn(element, duration = 1) {
return gsap.fromTo(element,
{ opacity: 0 },
{ opacity: 1, duration: duration, ease: "power2.out" }
);
}
Ключевые моменты:
GSAP Timeline позволяет объединять несколько анимаций в последовательность, полностью отделяя визуальное поведение от логики. Пример:
function animateCardEntry(card) {
const tl = gsap.timeline();
tl.from(card, { y: -50, opacity: 0, duration: 0.5 })
.to(card, { scale: 1.05, duration: 0.3 })
.to(card, { scale: 1, duration: 0.2 });
return tl;
}
Преимущества использования Timeline:
play, pause, reverse).Анимации не должны напрямую контролировать состояние приложения. Связь происходит через события:
document.querySelector("#button").addEventListener("click", () => {
const card = document.querySelector(".card");
animateCardEntry(card).play();
});
При изменении состояния приложения часто требуется реакция анимации. Использование чистых функций упрощает этот процесс:
function updateCardAnimation(card, isActive) {
if (isActive) {
gsap.to(card, { borderColor: "#00ff00", duration: 0.5 });
} else {
gsap.to(card, { borderColor: "#cccccc", duration: 0.5 });
}
}
В крупных проектах следует использовать модульную структуру:
Пример структуры папок:
/src
/animations
fade.js
slide.js
card.js
/logic
cards.js
user.js
main.js
GSAP предоставляет возможности для создания сложных анимационных сценариев, сохраняя принцип разделения:
pause(), resume(),
reverse() дают возможность управлять визуальным процессом
отдельно от бизнес-логики.Строгое разделение анимационной и бизнес-логики позволяет:
GSAP становится инструментом исключительно визуальной части, а управление состоянием остается в контроллерах и обработчиках событий, что соответствует современным стандартам архитектуры веб-приложений.