XML News from Friday, July 20, 2007

The W3C CSS Working Group has posted the candidate recommendation of Cascading Style Sheets, level 2 revision 1. According to the abstract,

CSS 2.1 builds on CSS2 [CSS2] which builds on CSS1 [CSS1]. It supports media-specific style sheets so that authors may tailor the presentation of their documents to visual browsers, aural devices, printers, braille devices, handheld devices, etc. It also supports content positioning, table layout, features for internationalization and some properties related to user interface.

CSS 2.1 corrects a few errors in CSS2 (the most important being a new definition of the height/width of absolutely positioned elements, more influence for HTML's "style" attribute and a new calculation of the 'clip' property), and adds a few highly requested features which have already been widely implemented. But most of all CSS 2.1 represents a "snapshot" of CSS usage: it consists of all CSS features that are implemented interoperably at the date of publication of the Recommendation.

CSS 2.1 is derived from and is intended to replace CSS2. Some parts of CSS2 are unchanged in CSS 2.1, some parts have been altered, and some parts removed. The removed portions may be used in a future CSS3 specification. Future specs should refer to CSS 2.1 (unless they need features from CSS2 which have been dropped in CSS 2.1, and then they should only reference CSS2 for those features, or preferably reference such feature(s) in the respective CSS3 Module that includes those feature(s)).

Significant changes include:

While in isolation this seems like a good idea, I'm concerned that this is just going to cause even more confusion for web authors and browser vendors alike. Layout and positioning is hard enough in CSS already. Browser vendors are just starting to implement this is a more-or-less (mostly less) interoperable fashion. To we really need to add yet another subtly incompatible set of rules that will be implemented by some versions of some browsers and not others that can only confuse matters further? Will any browser actually support this, or will it just break existing pages that rely on the current algorithms. What does the Acid2 test look like in a CSS 21. compliant browser?