Skip to main content
🎨 CSS as a design system·Module B2 · Lesson 3
TaskThree divs A/B/C inside a .row container. Apply display: flex to .row so they line up horizontally. Each child has padding 12px and a background color (#fee, #eef, #efe respectively).

Flexbox: display: flex on the parent

100 XP8 min
Theory

One declaration opens everything

.container { display: flex; }

The container becomes a "flex container." Its DIRECT children become "flex items" — they flow horizontally (row by default), shrink to fit, and align together as a unit.

Before vs after

<div class="row">
  <div>A</div>
  <div>B</div>
  <div>C</div>
</div>
  • Without flex — three vertical divs (block default).
  • With `.row { display: flex }` — three divs side-by-side, all the same height (taller children stretch the others to match).

The two axes

A flex container has a main axis (default: horizontal, left→right) and a cross axis (perpendicular, default: vertical).

  • justify-content aligns items along the MAIN axis (where they sit horizontally).
  • align-items aligns items along the CROSS axis (how they're aligned vertically).

We'll dive deep into both over the next few lessons.

Inline-flex vs flex

display: flex makes the container itself a block element. display: inline-flex makes the container inline (sits in text flow) while still flexing its children. 99% of the time use flex, not inline-flex.

🔒

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.