A responsive card grid helps show multiple items neatly on any screen size. It adjusts automatically so cards look good on phones, tablets, and desktops.
Responsive card grid in Tailwind
<div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4">
<!-- Card items here -->
</div>grid-cols-* sets how many columns the grid has.
Use responsive prefixes like sm:, md:, lg: to change columns on different screen sizes.
<div class="grid grid-cols-1 sm:grid-cols-2 gap-4">
<!-- Cards -->
</div><div class="grid grid-cols-1 md:grid-cols-3 gap-6">
<!-- Cards -->
</div><div class="grid grid-cols-2 lg:grid-cols-5 gap-2">
<!-- Cards -->
</div>This example creates a grid of cards that changes columns based on screen size. On small phones, it shows 1 card per row. On small tablets, 2 cards per row. On medium screens, 3 cards. On large screens, 4 cards per row. Each card has a white background, rounded corners, shadow, and some padding for neat spacing.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Responsive Card Grid</title> <script src="https://cdn.tailwindcss.com"></script> </head> <body class="bg-gray-50 p-6"> <main class="max-w-7xl mx-auto"> <h1 class="text-2xl font-bold mb-6">Responsive Card Grid</h1> <section class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-6"> <article class="bg-white rounded-lg shadow p-4"> <h2 class="font-semibold text-lg mb-2">Card 1</h2> <p class="text-gray-600">This is the first card.</p> </article> <article class="bg-white rounded-lg shadow p-4"> <h2 class="font-semibold text-lg mb-2">Card 2</h2> <p class="text-gray-600">This is the second card.</p> </article> <article class="bg-white rounded-lg shadow p-4"> <h2 class="font-semibold text-lg mb-2">Card 3</h2> <p class="text-gray-600">This is the third card.</p> </article> <article class="bg-white rounded-lg shadow p-4"> <h2 class="font-semibold text-lg mb-2">Card 4</h2> <p class="text-gray-600">This is the fourth card.</p> </article> <article class="bg-white rounded-lg shadow p-4"> <h2 class="font-semibold text-lg mb-2">Card 5</h2> <p class="text-gray-600">This is the fifth card.</p> </article> <article class="bg-white rounded-lg shadow p-4"> <h2 class="font-semibold text-lg mb-2">Card 6</h2> <p class="text-gray-600">This is the sixth card.</p> </article> </section> </main> </body> </html>
Use gap-* classes to add space between cards.
Cards should have padding and shadows for better look and separation.
Test your grid by resizing the browser or using device simulation in DevTools.
A responsive card grid adjusts the number of columns based on screen size.
Tailwind's grid and responsive prefixes make it easy to build these grids.
Adding gap, padding, and shadows improves the visual layout and readability.
Practice
Solution
Step 1: Understand responsive design
Responsive design means the layout adapts to different screen sizes.Step 2: Role of a responsive card grid
A responsive card grid changes how many columns show depending on screen width, so cards fit nicely on all devices.Final Answer:
It changes the number of columns based on screen size. -> Option DQuick Check:
Responsive grid = column count changes [OK]
- Thinking columns stay fixed on all screens
- Assuming cards get hidden instead of rearranged
- Believing responsiveness only applies to desktops
Solution
Step 1: Understand Tailwind responsive prefixes
Classes prefixed withmd:apply at medium screen sizes and larger.Step 2: Set default and medium screen columns
Default is 1 column (grid-cols-1), and medium screens get 3 columns (md:grid-cols-3).Final Answer:
grid grid-cols-1 md:grid-cols-3 -> Option CQuick Check:
Default 1 col, md+ 3 cols = grid grid-cols-1 md:grid-cols-3 [OK]
- Putting grid-cols-3 before md: prefix incorrectly
- Missing the base grid class
- Reversing default and md: column counts
<div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4">...</div>
Solution
Step 1: Identify screen size breakpoints
Tailwind applies classes from smallest to largest: default, sm, md, lg.Step 2: Check lg:grid-cols-4 on large screens
On large screens, thelg:grid-cols-4class sets 4 columns.Final Answer:
4 columns -> Option AQuick Check:
Large screen uses lg: prefix = 4 columns [OK]
- Choosing default or smaller breakpoint columns
- Ignoring the lg: prefix effect
- Confusing gap with columns
<div class="grid grid-cols-3 gap-2 p-4">...</div>
Solution
Step 1: Check responsiveness
The code sets 3 columns always, no responsive changes for smaller screens.Step 2: Effect on spacing and layout
Without responsive prefixes, cards may look cramped on small screens because columns don't adjust.Final Answer:
Missing responsive prefixes for different screen sizes. -> Option BQuick Check:
Responsive prefixes needed for proper spacing [OK]
- Thinking gap-2 means no spacing
- Believing padding must be on cards only
- Assuming grid-rows is required with grid-cols
Solution
Step 1: Check column counts and breakpoints
Carduses mobile-first: 1 column default, 2 at md, 4 at lg, matching requirements.Step 2: Verify spacing and shadow
uses gap-6 for consistent spacing and shadow with padding on cards, which is correct.CardFinal Answer:
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 p-4"> <div class="shadow p-4">Card</div> </div> -> Option AQuick Check:
Correct breakpoints and spacing =[OK]Card
- Reversing breakpoint order
- Using inconsistent gap or padding
- Missing shadow or applying it incorrectly
Ready to prove it?
Pass the test and this pattern moves unknown
