CSS
A layout engine you program by describing constraints, and it got genuinely good.
- First released
- 1996
- Created by
- Proposed by Hakon Wium Lie; developed by the W3C CSS Working Group
- Typing
- Declarative, with a cascade and inheritance
- File extensions
- .css
What it is for
CSS handles presentation, kept separate from content. What makes it strange is the constraint it works under: it has to lay out documents whose size, font, language and reading direction are all unknown when you write it. No print designer has ever had that problem. The cascade, inheritance and specificity all exist so that many partial descriptions from different sources can resolve into one answer.
The last decade transformed it. Flexbox and Grid replaced the float and table hacks that defined a generation of web development. Custom properties made theming a language feature. Container queries finally let a component's layout depend on its own space instead of the viewport's. Layouts that used to need JavaScript are now a handful of declarations.
It is still genuinely hard, and the difficulty was never the syntax. Specificity conflicts, stacking contexts, margin collapse and the subtleties of intrinsic sizing are where the hours go. That is why layers, :is() and :where() matter more than they sound.
Where it came from
Hakon Wium Lie proposed Cascading Style Sheets at CERN in 1994 and developed it with Bert Bos. The W3C published CSS1 in 1996. The cascade, reconciling author, user and browser styles, was the idea that distinguished it from the competing proposals of the day.
CSS2 followed in 1998, but browser support stayed so uneven for so long that most of the 2000s went on workarounds rather than the language itself. Splitting CSS3 into independent modules, each versioned separately, is why there has never been a CSS4 and never will be. Color, grid, selectors and animations each advance at their own pace.
Support converged in the late 2010s and the pace since has been remarkable: grid, custom properties, logical properties, :has(), nesting, cascade layers, container queries, view transitions. CSS in 2026 is a substantially more capable language than the one most people learned.
What it is like to type
CSS is the most rhythmic thing here. Selector, brace, then property: value; repeated until done. The colon and semicolon land in the same place on every line, which makes it excellent for building speed. The nested braces of media queries and modern nesting stop it becoming mindless.
93 steps across 5 tours, from the basics to complete programs.
The tours
- Selectors & the box modelSelectors and the box model, which is to say the two things everything else in CSS depends on. 26 steps.
- Flexbox & gridFlexbox and grid, which between them retired a generation of float and table hacks. 24 steps.
- Responsive & modern CSSWhat CSS picked up in the last few years, which is a lot. 21 steps.
- Styling componentsStyling the things that resist styling. 13 steps.
- Organizing CSSNine steps on keeping a stylesheet sane at size. 9 steps.