Every motion in the TriggerFlex kit, one per panel, running live. Each panel names the Flex, describes what it does, and lists exactly what it needs to build — so you can say “Flex Hero with Mouse Trails up top, Snap Showcase for the work” and we both mean the same thing.
Every element fades up from soft-blur as it enters view. Cascading delays across siblings make it read as choreographed, not decorated. This is used ~25× on a real page — it is the house default for anything appearing on scroll.
Scroll back up and down — each element blurs in from opacity 0 + blur(16px), on a cascading delay.
data-ui-animate + data-direction / data-delay / data-offset / data-durationElements travel at different speeds as you scroll, so the composition gains depth. The cheapest possible ‘designed’ feel — one attribute per layer, powered by ScrollSmoother’s effects engine.
data-speed (<1 lags, >1 leads); optional data-lagdata-speed="0.6–1.2" on any element inside #smooth-contenteffects:true. Keep speed deltas subtle — big gaps feel gimmicky.Move the cursor across the stage and a stream of images spawns in its wake, cycling through the set and fading out behind you. A hover-driven hero delight — desktop only.
.content > .content__img > .content__img-inner[data-background]; auto-inits on the first .content.content). Hidden on mobile (d-none d-md-block) — give touch users a static fallback.The panel pins and, as you scroll, wipes through full-bleed slides that snap into place — thumbnails and captions track in sync. The vertical portfolio centerpiece; this is ‘controlled cinema’.
.ui-snap-slider → .snap-slide .main-img + .snap-slider-thumbs .thumb-slideCards pin and scale down slightly as the next card scrolls up over them, building a physical ‘deck’ feel. Reads as testimonials or featured items with hierarchy.
1 - (count - index) × 0.025 as the next arrives.stackCard (all instances collected globally)A section title pins, scales up and dissolves on scrub as the content beneath scrolls past. Gives a section a deliberate, cinematic transition.
The title above pins in place, scales up to 1.3× and fades to nothing as this block scrolls past it — a cinematic hand-off between sections.
Reserve it for the one or two moments in a page that earn a pause.
scale 1→1.3, opacity 1→0, linear, scrubbed to scroll.fix-title-sec .sec-head-crevWhen it scrolls into view, a set of chips rains into a bin under real gravity — and you can grab and fling them with the mouse. A playful, tactile signature for a services or skills section.
[data-tp-throwable-scene] → [data-tp-throwable-el] childrenA custom cursor dot trails the mouse; buttons magnetically pull toward it on hover; links roll their letters over. The small touches that quietly signal ‘expensive’.
.hover-this translates up to 25px toward pointer; .rolling-text letters roll on hover.cursor (global) + .hover-this .hover-anim + .rolling-textA grid of tiles reflows into an entirely new composition as you scroll, using GSAP Flip to animate between two layouts. Documented here, not run live — it requires the Lenis scroller, which cannot share a page with ScrollSmoother.
Live demo runs on its own page: portfolio-parallax.html / scrollbased.
Flip.getState between two layout classes, animated on scrub + pin; inner images scale 2→1.gallery ↔ .gallery--switch (Lenis + Flip)