Webapp Parts & Types

Interaction & Motion

webmobiledesktop

Micro-interactions, transitions, scroll choreography. The unmeasurable layer that separates good from great.

  • Variation 01

    Scroll-Triggered Stagger

    aka Reveal on Scroll · Staggered Fade-in

    Screenshot of framer.comframer.com

    Items in a section fade and rise as they enter the viewport, with staggered delays.

    When to use

    Landing pages, feature grids. Use sparingly. Once or twice per page.

    Anatomy

    • IntersectionObserver per item
    • Translate-y from 12px to 0, opacity 0→1
    • Stagger 60–80ms per item

    How the industry does it

    1 examples · credited

    Prompt

    Implement a scroll-triggered staggered reveal for a list of cards. Each card starts at opacity 0 and translateY 12px. As the section enters the viewport (threshold 0.15), each card animates to opacity 1 and translateY 0 with an 80ms stagger between siblings, using a cubic-bezier(0.22, 1, 0.36, 1) easing over 600ms. Honor prefers-reduced-motion by skipping the animation entirely. Use IntersectionObserver, no animation library required.

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro
  • Variation 02

    Magnetic CTA

    aka Sticky Cursor Button

    Screenshot of awwwards.comawwwards.com

    Button that subtly follows the cursor when nearby, then snaps back when it leaves.

    When to use

    Hero CTAs on highly aesthetic sites. Easy to overuse.

    Anatomy

    • Detect cursor distance within radius (e.g., 120px)
    • Translate button by % of distance (e.g., 0.3)
    • Spring back on mouseleave

    Prompt

    Preview · Pro to copy
    Pro

    Unlock the full prompt.

    Buy Pro

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro
  • Variation 03

    Page Transitions

    aka Route Transitions · View Transitions

    Screenshot of apple.comapple.com

    Choreographed transitions between routes. Overlay reveal, crossfade, shared elements.

    When to use

    Editorial sites, portfolios, premium SaaS. Adds polish, can hide load latency.

    Anatomy

    • Use View Transitions API (or framer-motion AnimatePresence)
    • Pair with a tiny progress bar for slow routes

    How the industry does it

    1 examples · credited

    Prompt

    Preview · Pro to copy
    Pro

    Unlock the full prompt.

    Buy Pro

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro
  • Variation 04

    Cursor Spotlight

    aka Pointer Glow · Aurora Cursor

    Screenshot of vercel.comvercel.com

    A soft radial glow that follows the cursor inside a section, lighting up the surface beneath.

    When to use

    Hero panels and feature cards on premium dev tool sites. Skip on data-dense surfaces.

    Anatomy

    • Pseudo-element radial gradient
    • Position tracked via CSS variables
    • Mask to constrain to the card
    • Opacity fades on mouseleave

    Prompt

    Build a cursor-following spotlight effect for a card or section. Attach a mousemove listener; on each event, update CSS custom properties --mx and --my with the cursor position relative to the element. A ::before pseudo-element renders a radial-gradient centered at (var(--mx), var(--my)) with a soft white-alpha falloff (200px radius). The pseudo is masked by the element's rounded shape. Opacity transitions 0 → 0.6 on mouseenter, back to 0 on mouseleave. Respect prefers-reduced-motion (disable).

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro
  • Variation 05

    Parallax Scroll Layers

    aka Depth Scroll · Multi-Layer Parallax

    Screenshot of apple.comapple.com

    Background elements move slower than foreground as the user scrolls. Gives depth without 3D.

    When to use

    Editorial sites and product launches. Don't ship in dashboards.

    Anatomy

    • Absolutely-positioned layers
    • transform: translateY tied to scrollY * factor
    • Different factors per layer (0.2 / 0.5 / 0.8)
    • GPU-accelerated transforms only

    Prompt

    Preview · Pro to copy
    Pro

    Unlock the full prompt.

    Buy Pro

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro
  • Variation 06

    Text Mask Reveal

    aka Scroll Reveal Type · Line-by-Line Reveal

    Screenshot of anthropic.comanthropic.com

    Long-form copy that reveals line by line as the user scrolls, with each line crossfading from muted to bright.

    When to use

    Manifesto and editorial sections. Pairs well with a serif typeface.

    Anatomy

    • Each word in its own span
    • Color/opacity interpolates with scroll progress
    • Sticky container until the reveal completes

    Prompt

    Build a scroll-triggered text reveal. Wrap each word of a paragraph in a span. As the user scrolls past the section, interpolate each span's color (or opacity) from the muted color to the foreground color based on its position within the section's scroll range. Use a sticky container so the paragraph stays in view while the reveal progresses. Use scroll-linked CSS animations (animation-timeline: scroll) where supported, fall back to a rAF + getBoundingClientRect loop. Respect prefers-reduced-motion (render fully revealed).

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro
  • Variation 07

    Tilt on Hover

    aka 3D Card Hover · Perspective Tilt

    Screenshot of apple.comapple.com

    Cards that tilt slightly toward the cursor on hover, with a subtle highlight following the same path.

    When to use

    Premium product cards, portfolio thumbs. Tasteful in small doses, gimmicky if used everywhere.

    Anatomy

    • Track cursor offset relative to card center
    • rotateX/rotateY proportional to offset (max ~6°)
    • Highlight pseudo follows the cursor
    • Smooth easing on enter/leave

    Prompt

    Build a tilt-on-hover card. Wrap each card in a 3D-perspective container. On mousemove, compute the cursor offset from the card center, normalize to [-1, 1], and apply rotateY = offsetX * 6deg and rotateX = -offsetY * 6deg with a 150ms ease transition. Add a ::after pseudo-element radial-gradient that follows the cursor for the highlight. On mouseleave, smoothly reset rotation and fade the highlight. Disable for prefers-reduced-motion and touch devices.

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro
  • Variation 08

    Drag to Reorder

    aka Sortable List · Reorderable List

    Screenshot of linear.applinear.app

    Smooth drag-and-drop reordering for vertical lists, with a tactile lift, drop indicator, and reflow animation.

    When to use

    Settings, columns, todos, kanban. Anywhere user order matters. Pair with keyboard reorder for accessibility.

    Anatomy

    • Drag handle (⋮⋮) on the left of each row
    • Lift scale + shadow on grab
    • 2px insertion indicator between rows
    • Reflow animation on drop
    • Keyboard reorder via Space + arrows

    Prompt

    Build a drag-to-reorder list with dnd-kit. Each row renders a grab-handle icon on the left and the row content. On dragstart, the row lifts (scale 1.02, drop shadow) and other rows shrink slightly. A 2px accent insertion line appears between rows where the drop will land. On drop, animate all rows to their new positions with framer-motion layout. Keyboard reorder: focus a handle, press Space to lift, ArrowUp/Down to move, Space to drop. Announce reorder via aria-live.

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro
  • Variation 09

    Micro Button Feedback

    aka Tactile Button · Bouncy Button

    Screenshot of linear.applinear.app

    Buttons that respond with subtle scale-down on press and a small confirmation animation on success.

    When to use

    Everywhere. But tune so the press feedback never delays the actual action.

    Anatomy

    • active state: scale 0.97
    • transitions ~80ms
    • loading state replaces label with spinner
    • success state shows briefly then resets

    Prompt

    Build a button component with micro-interactions. Base state: rounded-md, 1px border, padding. :active applies transform: scale(0.97) with a 60ms transition. Adds a loading prop that swaps the label for an inline spinner without changing button width (preserve via min-width or visibility: hidden on the original label). On async success, briefly swap to a check icon + tinted background for 1200ms, then reset. Disabled state has cursor: not-allowed and opacity 0.5. Focus ring is a 2px offset accent ring.

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro
  • Variation 10

    Shared-Element Transition

    aka FLIP · Card to Detail Morph

    Screenshot of apple.comapple.com

    A card on a list page morphs into the hero of the detail page. Same image, same headline, no jump cut.

    When to use

    Editorial product catalogs, portfolios, gallery sites. Demands shared keys on both ends.

    Anatomy

    • Matched IDs on the card and the detail hero
    • FLIP technique or View Transitions API
    • Aspect ratio preserved during morph
    • Other content fades in after the morph completes

    Prompt

    Preview · Pro to copy
    Pro

    Unlock the full prompt.

    Buy Pro

    Polish & tuning

    2 of 4 unlocked

    Motion

    Ease-out for entrance, ease-in-out for state. 200ms hover, 400–600ms layout. Stagger children at 30–60ms so groups feel intentional, not synchronized.

    Spacing

    Pick one scale (4 or 8) and don't mix. Section padding 96–128px desktop, 48–64px mobile. Headline sits ~24px above the subhead; subhead ~32px above the CTA cluster.

    Pro

    Unlock the rest of the tuning notes.

    Buy Pro