Anne van Kesteren

CSS 2.1

A week back or so (or two) fantasai told me the CSS WG had another face to face and that there were about hundred fifty to hundred seventy issues to resolve that were raised by all kinds of people after the Candidate Recommendation state. All the issues have since then are resolved and two days back on June 13 a new draft was released. It is put back to Last Call as there were many valid issues raised and full browser interoperability was not yet reached.

That last thing is of particular importance. CSS 2.1 is mostly an implementer bug fix to CSS 2.0. Things that are particularly hard to implement, impossible to implement or just stupid have been revised in CSS 2.1 to match more what browsers do (mostly based on Internet Explorer 6 which did some sensible things) and to what makes sense. Having a specification that does not match implementations is not of much use, even when you acknowledge the fact that specifications are there for product implementers and not for ordinary web developers. (That it is a fact does not make it a relevant one by the way. I visit the site of the W3C on a daily basis and not just because I’m interested in new specifications.)

Among the changes since the previous draft are a few in the table module. I believe mostly the relation between the table caption and the table itself was a hard one to resolve. If I remember the resolution correctly the way Internet Explorer ‘implemented’ was chosen as being correct and Mozilla’s implementation, which was the one browser adhering very closely to the original design of CSS 2.0, has been moved to CSS 3. Some new property will be invented most likely or so. (That I could actually look up the resolution in ‘the new’ CSS 2.1 did not yet occur to me…)

Another part that has been completely revised and more thoroughly specified is counters. They now match Mozilla’s implementation and Mozilla is now probably CSS 2.1 compliant. (No longer post-CSS 2.1 compliant.) And if it’s not, it might be a bug in CSS 2.1.

There is a diff available between the previous and current version. If you’re still in doubt whether to refer your friends to CSS 2.0 or CSS 2.1. Please point them to the latter as that is the specification that reflects reality.


  1. So... will it become 2.2? :-S

    Posted by minghong at

  2. 2.1 only ever got as far as Candidate Recommendation (a call for test implementations) so no, this new work will be a further revision to 2.1.

    Posted by Robin at

  3. So, in other words, we just handed Microsoft an excuse not to implement CSS 2.1 on a silver platter: "It's not even a candidate recommendation anymore, it's a working draft."


    Posted by Matthew Raymond at

  4. Matthew, while it might be true that Microsoft holds these things as an explanation I hope they’ve done a bit more research than just that and don’t treat everything as black and white. I certainly don’t expect them to become CSS 2.1 compliant, but I guess they are smart enough to figure out that if they don’t want to break the web they should follow CSS 2.1.

    Posted by Anne at

  5. With regard to counters, I believe the implementation in either Opera or Safari (or both) is also based on the ‘new counters’ specification.


    Posted by Laurens Holst at

  6. I believe there is one issue that makes mozilla (at least my latest FF1.5) not fully CSS2.1 compliant. The "inline-block" value of the display property simply does not work in mozilla. I consider it a major drawback, since this one realy helps avoiding tables for layout and IE and Opera, for instance, do support it. Without it one is actually left with floats which may cause trouble ocasionally.

    Posted by tbc at

  7. Floats cuasing trouble are bugs as well, obviously ;-) Unless you misunderstand the concept or so in which case it might go wrong as well.

    Posted by Anne at

  8. No, floats cause trouble because they are not designed to be used as layout tools.

    Posted by Sjoerd Visscher at