StealThis .dev
Pages Medium

News — Photo Essay / Visual Story

A full-bleed editorial photo essay from a fictional coastal paper, opening on a serif title spread and moving through twelve scroll-snapping plates of duotone press photography, each with an italic caption and credit line, interleaved with two-column text passages and an oversized pull quote. A sticky masthead frame counter tracks 01 of 12 with a thin red progress rule, keyboard and button navigation jump between plates, captions fade in on view, and clicking any frame opens a focus-trapped lightbox zoom — all in vanilla JS.

Open in Lab
html css vanilla-js
Targets: JS HTML

Code

Photo Essay / Visual Story

A long-form visual story for The Tidewater Review, a fictional coastal paper. It opens on a serif title spread — masthead kicker, the headline In the Wake, a dek, a byline with dateline and read time — then carries the reader through twelve full-bleed plates. Each “photograph” is a hand-built duotone gradient tuned to feel like real press imagery (silvered dawn water, sepia shucking hands, a single lantern in the dark, an ember dusk over the cut), set in an aspect-ratio frame with a plate number, an italic Playfair Display caption and an uppercase credit line.

Plates of imagery are interleaved with short two-column text passages — the lead carries a red drop cap and justified, hyphenated body copy — and a centred oversized pull quote. A sticky masthead at the top shows the frame counter (01 / 12) and arrow controls, with a thin red progress rule beneath it; an IntersectionObserver keeps both in sync as you scroll. Captions fade up as their plate enters the viewport.

Navigation is built for both pointer and keyboard: arrow keys, space, Page Up/Down and Home/End move between plates with scroll-snap, while clicking or focusing any frame opens a focus-trapped lightbox that re-creates the same duotone at full size with its caption. Esc or a click on the backdrop closes it, focus returns to the frame, and a small toast() helper announces moves. All interactions are vanilla JS with no external libraries, and the layout collapses from two columns to one below ~720px and stays usable down to ~360px.

Illustrative UI only — masthead, headlines, bylines, and articles are fictional; not a real news publication.