🧭 Introduction
So far, you’ve learned multiple ways to style React applications:
- CSS files
- Inline styles
- CSS Modules
While these methods work well, large projects often suffer from:
- Too many CSS files
- Naming confusion
- Context switching between JSX and CSS
To solve this, many modern React projects use Tailwind CSS — a utility-first CSS framework.
In this lesson, you will learn:
- What Tailwind CSS is
- Why developers prefer Tailwind
- How Tailwind works in React
- Writing styles using utility classes
- Pros, cons, and best practices
❓ What is Tailwind CSS?
Tailwind CSS is a utility-first CSS framework that lets you:
Style components directly in JSX using small, reusable utility classes.
Example:
<div className="bg-blue-500 text-white p-4 rounded">
Tailwind Button
</div>
👉 No separate CSS file needed.
🧠 Why Use Tailwind CSS?
❌ Problems with Traditional CSS
- Context switching (JSX ↔ CSS)
- Class naming problems
- Large unused CSS files
✅ Benefits of Tailwind CSS
✔ Faster development
✔ No class name conflicts
✔ Highly customizable
✔ Small production bundle
✔ Popular in modern projects
🧩 Tailwind CSS is Utility-First
Instead of writing:
.card {
padding: 16px;
background: white;
border-radius: 8px;
}
You write:
<div className="p-4 bg-white rounded">
👉 Each class does one thing.
🛠 Tailwind Setup (Overview)
⚠️ Tailwind setup depends on your project (CRA / Vite).
We focus on usage, not installation here.
Once installed, you can directly use Tailwind classes in JSX.
🧩 Basic Tailwind Utility Examples
🎨 Colors
<p className="text-red-500">Error Message</p>
📐 Spacing
<div className="p-4 m-2">Box</div>
🔠 Text
<h1 className="text-2xl font-bold">Heading</h1>
🔲 Layout
<div className="flex items-center justify-between">
🧩 Example: Styled Card Component
const Card = () => {
return (
<div className="max-w-sm p-6 bg-white rounded-lg shadow">
<h2 className="text-xl font-semibold mb-2">
Tailwind Card
</h2>
<p className="text-gray-600">
Styling React with Tailwind CSS
</p>
<button className="mt-4 px-4 py-2 bg-blue-600 text-white rounded">
Click Me
</button>
</div>
);
};
export default Card;
✔ No CSS file
✔ Fully styled component
✔ Easy to maintain
🧩 Responsive Design with Tailwind
Tailwind makes responsive design very easy.
<div className="p-2 md:p-4 lg:p-6">
Responsive Box
</div>
| Prefix | Meaning |
|---|---|
sm: | Small screens |
md: | Medium screens |
lg: | Large screens |
xl: | Extra large screens |
🧩 Conditional Styling with Tailwind
<button
className={`px-4 py-2 rounded ${
isActive ? "bg-green-500" : "bg-gray-400"
}`}
>
Status
</button>
✔ Works perfectly with React state
🆚 Tailwind vs CSS Modules
| Feature | CSS Modules | Tailwind CSS |
|---|---|---|
| Separate CSS file | ✅ | ❌ |
| Utility-based | ❌ | ✅ |
| Class conflicts | ❌ | ❌ |
| Speed of development | Medium | Fast |
| Learning curve | Low | Medium |
⚠ Common Mistakes
❌ Writing long unreadable class strings
❌ Using Tailwind for everything blindly
❌ Not extracting reusable components
❌ Avoiding Tailwind config customization
🎯 Best Practices
✅ Use Tailwind for layout & spacing
✅ Extract reusable UI components
✅ Keep JSX readable
✅ Combine Tailwind with component structure
✅ Customize Tailwind theme if needed
❓ FAQs — Tailwind CSS in React
🔹 Is Tailwind CSS better than CSS?
It’s different. Tailwind focuses on utility-first styling, not traditional CSS files.
🔹 Does Tailwind increase bundle size?
No. Tailwind removes unused CSS in production.
🔹 Can Tailwind replace CSS Modules?
Yes, in many projects. Some teams still mix both.
🔹 Is Tailwind beginner-friendly?
Yes, but it takes some practice.
🧠 Quick Recap
✔ Tailwind CSS is utility-first
✔ Styles written directly in JSX
✔ Faster UI development
✔ Perfect for modern React apps
🎉 Conclusion
Tailwind CSS is a modern, powerful styling approach that fits perfectly with React’s component-based architecture. It helps you build clean, responsive, and professional UIs faster than traditional CSS methods.
You now know four major styling approaches in React — excellent progress! 🎨🚀
👉 Next Lesson (SECTION 7):
Lesson 37 — MUI / Bootstrap Introduction