CSS and web design
If you haven’t used or read about Cascading Style Sheets before, I urge you to jump on that bandwagon now. Designing web pages and web sites with consistent looks and feels has never been easier; CSS has changed my life.
For those of you who don’t delve into the depths of HTML that often, suffice it to say that long ago the division between content and design was lost on the Web. One document held both — and this meant that maintaining the same design elements and paradigms on anything but the simplest web page was a challenge, and doing so across a site or two was near impossible. But then, CSS came along, and let you put the design markup in a different document (a Cascading Style Sheet), and then have your web pages (your content) reference that style sheet. Voila, easier and more consistent design.
Imagine being able to create a page with a few similar tables, and not having to specify the cell padding and cell spacing for each one. Imagine writing a daily document or note, and being able to format each part of the document or note the same every time, without having to specify all of the elements of that formatting each and every time. Imagine being able to change the font of your entire website with one single edit to one single document. It’s all possible with CSS.
Who, us, CSS-compliant?
Unfortunately, since CSS is rendered on the client end of things, it’s up to the browsers to do the right thing — and Netscape is woefully inadequate at that task. Between a plain lack of support for basic elements (A pseudo-classes, background positioning, table borders) to buggy support for most others (background coloring of elements, text-align, margins) to a ridiculous lack of element inheritance rules, Netscape’s inability to release a CSS-compliant web browser is doing more to damage the development of web pages and web sites and web applications than anything that Microsoft has done. Right now, as a web developer, designing a nice web page that is intended to render both similarly and adequately on all machines is difficult at best, and impossible at worst.
I wish that I remembered which online magazine ran a great article recently about a developer who found that most of his pages were crashing Netscape completely. He called Netscape, and their answer was that they were way too busy working on version 5.0 to fix these bugs; essentially, they wanted him to understand that, since 5.0 is a complete rewrite, the chances of his pages crashing the new version would be lessened. Of course, since this week’s InfoWorld puts the alpha date for Mozilla at the end of this month, and the beta date sometime in February or March of this year, the developer has just banned Netscape from his site (he was sick of people cursing him out for crashing their browser).
(I still don’t remember what magazine ran the article, but the developer they were talking about was Jeffrey Zeldman, and his article about his experiences is a must-read. He subsequently has allowed Navigator users back into his site, with what appears to be a much-degraded design for them.)
It’s no wonder that users are flocking to Internet Explorer.
Oh yeah, and as of three days ago, you can download the platform preview of Internet Explorer 5.5 for Windows from the MSDN member downloads site. Great job, Netscape.
A great resource for budding and veteran CSS users alike is WebReview’s master grid of CSS support. It shows you which browsers handle what, and generally has some good notes to explain quirks that they’ve discovered. (My favorite, so far, is their note on Netscape’s inheritance “support”: “Navigator 4’s inheritance is unstable at best, and fatally flawed at worst. It would take too long to list all occurrences, but partiularly troublesome areas include tables and lists.”)
Microsoft’s Web Workshop on HTML, DHTML, and CSS is a good reference and article site about lots of broad and narrow CSS topics (as well as just plain the most exhaustive reference for every single little itty bitty attribute of every single HTML, DHTML, and CSS element you can think of).