Summary
- CSS2 became a W3C Recommendation in May 1998. The later CSS2.1 specification says it would preserve widely implemented behavior, incorporate errata, change rules where implementations diverged and remove features rejected through lack of implementation.
- The 2007 Candidate Recommendation required two interoperable implementations for every feature and adequate tests before exit. The 2011 implementation report counted 9,418 tests: 9,191 required-behavior tests passed in at least two implementations.
The standard arrived with a larger appetite
CSS2 was a promise made on paper. The 1998 Recommendation described downloadable fonts, a detailed font database, @font-face, font matching and a large formatting model. That breadth mattered to authors: a style sheet could describe a desired presentation even when the client did not already have the font or the exact rendering behavior.
It also created a debt. A rule in a Recommendation is a request to every implementor, not proof that any browser can agree with another browser about the result. The 2008 revised CSS2 page eventually called the document unmaintained and directed authors toward CSS2.1. The old text was still a record; it was no longer the best common instruction.
CSS2.1 made implementation evidence a gate
CSS2.1's introduction is unusually candid about its editing policy. Keep the parts widely accepted. Add the errata. When implementations overwhelmingly disagree with the prose, revise the prose to match accepted practice. Remove features no one implemented, and remove features headed for CSS3. Add only a very small number of new values when experience shows they are needed.
The 2007 Candidate Recommendation made that policy procedural. Every feature needed at least two interoperable implementations. The test cases had to be public. Six months had to pass in Candidate Recommendation, and features without two implementations or adequate tests could be dropped. A standards process that once looked like a catalogue became a filter.
The change record shows what the filter cost. CSS2.1 removed font-stretch, font-size-adjust, @font-face and the associated font-matching material. It removed text-shadow, marker-offset and several list-style values. The deletions were not a rejection of visual ambition; they were an admission that a feature without a shared implementation could not serve as a dependable floor.
Nine thousand tests make a smaller promise useful
The 2011 implementation report tested 24 user agents built from seven rendering implementations across eight operating systems. The suite contained 9,418 tests, including 227 for optional behavior. All 9,191 required-behavior tests passed in at least two implementations; 210 optional tests met that bar.
W3C's release announcement called the result a stable foundation for future extensions. That language hides a sharp exchange. Authors lost pieces that CSS2 had named. In return, a CSS2.1 style sheet had a better chance of producing the same result in more than one place. The standard became less of a wish list and more of a shared operating boundary.
The history is a warning against measuring standards by page count. CSS 2.1 succeeded by shrinking the promise until tests and browsers could carry it together. The Web did not need every sentence CSS2 had once offered. It needed a floor that two implementations could stand on without arguing about the shape of the room.
Member Briefing
Read the full trend briefing
Members read the full briefing with the source notes behind every finding.
Strategic Circle
A daily briefing in your language, built from changes we have verified.
Join for USD 20/monthCancel anytime.
Members also get the full research library, a daily briefing on the networks they follow and the private forum.






