-
-
Notifications
You must be signed in to change notification settings - Fork 3
Intro to poetic css #1060
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Intro to poetic css #1060
Changes from 2 commits
45e0ffc
7f1effb
d956acf
1423bac
ac72916
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,191 @@ | ||||||||||
| --- | ||||||||||
| title: CSS is one big progressive enhancement | ||||||||||
| sub: An intro to my upcoming Poetic CSS course | ||||||||||
| author: miriam | ||||||||||
| date: 2026-02-12 | ||||||||||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Update this before publishing |
||||||||||
| summary: | ||||||||||
| I hear over and over | ||||||||||
| that CSS feels like a series of workarounds, | ||||||||||
| rather than a unified system. | ||||||||||
| And sometimes that's because | ||||||||||
| there are essential features missing from the language, | ||||||||||
| but often it's a problem | ||||||||||
| with the way CSS is taught. | ||||||||||
| --- | ||||||||||
|
|
||||||||||
| Since coding my first website | ||||||||||
| in the early 2000's, | ||||||||||
| taking my first client in 2006, | ||||||||||
| and starting OddBird a few years later, | ||||||||||
| I've dedicated my career | ||||||||||
| to helping address this issue from all sides. | ||||||||||
| I started sharing CSS tools in Sass | ||||||||||
| then joined the Sass core team, | ||||||||||
| started teaching at conferences | ||||||||||
| and on the Mozilla developer channel, | ||||||||||
| and eventually became part of the | ||||||||||
| CSS Working Group -- | ||||||||||
| designing features like cascade layers, | ||||||||||
| scope, and container queries. | ||||||||||
| All of that while working with OddBird | ||||||||||
| to build top-shelf | ||||||||||
| web sites and applications | ||||||||||
| for clients around the world. | ||||||||||
|
|
||||||||||
| A lot has changed over those 20 years, | ||||||||||
| with new CSS features rolling out | ||||||||||
| faster than ever. | ||||||||||
| But underneath the heap of different properties and values | ||||||||||
| that we usually learn, | ||||||||||
| there's a logic that holds it all together -- | ||||||||||
| and that hasn't really changed at all. | ||||||||||
| Instead, | ||||||||||
| new CSS features like variables and cascade layers | ||||||||||
| have given us more and more _direct access_ | ||||||||||
| to understand and manipulate | ||||||||||
| the internal features that make CSS | ||||||||||
| both _powerful_ and also _complicated_. | ||||||||||
|
|
||||||||||
| This is not some secret | ||||||||||
| that's been kept from you, | ||||||||||
| but often a fundamental confusion | ||||||||||
| about the role of design on the web, | ||||||||||
| and the problem CSS was created to address -- | ||||||||||
| a problem that doesn't exist | ||||||||||
| in any other design context. | ||||||||||
|
|
||||||||||
| The purpose of CSS, | ||||||||||
| and the driving logic of the language | ||||||||||
| is _progressive enhancement_: | ||||||||||
| design that will work | ||||||||||
| across different browsers, | ||||||||||
| on different platforms and devices, | ||||||||||
| with different interfaces, | ||||||||||
| in different languages and writing modes, | ||||||||||
| while leaving the end user | ||||||||||
| with full control of the outcome. | ||||||||||
|
|
||||||||||
| A world wide web: | ||||||||||
| [on everything, | ||||||||||
| for everyone](https://w3.org/Consortium/mission.html#principles). | ||||||||||
|
|
||||||||||
| Many of us learned about | ||||||||||
| progressive enhancement | ||||||||||
| as one _approach_ to web development -- | ||||||||||
| a way of thinking about our sites | ||||||||||
| so that they will work for more people. | ||||||||||
| That's often framed as a moral argument, | ||||||||||
| something that you _should_ consider | ||||||||||
| for the sake of inclusion. | ||||||||||
| But I want to show you | ||||||||||
| how CSS is a progressive enhancement | ||||||||||
| _from the inside out_, | ||||||||||
| and not a complication | ||||||||||
| that you can opt out of. | ||||||||||
|
|
||||||||||
| If you want to design websites, | ||||||||||
| CSS is the only way to do it. | ||||||||||
| And if you write CSS, | ||||||||||
| then there's no way to avoid progressive enhancement. | ||||||||||
| It's the foundation of the language, | ||||||||||
| and the driving force behind every | ||||||||||
| strength and weakness that CSS has. | ||||||||||
| If you find that impractical, | ||||||||||
| you're probably right! | ||||||||||
| Universal design certainly makes things complicated! | ||||||||||
|
Comment on lines
+124
to
+125
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||
| But you'll be surprised how much of the work | ||||||||||
| CSS can do for us if we let it. | ||||||||||
| And if you try to reject those principles, | ||||||||||
| you will be fighting the language at every step. | ||||||||||
|
|
||||||||||
| With that goal in mind, | ||||||||||
| we can revisit the various features of CSS | ||||||||||
| and see how they all fit together | ||||||||||
| from that underlying principle. | ||||||||||
| Not to gloss over the rough edges | ||||||||||
| (CSS has | ||||||||||
| [its share of mistakes](https://wiki.csswg.org/ideas/mistakes)) | ||||||||||
| but to _understand where they come from_. | ||||||||||
|
|
||||||||||
| Once we understand CSS | ||||||||||
| as a series of progressive enhancements, | ||||||||||
| we can revisit the essential features | ||||||||||
| and put them in context, | ||||||||||
| to really understand how they work. | ||||||||||
| The result is a language | ||||||||||
| that prioritizes resilience over precision, | ||||||||||
| and _showing your work_ over _getting the right answer_. | ||||||||||
|
|
||||||||||
| Like poetry, | ||||||||||
| CSS works best when | ||||||||||
| we choose our words carefully | ||||||||||
| to _express our intent_ | ||||||||||
| without being overly restrictive. | ||||||||||
|
|
||||||||||
| There are many excellent CSS courses in the world, | ||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I wonder if there's a way to move parts of this section to the very top? Some type of brief introduction to the course before you go into your background in teaching/education? |
||||||||||
| and I recommend learning from more than one source. | ||||||||||
| But this course is all about systems: | ||||||||||
|
|
||||||||||
| - Understanding the internal system logic of CSS itself | ||||||||||
| - And building our own systems to efficiently work with CSS | ||||||||||
|
|
||||||||||
| We'll talk about individual features | ||||||||||
| like flexbox and grid and container queries, | ||||||||||
| but we'll also re-visit | ||||||||||
| underlying principles like inheritance, | ||||||||||
| the cascade, and value resolution. | ||||||||||
| I want to completely change how you think about | ||||||||||
| something like 'CSS variables' -- | ||||||||||
| fundamentally different | ||||||||||
| from any other variables | ||||||||||
| in any other language -- | ||||||||||
| so that you have more tools to reach for | ||||||||||
| in every-day situations. | ||||||||||
|
mirisuzanne marked this conversation as resolved.
Outdated
|
||||||||||
|
|
||||||||||
| The goal is extremely practical and grounded: | ||||||||||
| helping you write better CSS, | ||||||||||
| more quickly and efficiently. | ||||||||||
| If you're doing it by hand, | ||||||||||
| or having an LLM to write it for you -- | ||||||||||
| either way, | ||||||||||
| your job is to make it work. | ||||||||||
| But to get there you have to understand | ||||||||||
| how all the pieces fit together. | ||||||||||
|
|
||||||||||
| Without that understanding, | ||||||||||
| all you have is a bag of memorized tricks. | ||||||||||
|
|
||||||||||
| ## Making progress | ||||||||||
|
|
||||||||||
| We've been planning this course for a while, | ||||||||||
| but fitting it in around other projects | ||||||||||
| made it slow to pick up momentum -- | ||||||||||
| and we didn't want to start selling something | ||||||||||
| that only exists in our minds! | ||||||||||
|
|
||||||||||
| It's not done, | ||||||||||
| but we're getting to the point | ||||||||||
| where we have actual lessons | ||||||||||
| to share with early subscribers. | ||||||||||
| Maybe that's you? | ||||||||||
|
|
||||||||||
| The course structure is roughed in, | ||||||||||
| many of the demos have been built, | ||||||||||
| slide decks and transcripts/articles are taking shape, | ||||||||||
| I've done some camera tests | ||||||||||
| (using old lights from my Mozilla videos), | ||||||||||
| and I'm starting to film | ||||||||||
| the first set of lessons. | ||||||||||
|
|
||||||||||
| But there's a lot more to do | ||||||||||
| Turning a series of videos into a _course_ | ||||||||||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Is there punctuation missing before "Turning"? |
||||||||||
| that you can access. | ||||||||||
| Hopefully we'll get that infrastructure in place soon -- | ||||||||||
| a landing page with the course outline, | ||||||||||
| a checkout flow, | ||||||||||
| and a platform you can log into | ||||||||||
| for access. | ||||||||||
| We're working on it! | ||||||||||
|
|
||||||||||
| You're in the right place | ||||||||||
| to get updates along the way. | ||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.