Bird
Raised Fist0
Tailwindmarkup~5 mins

Holy grail layout in Tailwind

Choose your learning style10 modes available
Introduction

The Holy Grail layout helps you create a webpage with a header, footer, and three columns in the middle. It keeps the main content in the center and sidebars on the sides.

When you want a webpage with a top header, bottom footer, and three columns in the middle.
When you want the center column to be wider and sidebars narrower.
When you want a layout that works well on different screen sizes.
When you want to organize content clearly with navigation on sides and main content in center.
Syntax
Tailwind
<div class="flex flex-col min-h-screen">
  <header class="bg-gray-300 p-4">Header</header>
  <main class="flex flex-1">
    <aside class="w-1/4 bg-gray-200 p-4">Left Sidebar</aside>
    <section class="flex-1 bg-white p-4">Main Content</section>
    <aside class="w-1/4 bg-gray-200 p-4">Right Sidebar</aside>
  </main>
  <footer class="bg-gray-300 p-4">Footer</footer>
</div>

Use flex and flex-col to stack header, main, and footer vertically.

Inside main, use flex to place sidebars and content horizontally.

Examples
This example uses 20% width sidebars and a blue color scheme.
Tailwind
<div class="flex flex-col min-h-screen">
  <header class="bg-blue-200 p-3">Header</header>
  <main class="flex flex-1">
    <aside class="w-1/5 bg-blue-100 p-3">Left Sidebar</aside>
    <section class="flex-1 bg-white p-3">Main Content</section>
    <aside class="w-1/5 bg-blue-100 p-3">Right Sidebar</aside>
  </main>
  <footer class="bg-blue-200 p-3">Footer</footer>
</div>
This example uses wider sidebars (33%) and more padding.
Tailwind
<div class="flex flex-col min-h-screen">
  <header class="bg-green-300 p-5">Header</header>
  <main class="flex flex-1">
    <aside class="w-1/3 bg-green-100 p-5">Left Sidebar</aside>
    <section class="flex-1 bg-white p-5">Main Content</section>
    <aside class="w-1/3 bg-green-100 p-5">Right Sidebar</aside>
  </main>
  <footer class="bg-green-300 p-5">Footer</footer>
</div>
Sample Program

This code creates a full page layout with a header on top, footer at bottom, and three columns in the middle using Tailwind CSS. The center column expands to fill space, sidebars have fixed width.

Tailwind
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <title>Holy Grail Layout with Tailwind</title>
  <script src="https://cdn.tailwindcss.com"></script>
</head>
<body class="flex flex-col min-h-screen">
  <header class="bg-gray-300 p-4 text-center font-semibold">Header</header>
  <main class="flex flex-1">
    <aside class="w-1/4 bg-gray-200 p-4">Left Sidebar</aside>
    <section class="flex-1 bg-white p-4">Main Content</section>
    <aside class="w-1/4 bg-gray-200 p-4">Right Sidebar</aside>
  </main>
  <footer class="bg-gray-300 p-4 text-center">Footer</footer>
</body>
</html>
OutputSuccess
Important Notes

Use min-h-screen on the container to make the layout fill the full browser height.

Use flex-1 on the main content section to make it grow and fill available space.

Tailwind's utility classes make it easy to adjust widths and spacing quickly.

Summary

The Holy Grail layout organizes a page with header, footer, and three columns in the middle.

Use Tailwind's flexbox utilities to create this layout easily and responsively.

The center column grows while sidebars keep fixed widths.

Practice

(1/5)
1. What is the main purpose of the Holy Grail layout in web design?
easy
A. To create a page with a header, footer, and three columns in the middle
B. To make a single column page with a fixed header
C. To build a grid of cards without any header or footer
D. To design a page with only a sidebar and content area

Solution

  1. Step 1: Understand the layout components

    The Holy Grail layout includes a header, footer, and three columns in the middle section.
  2. Step 2: Match the description to the layout

    To create a page with a header, footer, and three columns in the middle correctly describes this structure, unlike the other options which miss key parts.
  3. Final Answer:

    To create a page with a header, footer, and three columns in the middle -> Option A
  4. Quick Check:

    Holy Grail layout = header + footer + 3 columns [OK]
Hint: Remember: Holy Grail = header, footer, 3 columns [OK]
Common Mistakes:
  • Confusing it with single column layouts
  • Ignoring the footer or header parts
  • Thinking it only has two columns
2. Which Tailwind CSS class combination correctly sets up a horizontal flex container for the main content area in a Holy Grail layout?
easy
A. inline-flex flex-col
B. grid grid-cols-3
C. block flex-col
D. flex flex-row

Solution

  1. Step 1: Identify the layout direction

    The main content area with three columns needs a horizontal flex container, which is flex flex-row.
  2. Step 2: Check other options

    grid grid-cols-3 uses grid, not flex. Options C and D use flex-col which stacks vertically, not horizontally.
  3. Final Answer:

    flex flex-row -> Option D
  4. Quick Check:

    Horizontal flex = flex flex-row [OK]
Hint: Use flex flex-row for horizontal layout in Tailwind [OK]
Common Mistakes:
  • Using flex-col instead of flex-row
  • Confusing grid with flex
  • Using block which disables flex behavior
3. Given this Tailwind HTML snippet for the main content area:
<div class="flex flex-row h-screen">
  <aside class="w-48 bg-gray-200">Left</aside>
  <main class="flex-grow bg-white">Center</main>
  <aside class="w-48 bg-gray-200">Right</aside>
</div>

What will be the width behavior of the center column?
medium
A. It will grow to fill all space between fixed-width sidebars
B. It will have a fixed width of 48 units
C. It will shrink to zero width
D. It will be the same width as the sidebars

Solution

  1. Step 1: Understand the flex container setup

    The container is flex-row with two sidebars fixed at width 48 (w-48).
  2. Step 2: Analyze the center column class

    The center has flex-grow, so it expands to fill leftover space between sidebars.
  3. Final Answer:

    It will grow to fill all space between fixed-width sidebars -> Option A
  4. Quick Check:

    flex-grow center fills space [OK]
Hint: flex-grow center fills leftover space between fixed sidebars [OK]
Common Mistakes:
  • Assuming center has fixed width
  • Thinking center shrinks to zero
  • Believing all columns have equal width
4. You wrote this Tailwind code for the Holy Grail layout main section:
<div class="flex flex-col h-screen">
  <header class="h-16 bg-blue-500">Header</header>
  <div class="flex flex-col flex-grow">
    <aside class="w-48 bg-gray-200">Left</aside>
    <main class="flex-grow bg-white">Center</main>
    <aside class="w-48 bg-gray-200">Right</aside>
  </div>
  <footer class="h-16 bg-blue-500">Footer</footer>
</div>

Why does the layout not show sidebars and center side by side?
medium
A. Because the sidebars have fixed width
B. Because the inner div uses flex-col instead of flex-row for sidebars and center
C. Because the header and footer have fixed height
D. Because the main has flex-grow

Solution

  1. Step 1: Check the inner container flex direction

    The inner div uses flex flex-col, stacking children vertically.
  2. Step 2: Understand sidebars and center layout

    Sidebars and center need to be side by side, so flex-row is required instead of flex-col.
  3. Final Answer:

    Because the inner div uses flex-col instead of flex-row for sidebars and center -> Option B
  4. Quick Check:

    Sidebars side by side need flex-row [OK]
Hint: Use flex-row for horizontal sidebars, not flex-col [OK]
Common Mistakes:
  • Ignoring flex direction on inner container
  • Blaming header/footer heights
  • Thinking fixed widths cause stacking
5. How can you modify this Tailwind Holy Grail layout snippet to make the sidebars collapse into a top and bottom bar on small screens?
<div class="flex flex-row h-screen">
  <aside class="w-48 bg-gray-200">Left</aside>
  <main class="flex-grow bg-white">Center</main>
  <aside class="w-48 bg-gray-200">Right</aside>
</div>
hard
A. Change container to grid grid-cols-3 without media queries
B. Use hidden on sidebars for small screens
C. Add responsive classes: flex-col sm:flex-row on the container and adjust widths to heights for sidebars
D. Wrap sidebars in a flex-row container always

Solution

  1. Step 1: Understand responsive flex direction

    To stack sidebars vertically on small screens, use flex-col by default and switch to flex-row on larger screens with sm:flex-row.
  2. Step 2: Adjust sidebar sizing

    Sidebars need fixed height on small screens instead of fixed width, so change w-48 to h-12 or similar with responsive utilities.
  3. Final Answer:

    Add responsive classes: flex-col sm:flex-row on the container and adjust widths to heights for sidebars -> Option C
  4. Quick Check:

    Responsive flex direction + sizing = collapse sidebars [OK]
Hint: Use flex-col by default, sm:flex-row for wide screens [OK]
Common Mistakes:
  • Not using responsive classes
  • Hiding sidebars instead of stacking
  • Using grid without responsiveness
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard