: Are tables really evil? Well, no they’re not. But they were never intended to be used to format web pages, and so now that there’s a better solution (CSS), they should no longer be used that way. Tables are still completely viable in HTML – but for displaying tabular data.
Why? Why, really, should anyone change? The best answer is this: for the same reason Userland developed Radio. Radio solves (as do other systems) a big problem: separating content from style. Trouble is, there are three variables, not just two.
Content – we know about that. Style – we know about that too. But there’s also structure to consider. Using CSS allows us to separate structure from style. This is as powerful, in its own way, as separating content from style, and just as important.
By using CSS to format my pages (though I do have one table still kicking around, unfortunately), I get to present items that any device can understand. If some bit of text is a very important heading on the page, I don’t obscure the fact by coding it with font tags and hiding it in a table that’s purely there to place it in a prominent position on the page. I call it what it is: h1. Simple, clean.
Most importantly, though, suddenly it no longer matters what device is trying to “display” or render my page. Anything at all will see that and display that bit of text as the most important thing on that page.
Why is that important? Well, because as Dave Winer says, the web should be a great writing environment – which implies that it should equally be a great reading environment. When I’m writing, I’m only concerned about me – my ability to write well and have it appear. To make it a great reading environment – and thus support the other side of the coin – I can’t just care about me, I have to care about everyone else as well. And the fewer assumptions I make about them the better. Who am I to insist that they use a certain device to look at my page? They read, their choice. Why should I make them track down an alternate version which may or may not work on their particular device?
If you want the web to be a great writing environment, you also want it to be a great reading environment. And that means using CSS to provide the style, HTML (or XHTML) deployed in templates to provide the structure, and a CMS to feed the content. It’s quite simple, actually.