Skip to main content
← 🎨 CSS as a design systemΒ·Module B6 Β· Lesson 1
TaskPin the old way side-by-side with the new. .card-mq uses a media query at 600px. .card-clamp uses clamp() for the same effect. Set body padding: 20px, font-family: system-ui. .card-mq { padding: 12px; } @media (min-width: 600px) { .card-mq { padding: 24px; } }. .card-clamp { padding: clamp(12px, 4vw, 24px); }.

Why @media falls short in 2026

75 XP6 min
Theory

A 2010 tool for a 2010 problem

@media (min-width: 768px) { ... }
@media (min-width: 1024px) { ... }
@media (min-width: 1280px) { ... }

Media queries answer the question "how wide is the viewport?" β€” your browser window. In 2010 that question was almost always equivalent to "how wide is my component's available space?"

In 2026 it's not. Your component might live in:

  • A 320px sidebar inside a 1600px page.
  • A 800px modal centered on a 1280px page.
  • A 100vw section that breaks into 2 columns on tablets.

Same component, three different "available widths" β€” but @media only knows about the viewport. Result: brittle, breakpoint-heavy CSS that breaks the moment the layout changes.

The 2026 tools

  • `@container` β€” query the PARENT element's width, not the viewport.
  • `clamp(min, ideal, max)` β€” fluid sizing without breakpoints.
  • `grid + auto-fit + minmax` β€” layouts that reflow without media queries.
  • Logical properties (margin-inline) β€” RTL-friendly with zero LTR-specific code.

This module covers all four. After B6 you'll write ~2 media queries per project where you used to write 6.

What media queries are STILL good for

  • prefers-color-scheme β€” dark mode (B5).
  • prefers-reduced-motion β€” accessibility (A5).
  • prefers-contrast β€” high-contrast mode.
  • min-width for ONE major mobile/desktop split.

These aren't going away. The point is the OTHER 80% of media queries β€” the ones tracking layout breakpoints β€” those should be replaced by container queries + intrinsic sizing.

πŸ”’

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.

← PreviousNext lesson β†’

Get one Python or web tip a day β€” by email

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