Episode 5 of 10

Nested Grids

Create grids inside grids — nest a grid container within a grid item for complex, multi-level layouts.

Nested Grids

A grid item can itself become a grid container. This lets you build complex, multi-level layouts where each section has its own grid structure.

Basic Nested Grid

<div class="outer-grid">
    <div class="item">Item 1</div>
    <div class="item inner-grid">
        <div>Nested 1</div>
        <div>Nested 2</div>
        <div>Nested 3</div>
    </div>
    <div class="item">Item 3</div>
</div>

.outer-grid {
    display: grid;
    grid-template-columns: 1fr 2fr 1fr;
    gap: 20px;
}

.inner-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

The .inner-grid is both a grid item (of the outer grid) and a grid container (for its own children). Each grid is independent — its own columns, rows, and gaps.

Practical Example: Card Grid

<div class="page-grid">
    <header>Header</header>
    <main class="card-grid">
        <div class="card">Card 1</div>
        <div class="card">Card 2</div>
        <div class="card">Card 3</div>
        <div class="card">Card 4</div>
    </main>
    <footer>Footer</footer>
</div>

.page-grid {
    display: grid;
    grid-template-columns: 1fr;
    grid-template-rows: auto 1fr auto;
    min-height: 100vh;
}

.card-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
    gap: 20px;
    padding: 20px;
}

The page uses a single-column grid for the overall structure. Inside <main>, a nested grid handles the responsive card layout.

Key Takeaways

  • Any grid item can also be a grid container by setting display: grid
  • Nested grids are independent — they have their own columns, rows, and gaps
  • Use nesting for layouts with different grid structures at different levels
  • Common pattern: page-level grid + content-level grid for cards or galleries