Skip to main content
🎨 CSS as a design system·Module B3 · Lesson 4
TaskBuild a 6-column equal-width grid using repeat. .grid display: grid, grid-template-columns: repeat(6, 1fr), gap: 8px. Six .item cells, each padding 12px, background #eef.

repeat(): clean shorthand for repeated tracks

75 XP6 min
Theory

Stop writing 1fr ten times

grid-template-columns: 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr 1fr;   /* 😬 */
grid-template-columns: repeat(10, 1fr);                          /* same, sane */

Patterns

grid-template-columns: repeat(3, 1fr);              /* 3 equal columns */
grid-template-columns: repeat(4, 200px);            /* 4 fixed 200px columns */
grid-template-columns: repeat(2, 1fr 2fr);          /* alternating: 1fr 2fr 1fr 2fr */
grid-template-columns: 200px repeat(3, 1fr) 200px;  /* sidebar + 3 equal + sidebar */

The second arg can be a list of track sizes — repeat(2, 1fr 2fr) expands to 1fr 2fr 1fr 2fr (the pair repeated twice).

Implicit row repeat

grid-auto-rows: 100px defines an implicit row height for every row beyond the explicit ones:

.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: 80px;
}

Every row in this grid is 80px tall regardless of how many rows the children create.

Up next: auto-fit + minmax

repeat() has a magic feature — auto-fit — that makes responsive grids without media queries. We'll see it in lesson 8.

🔒

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.