
TypeScript Beyond Basics
} -->
For years, I used SCSS with BEM. It worked - but I always had to think too much:
Then I tried Tailwind CSS, and I never looked back.
Instead of naming your styles, you just write them. Tailwind gives you small, meaningful utility classes that do exactly what they say:
<button class="bg-blue-500 text-white px-4 py-2 rounded shadow">
Save
</button>
No thinking about .btn
, .btn--primary
, or whether button.scss
exists. The class describes exactly what it does - nothing hidden.
With BEM, naming takes time:
// SCSS + BEM
.card {}
.card__title {}
.card--highlighted {}
In Tailwind, you build everything with utilities:
<div class="bg-white p-4 rounded shadow text-lg font-semibold">
Hello World
</div>
Tailwind classes are like LEGO bricks - you snap them together to create the exact shape and feel.
p-5
→ padding: 1.25rem
text-sm
→ font-size: small
rounded-lg
→ large border radius
shadow-md
→ medium shadow
You don’t need to open a CSS file to understand the design. The markup is the style.
Tailwind also shines when creating variant-based components. You don’t have to duplicate entire CSS blocks — just pass variant classes via props.
Example (Vue or React-style):
const variants = {
primary: 'bg-blue-600 text-white',
secondary: 'bg-gray-200 text-black',
};
<Button className={`px-4 py-2 rounded ${variants[props.variant]}`} />
Your components are now highly composable and easy to extend.
Tailwind makes design consistency easy. Instead of writing:
padding: 20px; // or 1.25rem
You just use p-5, which maps to a consistent spacing scale defined in your config.
This means:
No more one-off pixel values
Easier handoff between devs
Designs stay aligned across pages
Tailwind’s naming encourages reuse of the design system - without enforcing it.
Tailwind comes with utilities that would be annoying to write by hand:
space-x-4
– applies consistent horizontal margin between children
gap-6
– for grid/flex layouts
aspect-video
– force an element into 16:9 ratio
line-clamp-2
– truncate text with ...
divide-y
– add borders between children
grid-cols-3
, flex
, items-center
, justify-between
- layout magic
You can build full responsive layouts without ever leaving the HTML file.
With Tailwind:
I build faster
I don’t name things
I don’t context-switch between markup and CSS
I don’t scroll through files
My components are more reusable
My design is more consistent
My bundle is smaller (thanks to PurgeCSS)
Tailwind CSS isn’t just a styling tool - it’s a complete mindset shift.
It makes UI code:
Descriptive
Consistent
Compositional
Predictable
If you’ve ever struggled to keep your styles clean, organized, and fast to iterate - give Tailwind a serious try. You might never want to write traditional CSS again.
Bartłomiej Nowak
Programmer
Programmer focused on performance, simplicity, and good architecture. I enjoy working with modern JavaScript, TypeScript, and backend logic — building tools that scale and make sense.