Portfolio·Guide
The layout trap: aspect ratios and CSS grids
You don’t have a mysterious cropping bug. You have a ratio problem meeting a packing problem. Mixed 3:2, 4:5, 16:9, and square frames meet grids that assume uniformity. The layout you pick decides what gets cut, what stays intact, and what still works at 375px.
Layout families
The tradeoff, by layout
Cropped grid
Forces a uniform ratio (all 1:1 or 4:5). Clean and scannable for clients skimming. You decide what gets cut from someone else’s frame, and on mobile that crop is often harsher than the desktop preview suggested.
Masonry
Preserves each image’s native ratio in uneven columns (Pinterest-style flow). Best when composition integrity matters: street, documentary, landscape. Not the same engine as justified: columns grow independently; rows do not share a common height.
Justified
Also preserves native ratios, but packs by row: shared row height, widths flex so the row fills the container. Real row math from stored width/height, not a CSS “masonry” skin with a different name.
Bento (pages)
A page-builder hierarchy block with deliberately mixed tile sizes so a few heroes dominate. Different job from portfolio gallery modes. Falls apart when every frame wants to be the hero.
The core tension
Template marketplaces list masonry, bento, and justified as equivalent style bullets. They aren’t. Masonry and justified both keep native ratios, but they pack differently, and bento usually lives on a designed page, not as a drop-in gallery skin for a whole portfolio.
Forums fill up with custom CSS fights against a platform’s crop behavior. That energy is usually aimed at the wrong layer. Start by naming which layout family you want, then ask whether the engine can honor native ratios or must invent a crop.
How the grid actually decides
Under the hood, two common approaches show up. CSS Grid with an explicit aspect-ratio (and sometimes grid-auto-flow: dense) locks tiles into a shared geometry: the browser knows the box before the image paints, which is why cropped grids feel stable and why “wrong” crops feel intentional rather than accidental.
Flex-based justified layouts do the opposite job: they measure intrinsic image ratios, then solve for a shared row height so the row fills the container width without large gaps. Masonry leaves column heights free instead. That is why a street set can keep its frames, and why a four-column desktop demo often collapses into a single awkward column on a phone if the breakpoints were never designed.
You do not need to ship the CSS yourself. You do need a platform whose portfolio engine is explicit about which model it is running, instead of a theme that crops on desktop and reflows unpredictably on mobile.
What breaks at 375px
A four-column masonry that looks editorial on a marketing laptop often becomes a long vertical stack on a phone. That can be fine if gutters, caption density, and tap targets were designed for that stack. Most template demos hide the failure by never showing the phone.
Cropped grids usually survive the shrink better for scanning, but the crop window changes: a desktop-safe face crop can lose eyes or product edges when the same ratio sits in a narrower column. Preview the layout family at phone width before you commit a public series to it.
Immersive layouts (split stage, book, carousel) and chronological models (timeline, journal) reflow differently again (stage above rail, height-capped portrait video in journal), so “stack the grid” is not the only mobile story.
Genre → layout family
The reason behind the recommendation matters more than the label. Preserve-ratio packs favor work where the frame is the point. Uniform crops favor work where comparison and speed matter. Page bento and full-bleed heroes favor work where a few images must lead.
| Photography focus | Prefer | Why |
|---|---|---|
| Street / documentary / landscape | Masonry or justified | Composition integrity beats equal tiles; mixed ratios are the point of the set |
| Editorial / fine art heroes | Page bento or full-bleed + supporting strip | Hierarchy: a few frames should dominate supporting ones |
| Product / catalog / lookbook | Cropped grid (shared ratio) | Scanability and comparison across similar objects |
| Wedding / event highlights | Justified or light masonry | Mixed orientations from one day; avoid aggressive face crops in a public cut |
| Mixed stills + video | Shared ratio grid or posters that match still geometry | Poster frames must share geometry with stills (see video-first guide) |
Where ArtInStack draws the line
ArtInStack’s portfolio layouts are presentation families you pick on purpose: square grid, masonry, and justified on public portfolio pages, plus immersive and chronological browse models when the set needs a different reading order. Page Editor bento is for designed hierarchy on a site page, not a third gallery skin for the same job.
One practical caveat: justified on a public `/portfolio` page is not the same as every page embed. Image Portfolio embeds currently map justified to a uniform grid, so preview the surface you will actually publish.
Pair this with delivery choices: how sharp and heavy each tile is belongs in Resolution vs performance for portfolio images. If motion leads the page, see Video-first portfolio presentation.
Pick the layout family on purpose
Stop fighting crop CSS. Choose cropped, masonry, or justified for the gallery, and bento when the page needs hierarchy. Then let the portfolio engine keep mobile honest.
Also in Guides: Resolution vs performance for portfolio images · Video-first portfolio presentation · Choosing the right platform
