CSS is Impossible and That's Okay
Tags: css, learning, webdev
Published: 2024-02-19 07:53:00

---
title: CSS is Impossible and That's Okay 
published: true
description: It's insanely difficult to truly understand all CSS has to offer. It's okay to accept that you'll never reach that point
canonical_url: https://shubhamjain.co/2024/02/19/css-impossible-thats-okay/
tags: CSS, learning, webdev
published_at: 2024-02-19 07:53 +0000
---


I have been a web developer for more than a decade, and yet, when it comes to CSS, I always feel a bit out of depth. Not only it's enormously complex, its complexity is growing every year.

In the year 2023 itself, there were a dozen [new additions to CSS](https://developer.chrome.com/blog/css-wrapped-2023): style queries, scroll-driven animations, and trigonometric functions, to name a few. 

I hadn't even completely caught up with the intricacies of Grid Layouting, when [subgrid and container queries](https://web.dev/blog/state-of-css-2022) were shipped. Several of the newly added properties handle cases so specific that I hardly believe I would ever use them ([hanging-punctuation](https://chriscoyier.net/2023/11/27/the-hanging-punctuation-property-in-css) and [font-palette](https://developer.mozilla.org/en-US/docs/Web/CSS/font-palette), for example). 

Here's more: there are at least three properties related to [hyphenating paragraphs](https://developer.mozilla.org/en-US/docs/Web/CSS/hyphenate-character). You might have used the `filter` property, but did you know that it supports an entirely different class of [filters using SVG](https://stefanjudis.com/today-i-learned/svgs-filters-can-be-inlined-in-css/)? Or that you can tweak the [image scaling algorithm](https://developer.mozilla.org/en-US/docs/Web/CSS/image-rendering)? Or `border-radius` support [elliptical corners](https://developer.mozilla.org/en-US/docs/Web/CSS/border-radius)?

The complexity can be gauged by the fact that there were at least [25 units in CSS](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Values_and_units). And with container queries, six more were added. Now, imagine being aware of all those units, how to use them, and more importantly, the best time to use them.

There was a time when I wanted to catch up with everything CSS had to offer, but soon enough, I realized the enormity of my ambition—and also, how largely unnecessary it would be.

## Not Knowing CSS is Okay

CSS is complex for a reason. Its objective is to provide solutions for a wide range of use-cases—from a simple document to dynamic interactive websites. I might never need to bother with how a paragraph is hyphenated, but for news websites, it could be pretty important. 

The trouble stems from feeling the compulsion to know the whole of CSS. Hardcore enthusiasts like [Chris Coyier](https://chriscoyier.net/) have probably achieved the feat, but the rest of us need to be content with not knowing a large chunk of the language—a desirable constraint, I would argue.

Because, ultimately, CSS is a toolkit. It's meant to provide tools and solutions for many situations, but not everything is needed at once. You might be proficient with some of the tools, reasonably well with some others, and completely ignorant of the rest. And that's okay!

If you stumble upon the problem that a CSS feature solves, you will likely learn that feature along the way. And even if you don't, it's okay to solve a problem inefficiently, until you stumble upon a better idea in the future. Trust me, you will!

You don't need to use container queries until you feel the pinch of the problem. You don't need to know all the [funky ways](https://gridbyexample.com/examples/) CSS grid can be utilized. You don't need to feel bad about not knowing how an impressive [CSS demo](https://a.singlediv.com/) works. 

In short, you don't need to be overwhelmed with CSS. Everyone feels a bit lost when it comes to the language—from juniors to [seniors](https://news.ycombinator.com/item?id=19021719), but this is mostly from the expectation of knowing everything.

CSS is hard and in my experience, best learned by practically experiencing problems and deeply understanding the solutions. It's good to be vaguely aware of new additions, but you don't need to start using them right away. Learn them at your own pace; you'll do fine.