Skip to main content
🎨 CSS as a design system·Module B6 · Lesson 8
TaskBuild a 6-card grid that flows without media queries. .cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; }. Six .card divs each with padding 16px, background #eef, border-radius 8px.

Auto-fit grid: the responsive card row without breakpoints

100 XP7 min
Theory

You saw this in B3 — now apply it as the default responsive layout

.cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
  gap: 16px;
}

That's a fully responsive card grid. NO media queries:

  • Desktop (1200px): 5 cards × 240px.
  • Tablet (800px): 3 cards × 270px.
  • Phone (375px): 1 card × 375px.

The grid reflows automatically. The minimum (240px) prevents cards from squishing too narrow; the 1fr lets them stretch to fill.

When to use auto-fit vs auto-fill

  • auto-fit — empty space collapses; tracks GROW to fill.
  • auto-fill — empty space stays; tracks keep their minmax width.

Most card grids want auto-fit (no awkward empty columns on wide screens).

When breakpoints are still useful

For DRAMATIC layout shifts (sidebar disappears entirely on mobile, hamburger menu appears), media queries make sense:

.layout { display: grid; grid-template-columns: 240px 1fr; }
@media (max-width: 720px) { .layout { grid-template-columns: 1fr; } }

For PROPORTIONAL adjustments (card sizes, padding, font), use clamp + auto-fit.

Rule of thumb

If you can describe the change as "scale this number up", use clamp. If "rearrange these elements", use breakpoint. Most projects need 1-2 breakpoints total.

🔒

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 15 lessons in each track are free. No card needed for those.

PreviousNext lesson →

Get one Python or web tip a day — by email

Short, hand-written, no spam. Unsubscribe in one click.