В библиотеке GSAP (GreenSock Animation Platform) ключевыми
концепциями для управления анимацией являются точки старта и
конца, задаваемые через свойства start и
end. Эти параметры определяют момент времени и положение
анимации относительно контейнера, триггера или временной шкалы, что
позволяет создавать сложные и синхронизированные анимационные
эффекты.
startСвойство start определяет начальный момент
анимации. В контексте ScrollTrigger, одного из наиболее
популярных плагинов GSAP, оно задает точку, в которой анимация начинает
проигрываться при скролле страницы. Формат записи может быть
следующим:
start: "top center"
Где:
top — верхняя граница элемента, относительно которого
происходит триггер;center — вертикальная точка на экране или в контейнере,
относительно которой вычисляется старт анимации.Существуют различные комбинации:
"top top" — верх элемента совпадает с верхом видимой
области;"top bottom" — верх элемента совпадает с низом видимой
области;"center center" — центр элемента совпадает с центром
видимой области.Также можно задавать смещения в пикселях или процентах:
start: "top 100px"
Это означает, что анимация начнется, когда верх элемента достигнет 100 пикселей от верхней границы экрана.
endСвойство end определяет конечный момент
анимации. Оно задает, до какого момента или положения будет
продолжаться анимация. Аналогично start, его можно
записывать через ключевые точки и смещения:
end: "bottom top"
Где:
bottom — нижняя граница элемента;top — верх видимой области экрана.Примеры:
"bottom bottom" — нижняя граница элемента совпадает с
нижней границей видимой области;"center top" — центр элемента достигает верхней границы
экрана.Использование end совместно с start
позволяет контролировать длительность анимации на
скролле, делая её зависимой от положения элемента относительно
окна просмотра или родительского контейнера.
start и end с временной шкалойGSAP позволяет использовать start и end не
только с ScrollTrigger, но и с классическими таймлайнами
(timeline). Например:
gsap.timeline()
.from(".box", {x: -200, duration: 1})
.to(".box", {x: 200, duration: 1}, "start+=0.5");
Здесь "start+=0.5" смещает начало второй анимации на 0.5
секунды относительно ключевой точки start временной шкалы.
Это позволяет создавать сложные цепочки анимаций с
точным управлением последовательностью и задержками.
Свойства start и end могут быть заданы как
абсолютными значениями в пикселях, так и
относительными процентами:
start: "top 80%"
end: "bottom 20%"
Такое определение обеспечивает гибкость при адаптивной верстке, когда размеры элементов и окна просмотра могут меняться.
scrubКогда анимация привязана к скроллу с использованием опции
scrub, свойства start и end
становятся особенно важными. Они определяют интервал
скролла, за который анимация будет выполнена:
gsap.to(".box", {
x: 400,
scrollTrigger: {
trigger: ".box",
start: "top 80%",
end: "bottom 20%",
scrub: true
}
});
В этом примере анимация будет плавно следовать за скроллом, начинаясь при достижении верхом элемента 80% высоты экрана и заканчиваясь, когда нижняя граница элемента пройдет 20% высоты экрана.
start и end поддерживают смещения с
отрицательными и положительными значениями, что позволяет
запускать анимацию раньше или позже фактической точки элемента:
start: "top 50px",
end: "bottom-=100px"
Формат -=100px сокращает стандартное значение на 100
пикселей. Кроме того, можно использовать функции для динамического
расчета позиции:
start: () => window.innerHeight / 2
Это дает возможность адаптировать анимацию к различным размерам экрана и сложным структурам DOM.
top, center, bottom) вместо
абсолютных пикселей для кросс-платформенной совместимости.scrub: true, чтобы анимация синхронизировалась с
прокруткой.start и end с
временной шкалой, чтобы создавать цепочки анимаций с
контролируемой последовательностью.Эффективное использование start и end в
GSAP позволяет создавать точно синхронизированные и адаптивные
анимации, которые реагируют на взаимодействие пользователя и
структуру страницы, обеспечивая профессиональный уровень динамического
интерфейса.