← All Posts

Vanilla CSS vs. Modern Frameworks: Why Some of My Websites Look Professional and Others Completely Unorthodox

If you look through different websites I've built, you might notice they don't all look like they came from the same developer.

One might be clean, structured, professional, and maybe even a little “bland.”

Another might have weird animations, unconventional layouts, strange transitions, and shit moving around that probably breaks a few traditional design rules.

That's intentional.

The Stack Shouldn't Determine the Personality

I don't subscribe to Vanilla CSS good, Tailwind bad or vice versa.

I can use Vanilla CSS.
I can use React.
I can use Vite.
I can use Tailwind.
I can combine them.

The interesting part isn't picking a side. It's knowing when each approach makes sense.

Vanilla CSS can become bland when you don't push it. You're starting with essentially a blank canvas, and if the design stays simple, the result can naturally feel simple too.

On the other hand, Tailwind can become repetitive when you rely too heavily on its conventions.

Its biggest advantage is consistency — standardized spacing, sizing, breakpoints, and reusable patterns. But combine that with the same popular React component libraries and layouts everyone else is using, and suddenly you start recognizing the same cards, grids, rounded corners, hero sections, and navigation patterns everywhere.

That doesn't mean Tailwind limits creativity.

Neither determines creativity — the developer does.

React and Vite don't technically restrict creativity either. I can always introduce custom CSS and break away from those patterns whenever I want.

But different workflows naturally push you toward different ways of thinking.

Modern frameworks and design systems can give me structure, consistency, scalability, and speed.

Custom CSS gives me an environment where I'm comfortable getting weird and experimenting outside established patterns.

And sometimes that's exactly what I want.

Sometimes “Bland” Is Actually Professional

If I'm building something trust-heavy or professional, I don't need shit flying across the screen just to prove I know how to animate it.

Clean typography.
Good navigation.
Consistency.
Restraint.

Sometimes that's the better product.

Sometimes “bland” is actually intentional professionalism.

But sports, fashion, media, entertainment, and culture-driven projects might need personality just to compete.

That's when I'm more likely to start experimenting with unusual positioning, custom keyframes, pseudo-elements, scroll effects, weird transitions, and interactions that intentionally break convention.

That's when I get to ask:

“What happens if I put this shit over here?”

And see what happens.

Does It Actually Need It?

Before I overdevelop something, I try to ask myself:

Does this project actually benefit from being different, or am I adding complexity just because I can?

Because every business doesn't need the ultra-animated website.

Sometimes structure wins.
Sometimes creative freedom wins.

Sometimes I want React + Tailwind for consistency and scalability. Sometimes I want custom CSS so I can get completely fucking weird. Sometimes the right answer is combining everything.

The stack is just the toolbox.

It shouldn't determine the personality of the product.

And I don't want every website I build to look like it came from the same developer.

I want it to look like it belongs to the business I built it for.

// UP NEXT

“Bro, You Seem Aggressive… Can I Actually Work With You?”

I've heard some version of this before: “Bro, you seem aggressive.” And honestly? Yeah. But there's probably a misunderstanding of what people mean…

Read It →