StealThis .dev
Pages Medium

Photography — Landing Product

A gallery-dark landing for a commercial product photographer: a full-bleed hero with a rotating specialty word, a filterable grid of product and lifestyle shots that reveal on scroll, a services rack covering e-commerce, lifestyle, and 360-degree spins, a scrolling client-logo marquee, and a two-step quote CTA with a live budget slider. Vanilla JS drives the filters, lightbox, counters, and a toast-backed inquiry flow — keyboard-usable and fluid down to 360px.

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

Code

A dark, image-first landing page for the fictional commercial studio Halbrand & Co., built for brands that sell things worth photographing. The hero pairs a serif Fraunces headline with a rotating specialty word — sneakers, fragrance, ceramics — over a full-bleed gradient plate, plus live counters that tally shoots delivered, brands served, and average turnaround. Thin uppercase labels and warm sand accents carry the gallery mood.

Below the fold, a work grid of product and lifestyle shots filters by category through a row of chips, with each card lifting on hover and opening in a keyboard-navigable lightbox. A services rack lays out e-commerce packshots, lifestyle sets, and 360-degree spins as priced cards, a client marquee scrolls fictional wordmarks on an infinite loop, and a closing quote form walks through a two-step brief with a live budget slider.

Every interaction is vanilla JS: filter chips animate the grid, the lightbox traps focus and responds to arrow keys, IntersectionObserver fades sections up and starts the stat counters, the marquee pauses on hover, and submitting the quote drops a toast. Focus rings stay visible throughout and the whole page reflows cleanly at 360px.