📖 Scenario: You want to display a collection of photos in a neat, masonry-style grid on a webpage. This layout stacks images in columns with varying heights, like a Pinterest board.
🎯 Goal: Build a responsive masonry-style grid using Tailwind CSS that arranges images in columns with gaps, adjusting nicely on different screen sizes.
📋 What You'll Learn
Use Tailwind CSS utility classes only
Create a container with multiple images
Arrange images in a masonry-style grid with 3 columns on desktop
Use gaps between images
Make the grid responsive with fewer columns on smaller screens
💡 Why This Matters
🌍 Real World
Masonry grids are popular for photo galleries, portfolios, and product showcases on websites.
💼 Career
Knowing how to build responsive, visually appealing grids is a key skill for front-end web developers and UI designers.
Progress0 / 4 steps
1
Set up the HTML structure with images
Create a <div> container with the class masonry-grid. Inside it, add exactly 6 <img> tags with these src attributes: photo1.jpg, photo2.jpg, photo3.jpg, photo4.jpg, photo5.jpg, and photo6.jpg. Each image should have an alt attribute describing it as Photo 1, Photo 2, and so on.
Tailwind
Hint
Use a <div> with class masonry-grid and add 6 <img> tags inside with the exact src and alt values.
2
Add Tailwind CSS classes for columns and gap
Add Tailwind CSS classes to the masonry-grid<div> to create a 3-column layout with a gap of 1.5rem between items. Use the classes columns-3 and gap-6.
Tailwind
Hint
Add the classes columns-3 and gap-6 to the masonry-grid<div> to create columns and spacing.
3
Make images responsive and add rounded corners
Add Tailwind CSS classes to each <img> tag to make images take full width of their column and have rounded corners. Use the classes w-full and rounded-lg on each image.
Tailwind
Hint
Add class="w-full rounded-lg" to each <img> tag to make images fill their column width and have smooth corners.
4
Make the grid responsive with fewer columns on small screens
Update the masonry-grid<div> classes to have 1 column on small screens and 2 columns on medium screens. Use the Tailwind responsive classes sm:columns-1 and md:columns-2 along with the existing columns-3 and gap-6.
Tailwind
Hint
Add sm:columns-1 and md:columns-2 classes to the masonry-grid<div> to make the grid adapt on smaller screens.
Practice
(1/5)
1. What does the Tailwind class columns-3 do in a masonry-style grid layout?
easy
A. It sets the font size to 3 rem.
B. It creates 3 rows with equal height.
C. It adds 3 pixels of margin between grid items.
D. It splits the container into 3 vertical columns for items to flow into.
Solution
Step 1: Understand the columns-3 class
This class divides the container into 3 vertical columns, allowing items to flow vertically like bricks in a wall.
Step 2: Differentiate from rows and spacing
It does not create rows or set spacing or font size; those are controlled by other classes like gap- or text-.
Final Answer:
It splits the container into 3 vertical columns for items to flow into. -> Option D
Quick Check:
columns-3 means 3 vertical columns [OK]
Hint: Remember columns-3 means 3 vertical columns, not rows [OK]
Common Mistakes:
Confusing columns with rows
Thinking it sets spacing or font size
Assuming it creates fixed-height rows
2. Which Tailwind class correctly adds horizontal and vertical gaps between items in a masonry grid?
easy
A. space-x-4
B. columns-4
C. gap-4
D. m-4
Solution
Step 1: Identify gap class usage
The gap-4 class adds consistent horizontal and vertical spacing between grid items.
Step 2: Differentiate from other spacing classes
space-x-4 adds only horizontal spacing between flex items, m-4 adds margin around an element, and columns-4 sets column count, not spacing.
Final Answer:
gap-4 -> Option C
Quick Check:
Use gap-4 for spacing in grids [OK]
Hint: Use gap-4 for both horizontal and vertical spacing [OK]
But the items appear stacked in one column instead of three. What is the likely cause?
medium
A. The container div is missing a width or max-width, so columns collapse.
B. The gap-4 class is invalid and breaks layout.
C. The items need flex class to arrange in columns.
D. Tailwind does not support columns-3 for masonry layouts.
Solution
Step 1: Check container sizing
Without a set width or max-width, the container may shrink to fit content, causing columns to collapse into one.
Step 2: Verify other classes
gap-4 is valid, and columns-3 works for masonry. Flex is not needed here because columns use CSS multi-column layout.
Final Answer:
The container div is missing a width or max-width, so columns collapse. -> Option A
Quick Check:
Container width needed for columns to show [OK]
Hint: Ensure container has width for columns to display [OK]
Common Mistakes:
Assuming gap-4 breaks layout
Adding flex unnecessarily
Thinking Tailwind lacks columns support
5. You want a responsive masonry grid that shows 1 column on small screens, 2 columns on medium, and 4 columns on large screens using Tailwind. Which class combination achieves this?
hard
A. columns-1 md:columns-2 lg:columns-4 gap-6
B. grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6
C. flex flex-wrap gap-6 columns-4
D. columns-4 md:columns-2 lg:columns-1 gap-6
Solution
Step 1: Understand responsive columns classes
Using columns-1 md:columns-2 lg:columns-4 sets the number of columns based on screen size: 1 for small, 2 for medium, 4 for large.
Step 2: Confirm gap usage
gap-6 adds consistent spacing between items across all screen sizes.
Step 3: Differentiate from grid and flex
Grid and flex layouts are different from masonry columns. grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-6 uses grid, which is not masonry style. flex flex-wrap gap-6 columns-4 mixes flex and columns incorrectly. columns-4 md:columns-2 lg:columns-1 gap-6 reverses column counts.
Final Answer:
columns-1 md:columns-2 lg:columns-4 gap-6 -> Option A
Quick Check:
Responsive columns use breakpoint prefixes [OK]
Hint: Use responsive prefixes with columns-{n} for masonry grids [OK]
Common Mistakes:
Using grid instead of columns for masonry
Mixing flex with columns incorrectly
Reversing responsive column counts
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.