Tell me if this scenario sounds familiar:
You're working on a web app, and the header is rebelling against you. You're adding margin to the navigation items, but it doesn't seem to be doing anything. The logo is ever-so-slightly misaligned, and whenever you try to fix it, other things break. 😡
You finally get everything working, but it feels fragile, like a house of cards. You haven't even tested yet on a real mobile device. Or in Safari. Or in IE 😱. It feels like you're stacking property on top of property, hoping to stumble onto the mystical combination that will fulfill all requirements simultaneously.
It can be relatively easy to get started with CSS, but mastering all of its little quirks and idiosyncracies, juggling all the competing concerns… It's friggin tough!
This frustration is super familiar to me. I started writing CSS all the way back in 2006, and for a decade I stumbled my way through it. I learned enough to get by, but I had swiss cheese knowledge. I didn't understand the fundamentals, and as a result, I was constantly anxious that things would break and I wouldn't know how to fix them.
Eventually, I decided enough was enough. It was time to get good at CSS.
I started with the fundamentals, understanding at a low level how the browser decides where to put the boxes and which colors to paint the pixels. I built accurate mental models of different CSS properties, and how they interact with different layout algorithms. I learned all about the really cool things that CSS can do, like animations and visual effects and art.
This was a ton of work, but it's maybe the best investment of time I've ever made. I went from feeling anxious about complex designs to feeling excited. I still run into challenges, of course, but I'm confident that I'll always be able to figure it out.
I've developed something of a spidey sense—an intuition that helps me figure out the best layout method for a given situation. I can sometimes anticipate funky interactions even before the hot-reloader shows them to me ⚡️⚡️⚡️
Not every developer has the time to go spelunking in the depths of the MDN documentation though. It took me a lot of time to become comfortable with CSS, but I'm here to offer you a faster solution.
Over the past few months, I've been building an online course. It's ruthlessly focused on giving you a rock-solid CSS intuition, so you can build anything and everything. I'm so excited to share it with you.
I call it…
An interactive online course that gives you CSS superpowers.
I've learned a lot about education over my career, from working alongside some of the smartest pedagogical minds in the world at Khan Academy, to developing curriculum and teaching web-development fundamentals at Concordia University.
The biggest takeaway: learning is active, not passive. You learn so much better and faster when you can experiment and interact with the material.
For the past few years, I've been applying this knowlege on my blog, to create interactive learning experiences:
Now, though, I'm doing something on an entirely different scale.
This is a —it combines many different formats:
- Interactive articles teach concepts in plain English, and give you opportunities to tweak sliders and edit code snippets to experiment and develop intuition.
- Exercises to give you practical hands-on experience applying the concepts to real-world scenarios.
- Games to test your knowledge and solidify learning.
- Videos to demonstrate visual concepts (eg. DevTools tricks) and introduce high-level ideas.
No course platform offers these capabilities, so I'm building my own. I truly believe it'll offer an unparalleled learning experience, helping you reach full comprehension in record speed. ⚡️
Who is this course for?
It's not meant for absolute beginners; I assume you know how to set background colors and font sizes. But I also assume that your CSS knowledge is incidental; you've picked up some stuff along the way, but you haven't gone super deep into CSS.
Having a JS-developer perspective means that we won't focus on things like naming methodologies; we'll leverage modern toolsets to solve problems like scoping for us. Instead, we'll focus on the core principles that empower us to build things.
The ultimate goal of this course is to make you feel at least as confident with CSS as you feel with JS and HTML! With a comfortable grasp of all core web languages, you'll be able to create anything you can dream up!
This course is under active development. Like many developers, time estimation is not my forté, but I hope to release it in .
You can subscribe to receive periodic updates about this course! I plan on sending free content as I finish it, and may even send a few early-bird coupons 😮
About your instructor
This course is taught by me, Josh W Comeau. I've been building for the web for well over a decade, and I've worked as a senior software engineer for companies like Khan Academy, Unsplash, and DigitalOcean. Most recently, I was as a Senior Staff Software Engineer at Gatsby Inc., the company behind the Gatsby.js web framework.
Because my schedule wasn't absurdly hectic enough, I also worked part-time for Journey Education, teaching web-development courses at Concordia University. I led development of our React curriculum, and was the head instructor for the part-time Web Development course.
I'm deeply passionate about education, and I'm incredibly excited to be focusing on it full-time! I hope that you'll come with me on this journey 🚀