typestar

Languages

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.

Practice CSS

93 steps across 5 tours, from the basics to complete programs.

The tours

Official documentation

Other languages