Skip to main content
🎨 CSS as a design system·Module B2 · Lesson 1
TaskJust observe normal flow. The HTML has three divs that stack vertically and one paragraph with two spans inline. Don't add any layout CSS. Set body font-family to system-ui, sans-serif so it's readable.

Normal flow: how the browser stacks elements by default

60 XP5 min
Theory

What "no CSS" looks like

Before flexbox, grid, or any positioning — every element follows normal flow:

  • Block elements (<div>, <p>, <h1>) stack VERTICALLY, each taking the full width of the parent.
  • Inline elements (<span>, <a>, <strong>) flow HORIZONTALLY inside text, wrapping at line breaks.
<div>Block 1</div>
<div>Block 2</div>
<span>inline a</span> <span>inline b</span>

The result is a vertical stack of two divs, then a line with the two spans next to each other.

Why normal flow matters

Normal flow IS your layout most of the time:

  • Article body — paragraphs stack vertically.
  • Form — labels and inputs in a column.
  • Sidebar navigation — links stacked.

Reaching for flexbox or grid on simple vertical stacks is overkill. <div>s already stack vertically for free.

When you NEED a layout engine

  • Horizontal alignment ("3 cards in a row") → flexbox.
  • 2-axis ("sidebar + main + topbar") → grid.
  • Positioned overlays (modals, tooltips, sticky headers) → position: fixed/absolute/sticky.

This module visits each in order: float (briefly, for history), then flexbox in depth, then grid (next module).

🔒

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.