Scroll Animations
Parallax, scrub, horizontal scroll, scroll sequences, and counter animations.
Parallax
Creates depth by moving elements at different speeds relative to scroll. parallax (speed -0.3, moderate), parallax-slow (speed -0.15, subtle), parallax-fast (speed -0.5, aggressive), parallax-horizontal (horizontal shift). All use ScrollTrigger scrub spanning the full element journey.
data-etch-motion="parallax" data-etch-motion-trigger="scroll" data-etch-motion-parallax-speed="-0.3"
Use parallax on decorative/background elements, not content that affects page flow. Avoid layout shift.
Scrub Animations
Link animation progress directly to scroll position. scrub-fade-in (opacity 0→1), scrub-slide-in (position -100px→0), scrub-scale (0.8x→1), scrub-rotate (-15deg→15deg). The scrub value controls smoothness: true = instant snap, 0.5 = smooth half-second catchup, 1 = one-second catchup.
data-etch-motion="scrub-fade-in" data-etch-motion-trigger="scroll" data-etch-motion-scroll-scrub="0.5" data-etch-motion-scroll-start="top 80%" data-etch-motion-scroll-end="top 30%"
Horizontal Scroll & Sequences
horizontal-scroll pins a section and scrolls content horizontally while the user scrolls vertically. Total distance auto-calculated from content width. scroll-sequence pins a section and cycles through content steps on scroll. Both use ScrollTrigger pin.
data-etch-motion="horizontal-scroll" data-etch-motion-trigger="scroll" data-etch-motion-scroll-pin="true"
Use data-etch-motion-disabled="768" to disable horizontal scroll below tablet width.
Counter
Animates a number from start to end value when triggered on scroll. Supports prefix ($), suffix (%, +), and decimal places. Uses GSAP snap for clean integer display.
data-etch-motion="counter" data-etch-motion-trigger="scroll" data-etch-motion-counter-start="0" data-etch-motion-counter-end="2500" data-etch-motion-counter-prefix="$" data-etch-motion-duration="2"