PSA: Web browsers only understand pure, unadulterated CSS. All of the fancy tools we use — Bootstrap, Tailwind, Sass, CSS-in-JS libs — produce vanilla CSS for the browser.

If you want to be productive with these tools, you *need* to understand how CSS works.
I think a lot of developers think that these tools are shortcuts, as though you can learn them instead of learning CSS. But that's not actually true.

These tools are meant to *amplify* your CSS skills, not replace them!
Here's one big reason why: when things go awry, and you need to debug an interface that isn't right, the browser devtools will show you the CSS that has been applied. Not the Material UI components / Tailwind classes.

Even if you don't *write* CSS, you still need to *debug* CSS.
There are quirks and mechanisms in CSS that will affect you no matter which tool you use. Margins still collapse. Stacking contexts and scroll containers and containing blocks are all still present, no matter how many layers of abstraction they're buried under.
To be clear, I'm not anti-tool. I've used and loved lots of different CSS tools! But like I said, they amplify my CSS skills. They don't replace them.

Think of it like a fancy mechanical keyboard; it can enhance the typing experience, but you still need to learn how to type!

• • •

Missing some Tweet in this thread? You can try to force a refresh
 

Keep Current with Josh W. Comeau

Josh W. Comeau Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @JoshWComeau

13 Dec
I'm in the process of trying to rent some office space and my god, I've never seen an industry in such need of disruption 😅
Today's challenge is finding a company that will issue business liability insurance, a requirement for commercial leases. Unlike every other kind of insurance I've ever purchased, it can't be done online. You need to call and talk to people. LOTS of people.
I've learned that different insurance companies insure different kinds of businesses. The company I just spoke with, after being redirected 3 times, told me they can't do it because I sell products internationally, and they don't work with international businesses (??).
Read 8 tweets
28 Nov
I feel like there's a lot of hype about web3 on Twitter, and it might give folks the impression that they *need* to switch gears and start learning this stuff if they want to stay relevant.

I wanna push back on this a bit. I think you'll be just fine if you ignore the web3 hype.
I have no idea whether web3 will become the new standard. I would be surprised if it does, but I've been surprised before. 🤷‍♂️

But even if it does, it won't happen overnight, and the eventual technology will look very different from what people are learning today.
Let's imagine it's 1999, and you're bullish on this new "web 2.0" craze. You want to build a rich interactive web application. So you decide to learn the most bleeding-edge language of the era, Java.

Most "web 2.0" sites today are not built using Java.
Read 10 tweets
26 Nov
🎁 I have a little Black Friday gift for y'all! ✨

For the next couple days, you can check out the first few lessons from the Flexbox module in my CSS course, “CSS for JavaScript Developers”. 😄

Check it out here:
courses.joshwcomeau.com/css-for-js/04-…

(No signup required! Totally open.) Screenshot of the course pl...
I picked these lessons specifically because I think they have good standalone value. I bet you'll learn a thing or two from them!

(Also: these lessons have never been publicly available before! I did a similar “Open House” thing during the launch, but w/ different content.)
In Lesson I, “Hello Flexbox”, we talk about Flexbox's origins, why it's still relevant today, when to use Flexbox vs. Grid. We also look at a quick example, and see how the layout mode works.
Read 9 tweets
4 Oct
For most of the web, the text is the most important thing on the page.

🧵 Let's look at some of the stuff I've learned for keeping our text readable + accessible for everyone.
For folks with poor vision, larger text will help them be able to read.

There are two primary ways to increase font size:
1. Using the browser "zoom" controls (cmd/ctrl +, cmd/ctrl –)
2. Picking a larger default font size in the browser settings
Browser zoom works with most units, including px, em, and rem. It doesn't work with viewport units (vw/vh).

Scaling the default font size only works with em/rem/%.

So, while it's not as bad as it used to be, we still shouldn't use px for typography.
Read 13 tweets
1 Oct
So, I'm biased, and I think that my CSS course is the best way to level-up your CSS skills… but even *I* have to admit, there are TONS of great free resources!

Sharing some of my favourites in this thread, in case CSS for JavaScript Developers isn't within your budget.

👇
1. Google recently released Learn CSS, a wonderful tour through the fundamentals of the CSS language. It's built by a superstar team (including @Una @rachelandrew @piccalilli_ and @argyleink).

web.dev/learn/css/
2. @rachelandrew goes through the fundamental principles of the CSS language in this fantastic blog post, “How To Learn CSS”. It's short and concise, and it links off to additional resources in each section.

smashingmagazine.com/2019/01/how-to…
Read 7 tweets
13 Sep
🎉 Brand-new blog post just published, all about creating lush, life-like shadows in CSS.

Check it out here:
joshwcomeau.com/css/designing-…

Or, keep reading for some highlights. 👇 Two white boxes with shadows. One has a grey boxy shadow, th
First, I wanna clarify that this isn't all just about aesthetics. It's important to understand *why* shadows are such a powerful tool.

Shadows give our application depth and realism, and let us focus attention by elevating important elements.
In the past, when I wanted to add a shadow, I'd play with the numbers until I liked the way it looked. As a result, I had a mess of incongruous shadows, breaking the overall illusion of depth 😅

We can avoid this problem by understanding how shadows work.
Read 8 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Too expensive? Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us on Twitter!

:(