One day soon I will make a post that is non CSS–related. It will happen, I swear it.
On to business. Simon Willison has taken on two of the most vocal critics of CSS in the past few weeks, Dave Winer and Jamie Zawinski. Both of the mentioned debates generated a flurry of controversy, and catalyzed argument on whether to use CSS or not.
Simon’s examples are coded well, documented well, and generally make a good point: using nested tables to achieve visual effect is a concept whose time is coming to an end.
The more I see examples like this where existing design techniques are converted to CSS layouts, the more I see two very tense camps forming. There are people who use CSS daily, who wouldn’t give it up for the world, and who realize that quirks and bugs aside, browser support is solid enough for use. There are also people who haven’t bought into it yet, who see the somewhat inconsistent support amongst browsers, and deem the whole thing a waste of their time.
A note to both camps: table–based layouts still work. They aren’t going anywhere. CSS–based layouts also work, as more and more people are proving. It boils down to this — consider who you’re designing your site for, and use the appropriate tool.
If you want heavier page loads and tough code to edit, but absolutely guaranteed consistency amongst browser back to 1997, chose tables.
If you want elegant code that’s a snap to edit later, but can cause headaches as you learn the quirks of today’s browsers, chose CSS.
People who turn this into a silly all–or–nothing debate are missing the bigger picture here: the user doesn’t give a damn about how you built the site. They want it to load fast, they want it to navigate well, they want it to look good, and they want it to work. The rest of this is, ironically, just semantics.