tween
ComponentsTemplatesShowcaseContact

Command Palette

Search for a command to run...

Getting Started
  • Introduction
  • Installation
  • StoryNew
Guides
  • Motion Principles
  • Scroll and Smooth Scroll
  • Performance and Accessibility
Scroll Animations
  • Sticky Cards Scroll
  • Rise Fan Cards Scroll
  • Rotate Stack Scroll
  • Doodle Lens ScrollNew
  • Slit Open Hero ScrollNew
  • Logo Mask Zoom ScrollNew
  • ASCII Dissolve ScrollNew
  • Lottie Flight ScrollNew
  • Inline Icon Text ScrollNew
  • Starfield ScrollNew
  • Name Swap ScrollNew
  • Spotlight Gallery HeroNew
  • Slit Rotate Hero ScrollNew
  • Stroke Cover ScrollNew
  • Stroke Rows ScrollNew
Text Animations
  • Text Skew Reveal
  • Block Text Reveal
Hover & Cursor
  • Image Trail Cursor
  • Cursor Depth Logo
  • Physics Tag Drop
  • Elastic Card ListNew
  • Magnetic Cards SpringNew
Sliders & Carousels
  • Wheel Fullscreen Carousel
  • Ripple Displacement Slider
  • Three.js Blend Slider
  • Stacked Deck Slider
  • Orbit Cylinder SliderNew
  • Fan Stack SliderNew
  • Exponential Strip SliderNew
  • Dual Column SliderNew
Galleries & Grids
  • Scroll Wave Gallery
Menus & Navigation
  • Shrink Page MenuNew
Preloaders & Intros
  • Floating Items RevealNew
  • Word Cycle RevealNew
  • Tile Grid LoaderNew
Page Transitions
  • Panel Assembly TransitionNew
3D & WebGL
  • Fractal Glass Hero
  • Fluid Cursor Canvas
  • Fluid Portrait Hero
  • Fluid Gradient Canvas
  • Inversion Lens HoverNew
UI Elements
  • Circular Widgets
  • Vinyl Cover
  • Image Explosion Footer
  • Accordion Image FramesNew

(Tween) — Motion registry

Animated components & full sites, one command away.

Product

  • Components
  • Templates
  • Installation
  • Guides
  • Blog
  • Contact

Categories

  • Scroll Animations
  • Text Animations
  • Hover & Cursor
  • Sliders & Carousels
  • Galleries & Grids
  • Menus & Navigation
  • Preloaders & Intros
  • Page Transitions
  • 3D & WebGL
  • UI Elements
TWEEN
ease: power2.inOut0.00s
© 2026 TweenBack to topBuilt by mohammad
  1. Docs/
  2. Components/
  3. Logo Mask Zoom Scroll

Logo Mask Zoom Scroll

PreviousNext

A pinned hero seen through a logo-shaped hole in an SVG mask. The hole starts huge and shrinks down to the logo while the image scales, fades to white and a headline wipes in.

Open in
logo-mask-zoom-scroll-demo

Scroll to reach the coast

Film Days
North Coast
June 11–19

Nine nights of cinema at the edge of the map.

components/ui/logo-mask-zoom-scroll-demo.tsx
import { LogoMaskZoomScroll } from "@/registry/tween/logo-mask-zoom-scroll"

export function LogoMaskZoomScrollDemo() {
  return <LogoMaskZoomScroll />
}

Installation

pnpm dlx shadcn@latest add https://tweenui.dev/r/logo-mask-zoom-scroll.json

Usage

import { LogoMaskZoomScroll } from "@/components/ui/logo-mask-zoom-scroll"
<LogoMaskZoomScroll
  image="/fjord.jpg"
  foregroundImage="/fjord-cliff-cutout.png"
  logoPath="M0 0H100V100H0Z"
  title={
    <>
      Orhav <br /> Film Days
    </>
  }
/>

logoPath is any SVG path d string. Pick a shape whose centre point sits inside a filled area, so the hole covers the whole screen at the starting zoom.

How it works

A full-size SVG overlay is filled with background and masked by a <mask> whose white rect has the logo path cut out in black. The path is fitted into a 400px box centred a quarter of the way down the hero. The hero pins for pinDistanceFactor viewport heights and a single ScrollTrigger (scrub: 1) drives:

  • 0 → 0.15: the white logo on the image and the hint text fade out.
  • 0 → 0.85: the overlay scales from initialOverlayScale down to 1 on an exponential curve around 50% 25%, so the hole closes evenly into the logo. The image layer scales from 1.5 to 1.
  • 0.25 → 0.65: a white layer fades in over the image, so the logo reads as white.
  • 0.7 → 0.85: the headline fades in, scales from 1.25 to 1, and a hard-stop gradient moves up through its clipped text.

If you pass foregroundImage, it sits between the hero logo and the hint, so a cut-out subject can overlap the logo. The trigger is rebuilt and the mask re-fitted when the scroller resizes. With prefers-reduced-motion: reduce the logo and headline are shown in their final state.

Props

PropTypeDefaultDescription
imagestringremote fjord photoHero background image.
foregroundImagestring—Optional transparent cut-out above the logo.
logoPathstringblocky ORHAV wordmarkSVG path data for the mask hole and hero logo.
hintReactNode"Scroll to reach the coast"Small text near the bottom of the image.
titleReactNodethree-line headlineHeadline revealed with the gradient wipe.
outroTextReactNodeshort closing lineText of the section after the hero.
initialOverlayScalenumber500Starting zoom of the overlay.
pinDistanceFactornumber5How many viewport heights the hero pins for.
backgroundstring"#0d1417"Overlay and page color.
accentstring"#f0a35e"Lower color of the headline gradient.
fontFamilystringDM Sans stackFont for all text.
scrollerHTMLElement | string | null—Optional ScrollTrigger scroller.
Slit Open Hero ScrollASCII Dissolve Scroll

On This Page

InstallationUsageHow it worksProps

Contribute

  • Report an issue
  • Request a feature
  • Edit this page