Sidebar to Jakob Nielsen 's column on style sheets .

In considering how to extend the Web with new technologies, it is instructive to compare Cascading Style Sheets (CSS) with frames. CSS is an elegantly designed extension, whereas frames suck , as I have said many times.

CSS is backward compatible to the extent that viewing a style-enhanced site with an older browser causes no problems at all. Of course, the user doesn't see the stylistic enhancements made possible by CSS (e.g., multiple fonts and indented margins), but the text of the page will be readable and will be presented in a reasonable default style (of course, the extent to which you deem the default presentation reasonable depends on your assessment of the quality of typography in mainstream browsers: admittedly rather poor). In contrast, a page designed with frames is useless for a user with an old browser.

CSS is orthogonal to other features in Web browsing. When multiple style sheets become supported in future releases of the mainstream browsers, users might want to learn the command to switch between styles, but they won't have to. Even if users do learn this new command, it will not interfere with or change their understanding of earlier commands and operations. In contrast, frames destroy bookmarks, change the meaning of established commands like "print" and "view source", and in general make a mess of the user's prior understanding of the Web.

CSS builds on the philosophy of the Web : cross-platform design and simple-to-understand codes that are precisely documented in public specifications. In contrast, frames are hard to learn for authors, poorly documented, and have no chance of working on anything except desktop computers with relatively large screens (try fitting frames on a Pilot palmtop and you will see what I mean).

CSS alleviates a widely felt weakness of prior Web technology : authors used to have too little control over the presentation of their content and had to stoop to unseemly hacks and improper HTML to get the effects they needed. Frames admittedly address the often-requested desire to keep a part of the page from scrolling, though this one useful effect of frames could have been achieved much simpler with the <BANNER> tag that was proposed in drafts of HTML 3.0. Most of the features offered by frames are of relatively little utility compared with the effects offered by tables and style sheets.

Hopefully, future Web innovations will emulate the example set by the Web Consortium in its work on CSS.