Layouts

One block, five layouts. Switch between them in the Layout panel at any time – the photos, captions and categories stay the same. Every layout filters, opens the lightbox and adapts to phones.

LayoutBest forCrops photosJavaScript
MasonryMixed portrait and landscape photosNo1 KB placement script
Justified rowsPhoto-book look, even rowsNo1 KB placement script
GridProducts, teams, anything that should line upYes, to a ratio or heightNone – pure CSS
CarouselHeroes and long series in little spaceNoNavigation, loaded on demand
AccordionA compact strip that opens on hover or clickClosed slices onlyOnly for “open on click”

Columns, row height and aspect ratio can differ per device: desktop, tablet (under 782px) and mobile (under 600px).

Masonry

Each photo goes into the shortest column, so the columns end at similar heights while the reading order stays left to right. A 1 KB script places the items before the first paint, so nothing jumps. Where the browser supports native masonry (display: grid-lanes) the script steps aside.

Options: columns and gap per device. Without JavaScript, masonry becomes a plain column grid.

Justified rows

Every row fills the full width at about the same height, and every photo keeps its proportions. Rows break where the height fits best. Built with flexbox: each item grows in proportion to its aspect ratio.

Options: row height per device (240 · 200 · 160 px by default), gap.

Grid

Cropped to one shape. Choose aspect ratio (1:1 by default; tablet and mobile can have their own) or fixed height. Pure CSS grid with aspect-ratio and object-fit.

One row that scrolls sideways with scroll-snap. Swipe on phones, use the arrows or the arrow keys. Picking the carousel sets a slide height of 400 · 320 · 260 px and a 12px gap, as long as you haven’t changed those yourself.

OptionValues
Arrowson the photos (default), circle buttons, filled buttons, minimal arrows, follow the mouse (left or right third; touch swipes), none. Arrow keys always work.
Autoplay2 s by default; 0 = off, 0.5–10 s. Pauses on hover, on focus and off screen; off with reduced motion.
Move per click1 photo, a page, 2 or 3
At the endloop (endless both ways: copies of the photos fill about two screens on each side, and the row jumps back by one round while nothing on screen changes, so it never pauses at an end or shows a photo still loading; the copies are hidden from screen readers and the keyboard, and a click on one opens the real photo. If every photo fits on screen, it rewinds instead), stop, rewind to the start
Slides visible0 = the photos’ own widths, or 1–6 equal slides (at most 2 on tablets, 1 on phones)
Center the current slideon by default; slides snap to the middle and the ones beside it fade back (scroll-driven, no JavaScript). Works with every end mode; “a page” then moves one slide.
Show scrollbaroff

Accordion

Slices that open to the photo’s own width, so the open photo is never cropped. On phones the slices turn vertical. Open a slice on: click (default – a click on the open slice then runs the click behavior) or hover. Hover mode needs no JavaScript.

Reveal on scroll

Photos animate in as they scroll into view: rise, fade, zoom, blur, tilt up, wipe, pop, flip, slide (neighbours come in from alternating sides) or iris. The reveal is staggered: neighbouring photos arrive one after another instead of a whole row at once. It works on masonry, rows, grid and the carousel (which reveals sideways). The effect is a CSS scroll-driven animation – no JavaScript, and nothing runs with reduced motion or in browsers without scroll-driven animations; those simply show the photos.

Each photo animates over the same scroll distance from where it enters, so tall and short photos reveal alike. Stagger (2.5 rem by default, 0–6) is the scroll distance between neighbours starting: larger values spread a row out more, 0 brings a row in together. It applies to masonry, rows and grid.

Turn it on under Items → Reveal on scroll. In the editor the reveal plays in Preview mode; autoplay and hover effects run only on the front end.

See all five live, with their settings as switchable chips, on the Layouts page and in the playground.