Courses / Layout for developers

Applied designAbout 50 minutes7 practical labs

Layout for developers

Compose a page section on a column grid. Choose the grid, place content by span, share alignment edges, set one spacing scale, give text a measure and reflow it for a narrow screen.

Layout as a set of decisions you can defend: column grids, spans, alignment edges, spacing scales, measure and narrow reflow. Typography beyond measure and leading, colour and motion are outside this course.

Fit a lab into a lunch break or stay for a spare hour. Progress is saved so you can come and go. Labs need a laptop or desktop; the outline is available on any device.

The entire course is free: every lab and a personal completion download. No account or purchase is required. Progress is saved in this browser. Clearing browser data will remove it.

A grid you can defend.Interactive practice
Grid, spans, edges, scale, measure and reflowFree course

The curriculum

7 practical labs.
Decisions you can use.

Every lesson starts with a short principle and a page that needs work. You make the changes. The feedback tells you which relationships work and what to try next.

By the end, you can

  • Choose a column grid, gutter and margin that divide
  • Place content by span so the section reads
  • Reduce a layout to shared alignment edges
  • Use one spacing scale with clear roles
  • Set a readable measure from span and size
  • Reflow a grid for a narrow screen

Basic HTML and CSS, including CSS grid. Visual hierarchy for developers is recommended preparation. No design software and no animation. Use a laptop or desktop with a browser window at least 1024px wide. Work at your own pace; there is no timer.

  1. 01
    Choose the grid

    A grid is a set of shared edges agreed in advance. Before placing anything, decide how many columns there are, how far apart they sit, and how far the whole thing stays from the edge of the page. Those three numbers decide what every later placement can line up with.

    7 min
  2. 02
    Place content by span

    A span is a reading decision. Wide blocks carry the eye across; narrow ones sit beside something else. On a stack of full-width blocks nothing leads, and the figure and its aside lose their relationship.

    8 min
  3. 03
    Align to shared edges

    Alignment is counting edges. Each block that starts on a different column adds a vertical line the reader has to resolve. A centred title over left-aligned copy adds an axis on top of that.

    6 min
  4. 04
    Set a spacing scale

    Spacing carries structure. When every gap is a different arbitrary number, the reader cannot tell which things belong together. A short scale with a few roles does the work of a hundred individual decisions.

    7 min
  5. 05
    Give text a measure

    Measure is the number of characters on a line. It comes from two decisions at once: how wide the column is and how large the type is. A wide column of small type and a narrow column of large type can have the same measure.

    6 min
  6. 06
    Reflow for a narrow screen

    A grid that works at 680px cannot survive 320px unchanged. Reflow is not shrinking; it is choosing a new grid for the new width while keeping the reading order and the decisions that made the wide layout work.

    7 min
  7. 07
    A fresh brief

    Transfer the decisions to a different section with new content and a tighter measure. The grid is yours to choose; the roles are the same.

    10 min

Proper interaction.

Place blocks by dragging their edges on a grid ruler, pick spacing from a scale ladder, watch a measure ruler count characters per line, and toggle grid and spacing overlays on a live section. Every drag has keyboard controls and a numeric field.

A completion record.

Pass the practical checks in each lab to download an optional personal completion record. It is created on your device, has no public verification page and is not an accredited qualification.

For you, or your team.

This course is free for individuals and teams. No account is needed. Progress is saved in this browser. Clearing browser data will remove it.