Cards help group related information in a neat box. They make content easy to scan and look nice on any screen.
Card component patterns in Tailwind
<div class="card"> <img src="image.jpg" alt="Description" class="card-image" /> <div class="card-content"> <h2 class="card-title">Title here</h2> <p class="card-text">Some description or details.</p> </div> </div>
Use flex or grid with Tailwind to arrange card parts.
Apply padding, margin, and shadows for spacing and depth.
<div class="max-w-sm rounded overflow-hidden shadow-lg"> <img class="w-full" src="https://via.placeholder.com/400x200" alt="Sunset" /> <div class="px-6 py-4"> <div class="font-bold text-xl mb-2">Sunset</div> <p class="text-gray-700 text-base">A beautiful sunset view.</p> </div> </div>
<div class="flex max-w-md bg-white rounded-lg shadow-md overflow-hidden"> <img class="w-1/3 object-cover" src="https://via.placeholder.com/150" alt="Profile" /> <div class="p-4"> <h3 class="text-lg font-semibold">Jane Doe</h3> <p class="text-gray-600">Web developer and designer.</p> </div> </div>
<div class="grid grid-cols-1 sm:grid-cols-2 gap-4"> <div class="bg-white p-4 rounded shadow"> <h4 class="font-bold">Feature 1</h4> <p>Details about feature one.</p> </div> <div class="bg-white p-4 rounded shadow"> <h4 class="font-bold">Feature 2</h4> <p>Details about feature two.</p> </div> </div>
This card shows an image on top, a bold title, descriptive text, and a button. It uses Tailwind classes for spacing, colors, and hover/focus states. The card is centered on the page with some padding around.
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1" /> <title>Card Component Example</title> <script src="https://cdn.tailwindcss.com"></script> </head> <body class="bg-gray-100 flex items-center justify-center min-h-screen p-4"> <div class="max-w-sm bg-white rounded-lg shadow-lg overflow-hidden"> <img class="w-full h-48 object-cover" src="https://images.unsplash.com/photo-1506744038136-46273834b3fb?auto=format&fit=crop&w=400&q=80" alt="Mountain" /> <div class="p-6"> <h2 class="text-2xl font-bold mb-2">Mountain Adventure</h2> <p class="text-gray-700 mb-4">Explore the beautiful mountain trails and enjoy nature's beauty.</p> <button class="bg-blue-600 text-white px-4 py-2 rounded hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-400">Learn More</button> </div> </div> </body> </html>
Always add alt text to images for accessibility.
Use focus:outline-none and focus:ring classes on buttons for keyboard users.
Test cards on different screen sizes to ensure they look good everywhere.
Cards group related content in a neat box with image, text, and actions.
Use Tailwind utilities like padding, shadows, and flex/grid to build cards easily.
Make cards accessible with alt text and keyboard-friendly buttons.
Practice
Solution
Step 1: Understand the role of card components
Cards are designed to group related content visually, such as images, text, and actions, making information easy to scan.Step 2: Identify the correct purpose
Options A, B, and C describe unrelated or incorrect uses of cards in web design.Final Answer:
To group related content like images, text, and buttons in a neat box -> Option DQuick Check:
Card purpose = Group related content [OK]
- Thinking cards are for animations
- Confusing cards with page layout containers
- Assuming cards add multimedia like music
Solution
Step 1: Understand Tailwind padding classes
The classp-4adds padding inside an element, creating space between content and edges.Step 2: Differentiate from other classes
m-4adds margin outside the element,text-centercenters text, andbg-gray-200sets background color.Final Answer:
p-4 -> Option AQuick Check:
Padding inside card = p-4 [OK]
- Confusing padding (p-) with margin (m-)
- Using text alignment instead of spacing
- Mixing background color with spacing classes
<div class="max-w-sm rounded overflow-hidden shadow-lg p-6"> <img class="w-full" src="image.jpg" alt="Sample" /> <div class="pt-4">Card content here</div> </div>
Solution
Step 1: Analyze the container classes
max-w-smlimits width to small size,roundedadds rounded corners,shadow-lgadds a large shadow, andp-6adds padding inside the card.Step 2: Check image and content layout
w-fullon the image makes it full width inside the card, andpt-4adds top padding to the content below the image.Final Answer:
A small card with rounded corners, shadow, padding, and a full-width image on top -> Option CQuick Check:
Rounded + shadow + padding + full image = A small card with rounded corners, shadow, padding, and a full-width image on top [OK]
- Ignoring padding and shadow effects
- Assuming image is not full width
- Confusing max width with full width
<div class="rounded shadow p-4"> <img src="photo.jpg" /> <button class="bg-blue-500 text-white p-2">Click</button> </div>What is missing for accessibility?
Solution
Step 1: Check image accessibility
Theimgtag lacks analtattribute, which is important for screen readers to describe the image.Step 2: Review other options
Button hover effects and background colors are style choices, not accessibility requirements. Padding on the button is valid.Final Answer:
Theimgtag is missing analtattribute -> Option BQuick Check:
Missing alt attribute = accessibility issue [OK]
- Ignoring missing alt attributes on images
- Confusing style issues with accessibility
- Assuming padding errors cause accessibility problems
Solution
Step 1: Understand responsive grid classes
grid-cols-1sets 1 column by default (small screens), andlg:grid-cols-3changes to 3 columns on large screens.gap-6adds spacing between grid items.Step 2: Evaluate other options
flex flex-col lg:flex-row gap-6 uses flex layout, which can work but does not define columns explicitly. block lg:grid-cols-3 gap-6 usesblockwhich disables grid. grid-cols-3 grid gap-6 lg:grid-cols-1 reverses column counts incorrectly.Final Answer:
grid grid-cols-1 lg:grid-cols-3 gap-6 -> Option AQuick Check:
Responsive grid columns = grid grid-cols-1 lg:grid-cols-3 gap-6 [OK]
- Using flex instead of grid for column control
- Setting grid-cols-3 before lg breakpoint
- Forgetting to add grid container class
Ready to prove it?
Pass the test and this pattern moves unknown
