
With modern frameworks, component libraries, and utility-first CSS, it’s a fair question. Most...
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 😬)
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?
This recent task was a harsh reminder.
The real problems weren’t colors or fonts — they were things like:
:focus-visible came into playFixing 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.
I don’t know if you feel the same, but for years now CSS has been… secondary.
In most projects we use:
Our “CSS work” usually means:
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?
And that’s the irony.
CSS has evolved massively in recent years.
We now have things like:
:has()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.
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?
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.
I don’t think so.
I think we just stopped learning it.
And accessibility has a brutal way of exposing that.
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.
gemmaI ported the whole Gemma-4 family — E2B, E4B, 12B, 31B, and the 26B-A4B MoE — to run on...
communityHey DEV, I'm Tobore. Let's actually connect. I've been on here for a while now, mostly writing and...
ai(yep, kinda clickbait, just for the funsies 😊) At the beginning of the year, I relaunched my...
aiMy laptop was sitting idle with the fan at full tilt. Nothing was running that I knew of. The culprit...
githubactionsI Built a Thing! TL;DR — Google Gemini-based Pull Request reviews and Issue Triaging for...
aiI've been hearing the word "harness" thrown around a lot lately. I assumed it just meant "the IDE" or...
Workflows from the Neura Market marketplace related to this DeepSeek resource