3 min read
Stop writing custom CSS for everything. These simple patterns will change how you build interfaces.
You can turn repetitive Tailwind classes into reusable CSS components.
.btn {
@apply bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded;
}
.card {
@apply bg-white shadow-lg rounded-lg p-6 border border-gray-200;
}
Now instead of this mess:
<button
class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded"
>
Submit
</button>
You write this:
<button class="btn">Submit</button>
Much cleaner when you need the same style in multiple places.
Stop adding margins to individual elements. Let the parent handle spacing.
<!-- Instead of this -->
<div>
<div class="mb-4">First item</div>
<div class="mb-4">Second item</div>
<div class="mb-4">Third item</div>
<div>Last item</div>
</div>
<!-- Do this -->
<div class="space-y-4">
<div>First item</div>
<div>Second item</div>
<div>Third item</div>
<div>Last item</div>
</div>
For horizontal spacing:
<div class="flex space-x-6">
<span>Home</span>
<span>About</span>
<span>Contact</span>
</div>
The parent controls spacing. No more calculating margins.
Tailwind handles breakpoints for you. Just prefix your classes.
<div class="w-full md:w-1/2 lg:w-1/4">
<h2 class="text-lg md:text-xl lg:text-2xl">
This heading scales up on larger screens
</h2>
</div>
The breakpoints work like this:
sm:
applies at 640px and upmd:
applies at 768px and uplg:
applies at 1024px and upxl:
applies at 1280px and upMobile first by default. No media query hell.
Add dark mode variants to any utility class.
<div class="bg-white dark:bg-gray-900 text-gray-900 dark:text-white">
<h1 class="text-2xl font-bold">This automatically switches in dark mode</h1>
<button
class="bg-blue-500 dark:bg-blue-600 hover:bg-blue-600 dark:hover:bg-blue-700 text-white px-4 py-2 rounded"
>
Button that works in both modes
</button>
</div>
Enable it with a simple media query:
@media (prefers-color-scheme: dark) {
.dark {
/* All dark: variants activate */
}
}
Your site respects user preferences automatically.
Sometimes you need exact values that aren't in the default scale.
<!-- Custom spacing -->
<div class="mt-[18px] px-[15px]">Exact pixel values</div>
<!-- Brand colors -->
<div class="bg-[#ff6b6b] text-[#4ecdc4]">Your exact brand colors</div>
<!-- Complex calculations -->
<div class="w-[calc(100%-32px)] h-[75vh]">CSS calculations work too</div>
Use this when the built-in scale doesn't have what you need. But stick to the defaults when possible for consistency.
Here's a complete component using these techniques:
<article class="bg-white dark:bg-gray-800 rounded-lg shadow-md overflow-hidden">
<img
src="blog-image.jpg"
alt="Article thumbnail"
class="w-full h-48 object-cover"
/>
<div class="p-6 space-y-4">
<div class="flex items-center space-x-2">
<span class="text-sm text-blue-600 dark:text-blue-400 font-medium">
Technology
</span>
<span class="text-gray-400">•</span>
<time class="text-sm text-gray-500 dark:text-gray-400">
March 15, 2024
</time>
</div>
<h2 class="text-xl md:text-2xl font-bold text-gray-900 dark:text-white">
Building Better Web Applications
</h2>
<p class="text-gray-600 dark:text-gray-300 leading-relaxed">
Learn how modern tools and frameworks can help you build faster, more
maintainable applications that users love.
</p>
<div
class="flex items-center justify-between pt-4 border-t border-gray-200 dark:border-gray-700"
>
<div class="flex items-center space-x-3">
<img src="author.jpg" alt="Author" class="w-8 h-8 rounded-full" />
<span class="text-sm font-medium text-gray-900 dark:text-white">
Sarah Chen
</span>
</div>
<button
class="text-blue-600 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-300 text-sm font-medium"
>
Read more
</button>
</div>
</div>
</article>
This card works perfectly on mobile and desktop, supports dark mode, and uses consistent spacing throughout.
Traditional CSS gets messy fast. You write styles in one file, use them in another, and maintaining everything becomes a nightmare.
Tailwind keeps your styles right next to your HTML. You see exactly what's applied without jumping between files.
The utility classes are designed to work together. The spacing scale, color palette, and typography all follow consistent rules.
And since Tailwind only includes the classes you actually use, your final CSS bundle stays small.
Start building. You'll be surprised how quickly you can create professional-looking interfaces.
The learning curve is real, but once these patterns click, you'll build UI faster than ever before.
Try these tools:
→ Rain Pomodoro – stay focused while you code
→ Button Builder – design perfect CSS buttons in seconds