TaskBuild three boxes with locked ratios. .box-square (aspect-ratio: 1, width: 200px, bg #fee). .box-video (aspect-ratio: 16/9, width: 100%, max-width: 320px, bg #eef). .box-portrait (aspect-ratio: 3/4, width: 150px, bg #efe).
aspect-ratio: stop the height calculations
75 XP6 min
Theory
Lock the proportions
.video { aspect-ratio: 16 / 9; width: 100%; }
.square { aspect-ratio: 1; }
.portrait { aspect-ratio: 3 / 4; }Set EITHER width OR height; the browser computes the other. No more "padding-bottom: 56.25%" hacks.
When this saves you
- Video / iframe embeds. YouTube needs 16:9. Twitch needs 16:9. Vimeo needs 16:9.
aspect-ratiosets it once. - Image cards where you want consistent height regardless of source-image dimensions:
.card-image {
aspect-ratio: 4 / 3;
width: 100%;
object-fit: cover; /* crop to fit, don't squish */
}- Hero blocks with text overlay β the text always has the same proportional vertical space.
With img tags (use the attributes too)
Even when you set CSS aspect-ratio, the <img> tag should have its OWN width + height attributes for CLS prevention (A7 lesson 7). Browser uses the attributes BEFORE the image loads. CSS aspect-ratio is the canonical answer for non-image elements.
Sub-properties
aspect-ratio: auto 16 / 9 β "intrinsic if the element has natural dimensions, else 16:9." Useful for <img> fallback behavior.
π
Sign up to start coding
Theory is open to everyone. The interactive editor, live preview, and check are unlocked with a 7-day free trial β card required, cancel anytime.
Sign up β free trial βFirst 10 lessons in each track are free. No card needed for those.