We had CSS1, and CSS2. We even had CSS2.1 and we then moved onto CSS3 – or did we? This post is a quick explanation of how CSS is versioned today.
CSS versions 1 and 2 were monolithic specifications. All of CSS was included in one massive document. Selectors, positioning, colour – it was all in there.
The problem with monolithic specifications is that in order to finish the spec, every component part also has to be finished. As CSS has grown in complexity, and new features are added, it doesn’t make sense to draw a line at which all work is stopped on all parts of CSS in order to declare that CSS version finished. Therefore, after CSS2.1 all the things that had been part of the 2.1 specification were broken down into modules. As the new CSS modules included all that had gone before plus any new features, they all came into being at Level 3. Hence CSS3, and people like me who understood CSS as a single specification referred to the group of Level 3 modules as “CSS3”.
While referring to all new CSS as CSS3 worked for a short time, it doesn’t reflect the reality of where CSS is today. If you read something about CSS3 Selectors, then what is actually being described is something that is part of the CSS Selectors Level 3 specification. In fact CSS Selectors is one of the specifications that is marked as completed and a Recommendation. The CSS Working Group is now working on Selectors Level 4 with new proposed features plus the selectors that were part of Level 3 (and CSS 1 and 2). It’s not CSS4, but Level 4 of a single specification. One small part of CSS.
We also have specifications for features that were never part of CSS 1 or 2, and so these specifications are at Level 1. They are brand new. Examples of Level 1 specifications are CSS Grid Layout and Flexbox. Flexbox is already a Candidate Recommendation (CR), Grid has been voted to CR too. Therefore any new features that are proposed are at this point likely to end up in the next Level of these specifications – Flexbox Level 2 and CSS Grid Level 2.
If you want to see the status of various CSS features, and the level they are currently at check out the CSS Working Group Current Work document. To understand the different statuses that a specification moves through, see the information on Maturity Levels in the Process document.
4 Comments
https://drafts.csswg.org is also quite useful; you can quickly check which modules have multiple levels and which one is “Current Work”.
Huh, I’ve been working with CSS3 all this time and didn’t even realize this was the case. It actually makes me feel kinda silly, in a way. Oh well. TIL!
great article, very enlightening. I thought the CSS would change again only because of the “new version”. Anyway, thanks.
What? Hahaha.
I thought there’s a coming CSS4. But that does make sense. Thanks for sharing.