Pricing
Get Started
  • Introduction
  • Installation
  • MCP Server
  • Saved
Site
  • Builder (Beta)
  • Pricing
  • Roadmap
  • Affiliates
Browse
  • All Components80 New
Text34
  • 3D Letter Swap
  • 3D Text Reveal
  • ASCII Ripple
  • Bending Marquee
  • Blur Highlight
  • Cipher RevealNew
  • Domino LetteringNew
  • Elastic LetteringNew
  • Ghost TypeNew
  • Glitch Text
  • Glyph LotteryNew
  • Gravity LettersNew
  • Label OrbitNew
  • Luminous TypeNew
  • Mesh LetteringNew
  • Orbital TypeNew
  • Particle Text
  • Ribbon TypeNew
  • Rising InkNew
  • Shatter TypeNew
  • Signal TypeNew
  • Smoke TypeNew
  • Speeding Text
  • Spring LetteringNew
  • Staggered Text
  • Stipple TypeNew
  • Tessera TrailNew
  • Text Cube
  • Text MorphNew
  • Text Path
  • Text Scatter
  • Typographic WallNew
  • Vapor TypeNew
  • Wave LetteringNew
Backgrounds98
  • ASCII Tiles
  • Ascii Waves
  • Astral ShellNew
  • Aura Blob
  • Aurora Beam
  • Aurora Blur
  • Axial BeamNew
  • Binary OrbitsNew
  • Black Hole
  • Blinking Dots
  • Blinking Squares
  • Blurred Rays
  • Chroma Blinds
  • Chroma CurrentNew
  • Chroma Waves
  • Cloud AtlasNew
  • Color Loops
  • Concentric TidesNew
  • Contour TideNew
  • Dappled LightNew
  • Dither Wave
  • Dot Shift
  • Eclipse
  • Fading StarsNew
  • Falling Rays
  • Flame Paths
  • Fog Sphere
  • Glass Flow
  • Glass Tiles
  • Glimmer WrapNew
  • Glitter Warp
  • Glowing Ridges
  • Glowing Wave
  • Glue Dots
  • Glyph EmberNew
  • Glyph OrbNew
  • Glyph SonarNew
  • Glyph TideNew
  • Gradient Bars
  • Grain Wave
  • Halftone Vortex
  • Halftone Wave
  • Hexagonal VaultNew
  • Horizon BloomNew
  • Interference RibbonsNew
  • Landscape
  • Light Droplets
  • Lightspeed
  • Liquid Bars
  • Liquid Lines
  • Long Exposure
  • Luminous FilamentsNew
  • Metallic Swirl
  • Minimal Ripple
  • Mosaic
  • Mosaic Waves
  • Neon Reveal
  • Neural Flash
  • Neural Float
  • Neural Tunnel
  • Nexus RaysNew
  • Perspective Grid
  • Photon KnotNew
  • Pixel Rain
  • Prismatic SlatsNew
  • Radial Liquid
  • Ravine
  • Retro Lines
  • Ring FieldNew
  • Rising Lines
  • Rising Particles
  • Rolling Blinds
  • Rotating Stars
  • Rubber Fluid
  • Satin RidgesNew
  • Shader Waves
  • Shadow Bars
  • Silk Waves
  • Simple Swirl
  • Specter Orb
  • Spectral Clouds
  • Spectral DrapeNew
  • Spiral FunnelNew
  • Square Matrix
  • Squares Terminal
  • Squircle Shift
  • Star Swipe
  • Swirl Blend
  • Synaptic Shift
  • Tech Wall
  • Terminal RainNew
  • Thinking Dots
  • Twilight Lines
  • Vortex
  • Voxel ArcNew
  • Warp Twister
  • Watercolor
  • Wireframe Ball
3D & Shaders49
  • Agentic Ball
  • AI Blob
  • Album RailNew
  • Bend Gallery
  • Chrome OrbitNew
  • Circle Stack
  • Concave CarouselNew
  • Constellation GalleryNew
  • Contact SheetNew
  • Depth Card
  • Depth Image
  • Depth RibbonNew
  • Device
  • Dolly Gallery
  • Elastic ReelNew
  • Elastic StickerNew
  • Ember RevealNew
  • Expanding GridNew
  • Frame Border
  • Glass Reveal
  • Globe
  • Gradient Blob
  • Helix GalleryNew
  • Infinite Gallery
  • Inverted Dome
  • Iris GalleryNew
  • Lenticular Carousel
  • Momentum RingNew
  • Page Flip
  • Parallax Carousel
  • Particle Image
  • Particle Morph
  • Passage GalleryNew
  • Pixel Reveal
  • Pixel Sculpt
  • Pixelate Hover
  • Pond ImageNew
  • Portal
  • Prism CarouselNew
  • Rotating Cards
  • Scroll BendNew
  • Scroll Portal
  • Shader Card
  • Shader Reveal
  • Spin ShutterNew
  • Star Burst
  • Tumble Carousel
  • Twisting Gallery
  • Warped Card
Cursor Effects21
  • Arc CursorNew
  • Ascii Cursor
  • Celebration CursorNew
  • Chroma HaloNew
  • Cursor Wave
  • Custom Cursor
  • Dither Cursor
  • Drafting CursorNew
  • Glass Cursor
  • Glyph StreamNew
  • Grid Rise
  • Gyroscope CursorNew
  • Liquid Ascii
  • Parallax Pills
  • Pigment TrailNew
  • Pixel Magnet
  • Ribbon TrailNew
  • Smooth Cursor
  • Snapshot TrailNew
  • Stardust CursorNew
  • User Cursor
UI & Cards28
  • Animated List
  • Card Spread
  • Center Flow
  • Chroma Card
  • Circle Gallery
  • Circles
  • Click Stack
  • Comparison Slider
  • Credit Card
  • Draggable Grid
  • Frame Scrub
  • Gradient Carousel
  • Hover Preview
  • Liquid Swap
  • Loupe ImageNew
  • Magic Transform
  • Modal Cards
  • Orbit ReelNew
  • Parallax Cards
  • Preloader
  • Reel Gallery
  • Scroll Mask
  • Scroll Stack
  • Simple Graph
  • Skewed Carousel
  • Tile Reveal
  • Tilted Tiles
  • Tumble WallNew
  1. Docs
  2. Components
  3. 3D & Shaders
  4. Expanding Grid
PreviousEmber Reveal3D & ShadersNextFrame Border3D & Shaders

Animated components, blocks, and templates for React. Pay once, ship stunning pages forever.

pro@reactbits.dev

Site

HomeBuilder (Beta)PricingTestimonialsFAQsRoadmapChangelogFree Components

Docs

IntroductionInstallationMCP ServerComponentsBlocksTemplates

Resources

AboutUse casesComparisonsAlternativesFor AI agents

Legal & Account

LoginAffiliateLicensePrivacyContact

© 2026 pro.reactbits.dev. All rights reserved.

Expanding Grid

A portrait grid that magnifies faces under the cursor

expanding-grid-tw

Customize

Background
Columns
12
Tile Size
0.36
Magnify
1.50×
Lens Size
1.30
Fill
0.92
Radius
0.14
Saturation
0.00
Dim
0.25
Follow
0.45s
Autoplay Speed
1.00
Seed
0

Props

25
NameTypeDefaultDescription
items{ src: string; alt: string; title?: string; subtitle?: string; href?: string }[]studio portrait collectionImages for the tiles, repeated across the grid so neighbours never match. Images must allow cross-origin loading. Title and subtitle caption an opened photo; href makes opening it navigate.
columnsnumber12Number of columns across the container. Rows fill the height with square cells; narrow screens get fewer columns.
tileSizenumber0.36Size of a resting tile as a fraction of its cell. Small values leave the grid airy; values near 1 make a tight mosaic.
magnifynumber1.5How much the lens spreads the grid apart at its centre. Tiles there also grow to fill their enlarged cells.
lensSizenumber1.3Radius of the lens, in cells.
fillnumber0.92How much of its cell a tile at the centre of the lens fills. The rest is the gap between enlarged photos.
radiusnumber0.14Corner rounding as a fraction of the tile size. 0.5 makes circles.
saturationnumber0Colour of the tiles outside the lens, from 0 (monochrome) to 1 (full colour). Tiles in the lens are always in full colour.
dimnumber0.25How much the tiles outside the lens fade into the background.
follownumber0.45Seconds the lens takes to catch up with the pointer. Higher values feel heavier and smoother.
autoplaybooleantrueWhen the pointer is away, the lens drifts on its own across the grid.
autoplaySpeednumber1Speed of that drift.
openOnClickbooleantrueClicking a tile opens its photo large in the centre. Click again or press Escape to put it back.
captionsbooleantrueShow the title and subtitle of an opened photo.
interactivebooleantrueLet the pointer and keyboard steer the lens. The arrow keys move it tile by tile and Enter opens the tile under it.
backgroundColorstring"transparent"Background of the component. Captions adapt to it.
seednumber0Changes how the images are arranged across the grid.
pausedbooleanfalseStops the autoplay drift. Reduced-motion users never get the drift.
dprnumber2Maximum device pixel ratio for the canvas.
ariaLabelstring"Portrait grid…"Accessible description of the grid and how to use it.
onOpen(item, index) => void—Called when a photo is opened, with null and -1 when it is put back.
ref{ open, close, focusAt }—Imperative controls: open an item, close it, or move the lens to a column and row.
childrenReactNode—Content centred over the grid, such as a headline. It fades out while a photo is open.
classNamestring—Classes for the root element. It fills its parent, with a 420px minimum height.
styleCSSProperties—Inline styles for the root element.
items{ src: string; alt: string; title?: string; subtitle?: string; href?: string }[]

Images for the tiles, repeated across the grid so neighbours never match. Images must allow cross-origin loading. Title and subtitle caption an opened photo; href makes opening it navigate.

Defaultstudio portrait collection
columnsnumber

Number of columns across the container. Rows fill the height with square cells; narrow screens get fewer columns.

Default12
tileSizenumber

Size of a resting tile as a fraction of its cell. Small values leave the grid airy; values near 1 make a tight mosaic.

Default0.36
magnifynumber

How much the lens spreads the grid apart at its centre. Tiles there also grow to fill their enlarged cells.

Default1.5
lensSizenumber

Radius of the lens, in cells.

Default1.3
fillnumber

How much of its cell a tile at the centre of the lens fills. The rest is the gap between enlarged photos.

Default0.92
radiusnumber

Corner rounding as a fraction of the tile size. 0.5 makes circles.

Default0.14
saturationnumber

Colour of the tiles outside the lens, from 0 (monochrome) to 1 (full colour). Tiles in the lens are always in full colour.

Default0
dimnumber

How much the tiles outside the lens fade into the background.

Default0.25
follownumber

Seconds the lens takes to catch up with the pointer. Higher values feel heavier and smoother.

Default0.45
autoplayboolean

When the pointer is away, the lens drifts on its own across the grid.

Defaulttrue
autoplaySpeednumber

Speed of that drift.

Default1
openOnClickboolean

Clicking a tile opens its photo large in the centre. Click again or press Escape to put it back.

Defaulttrue
captionsboolean

Show the title and subtitle of an opened photo.

Defaulttrue
interactiveboolean

Let the pointer and keyboard steer the lens. The arrow keys move it tile by tile and Enter opens the tile under it.

Defaulttrue
backgroundColorstring

Background of the component. Captions adapt to it.

Default"transparent"
seednumber

Changes how the images are arranged across the grid.

Default0
pausedboolean

Stops the autoplay drift. Reduced-motion users never get the drift.

Defaultfalse
dprnumber

Maximum device pixel ratio for the canvas.

Default2
ariaLabelstring

Accessible description of the grid and how to use it.

Default"Portrait grid…"
onOpen(item, index) => void

Called when a photo is opened, with null and -1 when it is put back.

Default—
ref{ open, close, focusAt }

Imperative controls: open an item, close it, or move the lens to a column and row.

Default—
childrenReactNode

Content centred over the grid, such as a headline. It fades out while a photo is open.

Default—
classNamestring

Classes for the root element. It fills its parent, with a 420px minimum height.

Default—
styleCSSProperties

Inline styles for the root element.

Default—