📖 Scenario: You are creating a responsive product list for a small online store. The products should wrap onto new lines when the screen is narrow, so they look neat and organized.
🎯 Goal: Build a simple webpage using Tailwind CSS that displays a row of product boxes. The boxes should wrap to the next line when they don't fit in one row.
📋 What You'll Learn
Use a flex container with Tailwind CSS
Apply the flex-wrap utility to allow wrapping
Create exactly 5 product boxes with fixed width and height
Use semantic HTML and accessible labels
Make sure the layout is responsive and wraps on smaller screens
💡 Why This Matters
🌍 Real World
Online stores and portfolios often need flexible layouts that adapt to screen size. Using flex-wrap helps keep items organized and readable on all devices.
💼 Career
Understanding flexbox and responsive design with Tailwind CSS is essential for frontend developers building modern, accessible websites.
Progress0 / 4 steps
1
Create the HTML structure with product boxes
Create a <div> with class flex and inside it add 5 <div> elements each with class w-40 h-40 bg-blue-300 m-2. Each product box should contain the text Product 1, Product 2, up to Product 5 respectively.
Tailwind
Hint
Use a <div> with class flex to create a flex container. Then add 5 child <div> elements with fixed width and height using Tailwind classes.
2
Add the flex-wrap utility
Add the Tailwind CSS class flex-wrap to the existing flex container <div class="flex"> so it becomes <div class="flex flex-wrap">.
Tailwind
Hint
Simply add the flex-wrap class next to flex in the container's class attribute.
3
Add a heading and semantic container
Wrap the flex container inside a <main> element and add a heading <h1> with the text Product List above the flex container.
Tailwind
Hint
Use a <main> tag to wrap the content and add a heading with Tailwind classes for size and spacing.
4
Make the product boxes accessible
Add role="list" to the flex container <div class="flex flex-wrap"> and add role="listitem" to each product box <div> inside it.
Tailwind
Hint
Use ARIA roles role="list" on the container and role="listitem" on each child for better accessibility.
Practice
(1/5)
1. What does the Tailwind class flex-wrap do to flex items inside a container?
easy
A. Allows flex items to move to the next line when they don't fit in one row
B. Prevents flex items from wrapping and keeps them in one line
C. Reverses the order of flex items horizontally
D. Centers flex items vertically inside the container
Solution
Step 1: Understand flex-wrap behavior
The flex-wrap class in Tailwind allows flex items to wrap onto multiple lines if they don't fit in one row.
Step 2: Compare with other options
flex-nowrap prevents wrapping, flex-wrap-reverse wraps in reverse order, and centering is unrelated.
Final Answer:
Allows flex items to move to the next line when they don't fit in one row -> Option A
Quick Check:
flex-wrap = wrap items to next line [OK]
Hint: flex-wrap means items can jump to next line [OK]
Common Mistakes:
Confusing flex-wrap with flex-nowrap
Thinking flex-wrap reverses item order
Assuming flex-wrap centers items
2. Which Tailwind class correctly prevents flex items from wrapping onto multiple lines?
easy
A. flex-wrap
B. flex-center
C. flex-nowrap
D. flex-wrap-reverse
Solution
Step 1: Identify the class that stops wrapping
The class flex-nowrap keeps all flex items on a single line without wrapping.
Step 2: Check other classes
flex-wrap allows wrapping, flex-wrap-reverse wraps in reverse order, and flex-center is not a valid Tailwind class.
A. Three boxes in the first row, one box wrapped to second row
B. All four boxes in one row, each taking one third width
C. Two boxes per row, two rows total
D. Boxes stacked vertically in one column
Solution
Step 1: Calculate total width per row
Each box is set to width 1/3 (about 33.33%). Three boxes fit in one row (3 x 33.33% = 100%). The fourth box cannot fit in the same row.
Step 2: Understand flex-wrap effect
Because flex-wrap is used, the fourth box wraps to the next line, creating a second row with one box.
Final Answer:
Three boxes in the first row, one box wrapped to second row -> Option A
Quick Check:
flex-wrap + widths > 100% causes wrapping [OK]
Hint: Sum widths > 100% with flex-wrap means wrap next line [OK]
Common Mistakes:
Assuming all boxes fit in one row
Ignoring flex-wrap effect
Thinking boxes stack vertically without flex-wrap
4. You want flex items to wrap in reverse order (bottom to top). Which Tailwind class should you use? Your code currently uses flex-wrap but items wrap top to bottom.
medium
A. Replace flex-wrap with flex-nowrap
B. Add flex-wrap-reverse instead of flex-wrap
C. Add flex-row-reverse along with flex-wrap
D. Use flex-col instead of flex-wrap
Solution
Step 1: Understand the difference between wrap classes
flex-wrap wraps items normally (top to bottom). To wrap in reverse order (bottom to top), use flex-wrap-reverse.
Step 2: Check other options
flex-nowrap disables wrapping, flex-row-reverse reverses horizontal order but not wrap direction, flex-col changes flex direction vertically.
Final Answer:
Add flex-wrap-reverse instead of flex-wrap -> Option B
Quick Check:
flex-wrap-reverse reverses wrap direction [OK]
Hint: Use flex-wrap-reverse to wrap bottom to top [OK]
Common Mistakes:
Using flex-nowrap disables wrapping
Confusing flex-row-reverse with wrap direction
Replacing flex-wrap with flex-col changes layout direction
5. You have a flex container with flex-wrap and several items with fixed widths. On small screens, items overflow horizontally. How can you fix this using Tailwind classes?
hard
A. Set all items to fixed pixel widths to prevent wrapping
B. Replace flex-wrap with flex-nowrap to keep items in one line
C. Use responsive classes like sm:flex-nowrap and flex-wrap for smaller screens
D. Add overflow-x-auto to container to enable horizontal scroll
Solution
Step 1: Identify overflow cause
Fixed width items with flex-wrap can overflow container on small screens if total width exceeds viewport.
Step 2: Apply horizontal scroll
Adding overflow-x-auto on the container allows horizontal scrolling, preventing content cutoff without breaking layout.
Final Answer:
Add overflow-x-auto to container to enable horizontal scroll -> Option D
Quick Check:
overflow-x-auto fixes horizontal overflow [OK]
Hint: Use overflow-x-auto to scroll wide flex content [OK]
Common Mistakes:
Using flex-nowrap causes more overflow
Setting fixed pixel widths ignores responsiveness
Trying responsive nowrap incorrectly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.