containerAnimation
"Scroll this page vertically and you'll see a horizontal fake-scrolling section where a container is animated on the x-axis using a ScrollTrigger animation. With containerAnimation
you can trigger animations when certain elements inside that container enter the viewport horizontally! It's like a ScrollTrigger inside of a ScrollTrigger. 🤯
gsap.to(".box-1", { y: -130, duration: 2, ease: "elastic", scrollTrigger: { trigger: ".box-1", containerAnimation: scrollTween, start: "left center", toggleActions: "play none none reset" } });Fire an animation at a particular spot...
gsap.to(".box-2", { y: -120, backgroundColor: "#1e90ff", ease: "none", scrollTrigger: { trigger: ".box-2", containerAnimation: scrollTween, start: "center 80%", end: "center 20%", scrub: true } });...or scrub it back & forth with the scrollbar
ScrollTrigger.create({ trigger: ".box-3", containerAnimation: scrollTween, toggleClass: "active", start: "center 60%" });Toggle a CSS class
ScrollTrigger.create({ trigger: ".green", containerAnimation: scrollTween, start: "center 65%", end: "center 51%", onEnter: () => console.log("enter"), onLeave: () => console.log("leave"), onEnterBack: () => console.log("enterBack"), onLeaveBack: () => console.log("leaveBack"), onToggle: self => console.log("active", self.isActive) });Use the rich callback system
Here are a few caveats to keep in mind:
ease: "none"
).containerAnimation
.end
100px further to the left.