FindMySchool LogoFindMySchool
  • League Tables
    Combined A-levels & GCSEPrimary SchoolsOxbridge Success
  • Schools
    Schools by Area
    Primary SchoolsSecondary SchoolsGrammar SchoolsSixth Form Schools
    General Schools
    A-levelsSecondaryPrimaryNursery
  • Blog
  • School Match
FindMySchool LogoFindMySchool

Helping parents and students find the best schools in England with comprehensive data and insights.

GET IN TOUCH

  • Contact us form
  • info@findmyschool.uk

Quick Links

  • Find Schools
  • Schools by City
  • Primary by Area
  • Secondary by Area
  • Grammar Schools by Area
  • Sixth Form Schools by Area
  • Map Search
  • Primary School
  • Secondary School
  • Sixth Form and Grammar Schools

Rankings

  • Combined A-levels and GCSE
  • Primary Schools
  • Oxbridge Success

Resources

  • About Us
  • Our Methodology
  • Data Disclaimer
  • FAQs
  • Blog

© 2026 FindMySchool. All rights reserved.

Privacy PolicyTerms of ServiceCookie Policy

Gallery design test — not shipped

School photo gallery: fit strategies

Each section below renders the same photo using a different container shape or CSS object-fit strategy. Switch the test photo using the control below to stress-test each approach against landscape, portrait and square uploads.

The real upload that triggered the report. Near-landscape but not 3:2. Served from Supabase.

Natural size: 860 × 517 · ratio 1.663

Top candidates

Two different ways to show the whole photo. Lkeeps production’s height (445px) — the photo ends up narrower than the band. Mlets the slot grow so a 3:2 photo fills the full container width — but the gallery section is roughly twice as tall as today. Try both with the “Westminster” and “Brighton” photos to see the width difference.

M. Aspect-[3/2] + contain + blurred backdrop, NO height cap (widest use of photo)

The slot is a true 3:2 aspect ratio with no max-height — on desktop that's 1310×873 at a 1440 viewport. A photo with ratio ≥ 1.5 fills the full container width edge-to-edge. Landscape photos look as wide as they possibly can while still being shown in full. Blurred backdrop covers any top/bottom bars for wider-than-3:2 photos.

Trade-off: Gallery section roughly doubles in height on desktop (~+428px vs production). The photo itself uses the full width for any landscape upload, but the page below gets pushed way down. Portrait photos still leave large side bars (filled by the blurred backdrop).

L. Same height + contain + blurred backdrop (no neutral bars)

Combines J's zero-crop guarantee with F's blurred-backdrop trick. Same height as today, photo shown whole, and the horizontal bars are filled with a blurred copy of the photo itself so there's no empty space.

Trade-off: Most 'designed' of the height-preserving options. The photo itself is narrower than the band — on a 1.66-ratio photo like the Beacon, the image renders at ~739×445 inside the 1310-wide band. You keep production's height; you lose photo width.

All other options considered

Everything below is here for comparison — starting with the current production behaviour (A).

A. Current production (fixed 445px height, object-fit: cover)

The existing behaviour. Container is h-[210px] md:h-[445px] w-full, so the shape changes wildly with viewport width — on desktop it becomes a ~3:1 ultrawide band that crops most photos aggressively.

Trade-off: Uniform hero look, but subjects near top/bottom get chopped on desktop; portraits become tiny ribbons.

B. Fixed 3:2 aspect ratio, object-fit: cover (recommended default)

Container is always 3:2 regardless of viewport. Matches the native shape of most DSLR + phone-landscape uploads, so cropping is minimal for the common case.

Trade-off: Still crops portrait uploads hard. But the default case feels native.

C. Fixed 16:9 aspect ratio, object-fit: cover

More banner-like / cinematic. Wider than most uploads, so there's moderate top/bottom crop on 3:2 and 4:3 photos.

Trade-off: Premium feel, but noticeably crops any 3:2 photo.

D. Fixed 5:3 aspect ratio, object-fit: cover

Matches what the current mobile slot happens to show (343×210 ≈ 5:3). Middle ground between 3:2 and 16:9.

Trade-off: Slightly unusual ratio but fits the Beacon's actual photo almost perfectly.

E. Fixed 3:2, object-fit: contain, grey letterbox

Nothing is ever cropped. The photo is fitted inside the 3:2 slot with solid grey bars filling the rest.

Trade-off: Safest — no content is lost — but the grey bars look cheap, especially for portraits.

F. Fixed 3:2, contain + blurred backdrop of the same image

Content-safe like (E), but the empty space is filled by a blurred, enlarged copy of the photo itself — the trick Spotify, Instagram and YouTube use for portrait content.

Trade-off: Looks premium on almost any photo. Slightly more DOM / one extra img render.

G. Fixed 16:9 cover + per-image focal point (click the image)

Keeps cover for a uniform look, but the admin/claim UI lets the school click the subject (face, building entrance, etc.) once. That focal point is stored and respected on every crop.

Trade-off: Best of both worlds, but requires admin UI + new DB columns (focal_x, focal_y).

Click anywhere on the image to move the focal point. Currently objectPosition: 50% 50%. In production we'd store focal_x / focal_y per photo and let school admins drag this marker once.

H. Auto: container matches the photo's own ratio (no crop)

The container always inherits the image's natural aspect ratio. Every gallery slide is a different shape.

Trade-off: Zero cropping, but the carousel jumps in height between slides and feels less designed.

I. Fixed 3:2, object-fit: contain, neutral frame (zero crop, always)

The defensible-simple solution. No ratio detection, no focal points, no blur, no branching — every photo fits entirely inside the slot, nothing is ever cropped, and the slot height stays constant across slides so swipe never jumps. A faint neutral backdrop reads as 'gallery frame' rather than 'missing image', and a 1px inner ring sells it further. Property portals like OnTheMarket do exactly this and nobody complains.

Trade-off: Photos never fully fill the slot unless they happen to be 3:2 — landscapes get small side bars, portraits get top/bottom bars, squares get both. Slightly less polished on mixed 15-photo premium galleries, but 100% defensible when a school complains because no image is ever cropped. AND the slot is 115px taller than production on desktop.

Backdrop:(pure white looks like a missing image; faint grey reads as "gallery frame")

Other height-preserving options (same outer height as production)

Close relatives of L (now shown at the top). J uses plain neutral bars instead of a blurred backdrop; K keeps cover so it still crops lightly but uses a centred 3:2 slot inside the current-height band.

J. Same height as today + object-fit: contain + neutral frame

Keep the current h-[210px] md:h-[445px] band but switch cover → contain. The photo is shown whole, centred inside the band, with neutral-100 bars filling whatever horizontal space is left. Zero crop, zero extra vertical space.

Trade-off: Wide photos render smaller than they do today (the band is often wider than the photo can be at this height). On a 1336-wide band at 445px tall, a 3:2 photo renders at ~668×445, leaving ~334px of neutral bar on each side.

K. Same height + centred 3:2 inner slot + cover

The band is the current height, but inside it sits a 3:2 slot centred. The photo fills that inner slot with cover. You get proper-proportion crops (minimal trimming on landscapes) with the current overall height preserved.

Trade-off: Still crops, just less than production does. The inner slot is ~668×445 on desktop so you see the photo at ~half the current width — smaller-feeling photo but much better proportions.

The real three-way trade-off

Every variant picks two of these three and gives up the third. There's no way to win all three.

  • Show the whole photo (no cropping)
  • Keep the current gallery height (don't push content down)
  • Photo fills the full container width (no side bars)

A, B, C, D, G keep (2) + (3), give up (1) — they crop. B, E, F, I keep (1) + (3), give up (2) — they get taller. J, K, L keep (1) + (2), give up (3) — they show smaller photos inside a neutral band. You can't have all three without a focal-point picker.

If you want to preserve current height — L is the best

Same outer height as today, zero cropping, no empty neutral bars (blurred backdrop fills the sides). Works for every upload ratio without branching logic. The photo itself renders smaller than it does today, but the gallery section occupies identical vertical space.

If you can accept +115px of height — I is the cleanest

Simpler CSS, photos render bigger, still zero cropping. Costs ~26% more vertical space, which on a long profile page is noticeable but not dramatic. Every photo is shown at a proper size inside a proper 3:2 frame.

If you prefer "uniform filled slot" over "no crop" — B + F hybrid

B (cover) for landscape uploads, automatic fall-back to F (contain + blur) when naturalRatio < 1.3. Same +115px height as I, but fills the slot edge-to-edge on the common case. Later, add G (focal-point picker) in the claim admin for schools that want to fine-tune wide group shots.

My call, now that the height cost is visible: ship L. It's the only option that wins on all three user-visible dimensions — no crop, no extra height, no empty bars — and the only thing it gives up is "photo fills the full width", which is invisible to users (the blurred backdrop makes the band feel filled). Zero branching logic, ~15 lines, and no school will ever email you about a cropped photo again.

Lightbox already does the right thing (contain) regardless of which you pick, so no change is needed there.