Animations & FX Reference
All scroll, hover, and interactive animation techniques across Outcrowd.io (inspiration) and the Brandarc prototype. Lottie animation assets are documented separately in the Lottie assets viewer.
Scroll Reveals
| Technique | Outcrowd.io | Brandarc |
|---|---|---|
Character-by-character text reveal Text splits into characters, each fading in individually, linked to scroll position | All pagesGSAP GSAP + SplitType + ScrollTrigger (scrub mode, stagger: 0.05s, power2.out) | HomeGSAP GSAP + SplitType + ScrollTrigger — hero, challenge, case studies headings (scrub, stagger: 0.05s, power2.out) |
Element scroll reveals (fade, slide, scale, blur, clip-path) Elements animate in with configurable presets as they enter the viewport, fully reversible | Home, About, Services, Branding, Design, Development, CasesWebflow IX2 Webflow IX2 scroll-triggered TRANSFORM_MOVE + STYLE_OPACITY with staggered keyframes across all pages | Home, AboutGSAP useScrollAnimation — GSAP + ScrollTrigger scrub (11 presets, 5 easings, delay, randomRotate) |
Simple scroll reveal (opacity + translateY) Basic fade-up reveal with fixed travel distance | HomeWebflow IX2 IX2 stat-intoview: 4 stat numbers fade + slide up (y: 1.5-3rem → 0, 600ms ease, staggered delays) | AvailableComposable useScrollReveal (not yet used, superseded by useScrollAnimation) |
Staggered rotation entrance Cards rotate into view alternately from left and right with translateX + rotateZ | HomeWebflow IX2 4 stats cards alternate from left (x:-30rem, z:-15deg) and right (x:28rem, z:+15deg), IX2 home-second | — |
Gradient sweep on viewport entry Radial gradient overlay sweeps across card backgrounds on scroll entry, then loops through positions | HomeWebflow IX2 stats cards: gradient sweeps x:-90%→0% (2s outExpo), then loops through 4 ambient positions (2s/step) | — |
Scale-in reveal (scale + translate + opacity) Elements scale down from oversized while sliding in and fading, creating depth | HomeWebflow IX2 solution cards scale 1.5→1, translateY 80%→0%, fade in, IX2 solution (SCROLL_PROGRESS) | — |
Client logos staggered rise Multiple logo elements rise from below at staggered scroll keyframes | HomeWebflow IX2 9 logos translate Y 100-200px → 0 at keyframes 10→70, smoothing 65, IX2 Brands Scroll | — |
Hero Effects
| Technique | Outcrowd.io | Brandarc |
|---|---|---|
Hero video expand-on-scroll Hero video container grows from constrained to full-width as user scrolls through hero section | HomeInline JS width 48–60% → 100%, borderRadius 1.7vw → 0, scroll-linked at 20–33% | HomeGSAP useHeroScroll — GSAP timeline + ScrollTrigger scrub at 15%–35%, width 65% → 100%, borderRadius → 0 |
Hero image parallax + gloss overlay Image zooms with object-position shift, frame expansion, and diagonal white gloss sweep | — | AboutGSAP useHeroImageParallax — GSAP ScrollTrigger onUpdate: scale 1.0→1.8, crop 50%→-30%, frame +6%, gloss 0.3→0.75 |
Floating panel parallax (differential scroll speed) Positioned elements scroll faster than page at constant rates with viewport-based fade in/out | — | HomeInline JS Command Center side panels — left (12% faster) and right (8% faster) with fade in at 85% vh, fade out at top 18% vh |
Parallax marquee text Background-clip text with scroll-linked horizontal gradient sweep for reveal/unreveal | HomeInline JS two-phase slide in (15–24%) / out (28–35%) within .height-cases section | — |
Hero parallax layers Multiple positioned elements move upward at different scroll rates, creating layered depth | HomeWebflow IX2 7 elements (set-1 through set-7) at different rates (-51vw to -70vw), IX2 hero-scroll-july (SCROLL_PROGRESS) | — |
Case study hero expand Hero container expands on scroll, similar to homepage but with different start sizes per page | All 6 case studiesInline JS width 45-67% → 100%, borderRadius 1.87vw → 0, scroll range 17-32% | — |
Interactive / Hover Effects
| Technique | Outcrowd.io | Brandarc |
|---|---|---|
Card spotlight (cursor-tracking gradient) Radial gradient follows cursor via CSS --mouse-x / --mouse-y custom properties on cards | HomeInline JS #cards .service-card, ::before pseudo-element, opacity 500ms transition | HomeComposable useCardSpotlight: .card-spotlight elements, same CSS variable technique |
Magnetic button glow (explode) Hidden .explode element inside buttons tracks cursor and scales up massively on hover | All pagesInline JS scale 0.1→50–70, 0.6s cubic-bezier(.455,.03,.515,.955), text color swap | — |
Magnetic element attraction Elements shift toward cursor proportional to distance and configurable strength | All pages (footer + stats)Inline JS Social icons (strength 10), stat blocks (strength 30), instant reset on leave | — |
Multi-layer image hover Image duplicated into layers that fan out on hover via staggered GSAP timeline | AboutGSAP 4 layers, scale property, power2.inOut, -0.1s reverse stagger, data-attribute config | — |
Count-up numbers Numbers animate from 0 to target value on viewport entry with easeOutCubic | — | AvailableComposable useCountUp (IntersectionObserver trigger, plays once, not yet used in pages) |
Custom cursor tracking Custom cursor element follows mouse position over specific sections | Case study pagesInline JS .cursor tracks mouse over #next section, opacity toggles on enter/leave (5 of 6 pages) | — |
Navigation & Layout
| Technique | Outcrowd.io | Brandarc |
|---|---|---|
Nav collapse on scroll direction Nav links shrink/fade on scroll-down, expand on scroll-up; button fills the space | All pagesInline JS scale(0.6), width 0, opacity 0, button expands to 16rem, 0.7s ease | — |
Logo swap (section background detection) Logo variant switches based on which section the nav overlaps via section-color attribute | All pagesInline JS reads section-color="black"|"white", toggles opacity + z-index per frame | — |
Smooth scroll (Lenis) Momentum-based smooth scrolling replacing native scroll behavior | All pagesLenis Lenis 1.0 (lerp: 0.09, wheelMultiplier: 0.7, smoothTouch: false) | — |
Content Animations
| Technique | Outcrowd.io | Brandarc |
|---|---|---|
Swiper carousel with hover theme Touch-enabled carousel with slide color inversion on hover (light ↔ dark) | HomeSwiper Swiper 8, speed 2100ms, loop, 2.25 slides desktop / 1 mobile | — |
Testimonial section collapse Content elements collapse into compact proof bar on scroll-down, reverse on scroll-up | HomeInline JS headings width→0, Clutch icon 3.875vw→16.6vw, 0.3–0.7s transitions | — |
Preloader (first visit) Lottie logo animation on first visit, skipped on return via sessionStorage | All pagesInline JSLottie DOMContentLoaded + sessionStorage check, hidden for internal navigation | — |
Lottie scroll control Lottie animation playback progress tied to scroll position (scrubbed) | ServicesWebflow IX2Lottie card Lottie loops (SCROLL_INTO_VIEW trigger) Development: Lottie scrub via SCROLL_PROGRESS | — |
Rotated card fan layout Cards positioned at various rotation angles with translate offsets, creating a scattered/dynamic visual | CasesCSS cards rotated -12deg to 30deg with translate offsets, static CSS transforms implying motion through layout | — |
Media & Audio
| Effect | Outcrowd.io | Brandarc |
|---|---|---|
Video playback control (visibility) Video play/pause triggered by element visibility in viewport | ServicesInline JS videos auto-play when card is visible, pause when scrolled away | — |
Hero background video Full-bleed autoplay video behind hero content | Case study pagesInline JS autoplay muted background video behind hero section | HomeInline JS autoplay muted loop video with shimmer placeholder, fades in when ready |
Card hover video playback Video plays on card hover/visibility, pauses otherwise | CasesInline JS case study cards play embedded video on interaction | — |
Awards hover sound Audio feedback on hover over award badges | HomeInline JS short audio clip plays when hovering over awards section elements | — |
Forms & CMS
| Effect | Outcrowd.io | Brandarc |
|---|---|---|
Form input focus states Custom styled focus indicators on form fields | ContactCSS custom border/shadow transitions on input focus | — |
Form validation feedback Visual indicators for valid/invalid form field states | ContactCSS color and icon changes based on field validation status | — |
CMS dynamic filtering Client-side content filtering and progressive loading | BlogInline JS Finsweet CMS Filter + CMS Load for category filtering and pagination | — |
Coverage Summary
Character text reveals, magnetic buttons, magnetic attraction, multi-layer image hover, nav collapse, logo swap, Lenis smooth scroll, Swiper carousel, marquee text, testimonial collapse, preloader, hero parallax layers, staggered rotation entrance, gradient sweep, scale-in reveal, client logos staggered rise, case study hero expand, custom cursor tracking, Lottie scroll control, rotated card fan layout
Hero video expand-on-scroll, card spotlight (cursor gradient), element scroll reveals (IX2 vs GSAP ScrollTrigger), simple scroll reveal (IX2 vs useScrollReveal)
Hero image parallax + gloss, floating panel parallax, count-up numbers