Inverted Dome

An endless draggable image grid bent across a lens, so tiles stretch away towards the edges like the inside of a dome

Customize

Tile Width
200px
Tile Height
200px
Gap
16px
Border Radius
16px
Curve
0.30
Curve Radius
1.50
Zoom
0.10
Tile Rotation
0°
Grayscale
1.00
Vignette
0.00
Auto Scroll X
0px/s
Auto Scroll Y
0px/s
Drag Sensitivity
1.00
Wheel Sensitivity
0.50
Friction
0.90
Segments
20
Seed
0

Props

28
imagesstring[]

Image URLs tiled across the endless grid.

Default—
tileWidthnumber

Tile width in CSS pixels.

Default200
tileHeightnumber

Tile height in CSS pixels.

Default200
gapnumber

Space between tiles in CSS pixels.

Default16
borderRadiusnumber

Corner radius of each tile in CSS pixels.

Default16
curvenumber

How hard the lens stretches tiles towards the edges; 0 flattens the grid.

Default0.3
curveRadiusnumber

Reach of the lens as a multiple of the viewport diagonal; larger softens the bend.

Default1.5
zoomnumber

Magnification at the centre of the lens.

Default0.1
tileRotationnumber

Rotation of every tile in degrees.

Default0
grayscalenumber

Desaturation of the images, 0 to 1.

Default0
vignettenumber

Darkening towards the edges, 0 to 1.

Default0
autoScrollXnumber

Continuous horizontal drift in pixels per second.

Default0
autoScrollYnumber

Continuous vertical drift in pixels per second.

Default0
enableDragboolean

Allow dragging the grid with pointer or touch.

Defaulttrue
enableWheelboolean

Allow scrolling the grid with the wheel or trackpad.

Defaulttrue
axis"both" | "x" | "y"

Restrict movement to one axis.

Default"both"
dragSensitivitynumber

Multiplier on drag distance.

Default1
wheelSensitivitynumber

Multiplier on wheel delta.

Default0.5
frictionnumber

Velocity kept per frame after release, 0 to 0.99; higher glides longer.

Default0.9
segmentsnumber

Vertices per tile edge; more bends smoother at a GPU cost.

Default20
seednumber

Shuffles which image lands on which cell.

Default0
backgroundColorstring

Backdrop behind the tiles.

Default"transparent"
dprnumber

Upper device pixel ratio bound.

Default2
openOnClickboolean

Open the clicked tile in a lightbox that blurs the grid behind it.

Defaultfalse
onTileClick(index: number, src: string) => void

Fires with the image index and URL when a tile is clicked.

Default—
onLoad() => void

Fires once the atlas is ready and tiles are visible.

Default—
classNamestring

Extra classes for the root element.

Default—
childrenReactNode

Content layered above the grid.

Default—