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 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.