With modern frameworks, component libraries, and utility-first CSS, it’s a fair question.
Most frontend developers today rarely write “real” CSS. Layouts come prebuilt. Responsiveness is handled for us. Accessibility is supposed to be baked in. If something needs styling, we tweak a variable, add a utility class, or override a component token.
So… why spend time learning CSS at all?
For a long time, I thought the same.
Until accessibility forced me back into it.
Recently, I had a task that sounded quite innocent:
take an old component and bring it up to modern WCAG accessibility standards.
You know — better accessibility, higher contrast, proper focus states.
Not a nice-to-have. A hard requirement, because I treat accessibility very serious.
In practice, it meant a lot of CSS work.
The container had to be heavily reworked, but the visual design had to stay exactly the same.
And wow… I struggled. A lot. 😅
At some point I caught myself thinking:
CSS might actually be the hardest part of frontend development.
More complicated than JavaScript.
(Okay, maybe it didn’t help that the previous developer clearly didn’t understand CSS either 😬)
CSS Used to Be My Thing
What makes this funny is that I used to be really good at CSS.
Box model? Easy.
Layout tricks? Daily bread.
I could even center an element both vertically and horizontally — without Googling 😄
A long time ago, I even made some extra money building WordPress websites.
Technically simple stuff, but clients paid me because the pages looked good. That was the value.
So… what happened?
The Accessibility Wake-Up Call ♿
This recent task was a harsh reminder.
The real problems weren’t colors or fonts — they were things like:
- focus outlines breaking the layout
- keyboard navigation suddenly revealing broken DOM order
- outlines appearing on only half of a component
- positioning hacks collapsing once
:focus-visiblecame into play
Fixing keyboard navigation alone exposed how fragile the layout really was.
Nothing “advanced”.
Just CSS fundamentals meeting real-world constraints.
And that’s when it hit me:
I’ve been out of serious CSS practice for a long time.
CSS Slowly Slipped Into the Background
I don’t know if you feel the same, but for years now CSS has been… secondary.
In most projects we use:
- a component library
- a design system
- a framework that already handles layout and responsiveness
Our “CSS work” usually means:
- styling a single component
- tweaking a few variables
- overriding something that almost fits
Mobile view? Out of the box.
Grid? Already solved.
Spacing? Tokens.
And then there’s Tailwind.
Don’t get me wrong — I use it too. A lot.
It makes things fast and predictable. Combined with shadcn/ui, you can ship decent-looking UIs without really designing anything.
Honestly, for hobby projects or demos, I don’t even try anymore.
I just ask an LLM to generate a nice layout — Tailwind included — and move on.
Zero CSS struggle. Zero pain.
Sure, sometimes something breaks.
A z-index here, a weird overflow there.
But that’s nothing compared to designing and maintaining entire layouts by hand.
I often don’t even install Stylelint anymore — even though I once contributed a few lines to it, which probably makes me like it even more.
Why bother, if the whole component has five lines of CSS?
Meanwhile… CSS Is Actually Thriving ✨
And that’s the irony.
CSS has evolved massively in recent years.
We now have things like:
- CSS variables (okay, not brand new — but still fundamental)
- Container queries
:has()- Cascade layers
- Native nesting
- Modern color spaces
- Scroll-driven animations
CSS today is more powerful than it has ever been.
Do I follow all of this closely?
Kind of. But not deeply.
Because in day-to-day work, I rarely need it.
The framework handles it. The library abstracts it. The system hides it.
The Generational Gap
What’s interesting is that when I look at younger developers, I still feel like the old guard understands CSS better.
I’m not even sure CSS is properly taught anymore.
University? Probably not.
Bootcamps? Two days of CSS, then straight to JavaScript or “fullstack”.
(By the way — do bootcamps still exist? 😅)
Is that the right direction?
Or just a natural evolution?
Handmade Pasta and CSS
Sometimes I wonder if my nostalgia for CSS is like grandmothers making pasta from scratch.
Sure — it’s better.
Sure — it’s more satisfying.
But how often do we actually have time for that?
Frameworks, utilities, and abstractions exist for a reason.
They make us faster. They reduce mistakes. They standardize work.
But accessibility doesn’t care about abstractions.
To be fair, most modern frameworks and component libraries do provide accessibility out of the box — sensible ARIA attributes, keyboard support, focus management.
But that accessibility is often limited to the “happy path”. The moment you need custom layouts, visual tweaks, or non-standard interactions, you’re back to raw CSS — and whatever knowledge you still have.
And when something breaks — focus, keyboard navigation, layout flow —
there’s no Tailwind class or component prop that saves you.
Only CSS knowledge does.
So… Did CSS Get Worse?
I don’t think so.
I think we just stopped learning it.
And accessibility has a brutal way of exposing that.
What About You?
Do you still work with CSS on a regular basis?
Do you ever design layouts from scratch anymore?
Or maybe CSS is becoming a kind of dark knowledge —
something you only rediscover when things go wrong?
Maybe it’s worth exercising those muscles once in a while —
even just for fun.
Top comments (22)
When you say “CSS might actually be the hardest part of frontend development. More complicated than JavaScript.” — I’m 100% with you. That’s exactly why I stick to backend as much as possible. I’m a perpetual perfectionist, so ready-made libraries don’t appeal to me, and writing everything from scratch in CSS is just a nightmare. Give me pasta — at least I know how to make that and feed a whole table! 😉
I totally get that 😄 I actually enjoy backend work too - but I always end up missing the visual part at the end.
If I ship just an API, there’s this little voice in my head going: “And… that’s it? Is this really the final result?” 😅
It’s been like that for me ever since I started programming. I need to see something at the end - even if it’s messy CSS and slightly broken layouts 😉
It’s not that I don’t want a visual result on my projects — sometimes I’m perfectly happy with a simple text visualization in a CLI — but the reality is I just prefer when someone else handles the front while I focus on the back. To each their own pleasure and specialty, and CSS is very, very far from mine 😉
That said, to come back to your original question: no, learning CSS is definitely not useless — far from it. I think things like WCAG standards make that pretty clear. It’s just that, for both of us maybe, it’s not really our core craft.
Who knows, maybe one day we’ll do a frontend–backend collab 😄
Just need to dig myself out of the thousand things I took on “because they were fun” first 😅
Hey, just say the word and you’re officially hired on the frontend side 😄 The door’s open anytime!
I’m still pretty new to web development, so this was reassuring to read. It’s helpful to see why CSS fundamentals still matter, even with all the tools and abstractions available now. Posts like this make me feel better about spending time learning the basics properly - thanks for sharing this perspective!
Absolutely - learning the basics is never wasted time. It pays off in ways that aren’t always obvious at first, but become incredibly valuable later on.
Good luck with your learning journey, and enjoy it! 😊
Thank you, Sylwia - really do appreciate it - back to CSS Garden and the like, I go!
You're right. Utility-first and component-based thinking is killing CSS and accessibility.
And because the world is riddled with things like Tailwind, people really need to know the basics so they can see when LLMs spit out junk.
I’d say abstractions and utilities are great tools - but they definitely don’t replace understanding the fundamentals.
When you know the basics, you can tell when something isn’t quite right - no matter whether it comes from a framework, a library, or a generator 🙂
This resonates a lot.
I don’t think CSS became irrelevant — it became invisible.
Frameworks and utilities didn’t remove the need for CSS, they just postponed the moment we’re forced to truly understand it.
Accessibility is that moment.
What really clicked for me in your post is that a11y breaks the “happy path abstraction”.
Once focus order, outlines, and keyboard navigation enter the picture, you’re no longer styling — you’re reasoning about layout, flow, and the cascade again.
And no utility class can replace that mental model.
Maybe CSS today is less about writing styles and more about debugging reality when abstractions leak.
In that sense, it feels closer to systems knowledge than UI polish.
Great write-up — especially the reminder that fundamentals don’t disappear, they just wait.
Thank you for this — you’ve put it perfectly. Exactly this.
And I completely agree: it’s not just about CSS. This pattern shows up with any abstraction or framework. They work beautifully until the moment they don’t — and that’s when the underlying fundamentals suddenly matter again.
Accessibility just has a very efficient way of exposing those cracks.
Another reason to keep learning CSS in 2026: one may actually need it in interviews if you plan to change jobs. I’ve recently taken part in a few recruitment processes that included testing assignments, and the CSS questions were surprisingly deep, everything from accessibility basics (like hiding elements from screen readers) to writing complex selectors (like selecting every odd div that’s a sibling of a div with class classOne, but not a descendant of a div with class classTwo). You were expected to remember all of this, with no external resources allowed. Kind of wild, right? 🙂
I honestly didn’t expect that! 😄 I’ve been through quite a lot of interviews in my career, and I don’t remember being seriously grilled on CSS even once.
But you’re absolutely right about accessibility - over the last few years it’s started being treated very seriously. Largely because of legal requirements, yes - but still, better that than being ignored.
Loved the read,
It really gave a time to rethink myself back:
Thanks for this wonderful article.
Thank you so much - I’m really glad it made you stop and reflect a bit 😊
And honestly, I won’t pretend it would be easy for me to switch back to pure, framework-free CSS either - I’ve gotten very used to the modern tooling. But it’s still a great skill to keep alive.
Nice article! I can't even count how many times I've googled: How do I center an element both vertically and horizontally 😆
A true classic 😄 And it was especially painful back in the pre-Flexbox days.
Centering something vertically used to feel like solving a puzzle rather than writing CSS 😅
Try vertically centering an auto sized div in a div in IE6. It wasn't just hard, it was impossible - hence tables for layout, because you could vertically center content in a real
<td>element.CSS at the time had several methods for vertically centering such divs, but because of various bugs, none of them actually worked in IE6.
Thanks for the IE6 trauma reminder — I had almost managed to repress that memory 😅
I read the title and I was like...h u h:
I kept on reading and it makes sense. Never judge a post by the title lol.
Short answer: No.
Long answer: You are learning CSS regardless of if you are using Tailwind and such. For my projects, sometimes I go back to CSS even though I used bootstrap for my application because of getting small tweaks onto the webpage. I never really thought about accessibility until you mentioned it, which I found it interesting when you mentioned keyboard navigation.
I tend to think accessibility when it comes to HTML and JS. I treat CSS as just a "style" in a literal sense to make the webpage visually neat. I remember one of my courses taught CSS, but not as much to the point where our assignment in CSS is optional. I believe it should at least mention how important it is for accessibility since they failed to mention it.
I gave you a follow after a couple posts since you make great takes on the Development world! Awesome work!
I could even center an element both vertically and horizontally — without Googling 😄 - that's so impressive, coz I still have to google that every friggin' single time I need it ... 😄😄😄
P.S. on a serious note - yes, I would think that learning CSS is still important, because it's the foundation - or am I something of a "dinosaur" already, haha?