So, why bother?
Why not just keep using tables instead of sorting out this CSS trouble?
Let's back-track a little.
The idea of HTML et al is a document markup language that would grow. Its architects saw we were going digital and sat back and took a long view. A very long view. They laid the foundations for a language that would work with all the conceivable technology of the time, and would be expandable to the unconceivable technology that would follow. So that documents would never be unretrievable due to age. Ever. A browser in 2050 would be able to read a 1994 document. And in 2094. And so on. They made a stand of cultural importance to the world.
For comparison, imagine if there were no archives, no libraries, no museums, no records kept. The only available cultural items are what's available in stores: you can only get what's "in print", and it will expire when the next edition comes along. That's where we were headed by tying data to proprietary technologies.
Now, around 95 about all you could do with a web page aesthetically was make it look like Jakob Nielsen's boring little site. The net had gone big however and people had these awesome little personal computers that could manipulate images and sound as well as text. So the creatives pushed hard at the limits of HTML and bandwidth. One absolutely brilliant hack was to use the table tags to control layout. That really blew the doors open and got the web going. The impact of this hack is not to be underemphasized.
The W3C paid attention. They read the graffiti us brats were spray-painting on the web. They said "Cool! We've got to extend the language in that direction." And fast, or the web would soon be filled with pages that only ran on graphical browsers for desktop pc's. In 1996 we got CSS1. Well thought out, timely code. The W3C met the challenge beautifully.
Then Netscape and Microsoft dropped the ball. And the year after. And the year after that. People like myself would see yet another article in Webmonkey about how great CSS is going to be and skip to the next article. No time. Wake me when it's ready. I've got walls to spray-paint.
The future was forgotten and "standards compliance" became a euphemism for being nice to unfortunate people who were blind or poor and could not use a regular computer. Something you "should" do, like recycling or voting in a politically informed manner, but there never seems to be the time.
It got so bad that a group of independent web designers decided to form a body to act as a diplomatic pressure group to encourage browser companies to make their browsers actually read the code they were supposed to read, and to provide educational resources to the rest of us about why that would be a very good thing. (I believe the American term for such people is "bleeding hearts" but I'm not sure I understand the idiom.)
A couple of months ago the WaSP published a new brilliant hack that's every bit as important as the table one. The current generation of pc browsers could stumble along through a good bit of CSS positioning, but not the previous generations. And people tend to be slow to upgrade. Developers have had to keep older broken browsers in mind when building web pages. The WaSP hack hides the CSS from these browsers, gives a plain page that's Jakob's wet dream and runs beautifully on non graphical browsers like cel phones and readers, PLUS adds a nice message that the site will look much better if the person upgrades their free browser, and provides a helpful link to go do that.
Speeds up the whole process wonderfully. We could finally write standards compliant code. Almost. We soon found that Explorer, Netscape, and Opera had wretched partial compliance to CSS, and with several bugs. We've been bashing away at the problem, isolating what works and what doesn't, and pages like mine are the result of this.
Web design has always been more about hacks and kludges than about design. The only difference between then and now, between me knowing all of Netscape's exceptions to table layout and all of Netscape's exceptions to box positioning, is that my kludges are finally compliant code -- meaning the pages don't just look fine for now on a temporary majority of platforms, but will run on all platforms now and in the future. These are workarounds, not abuses. That's the main distinction to maintain here.
Rest assured I wouldn't have bothered otherwise.
Note I said "temporary majority of platforms", meaning graphical browsers on what we still call personal computers. "Web devices" are finally here. Not just first generation buggy WAP celphones. But wireless devices that fit in your hand and pocket. The Pocket PC can now run Flash. That means I can stand on a street corner in New York, pull an affordable consumer device out of my pocket and get a colour, zoomable map of the subway. Right now today. These things and their ilk are going to be the majority very quickly. All that Wired magazine talk about convergence five years ago is upon us. The pc isn't going to go away but it certainly isn't going to dominate any more.
Proper HTML et al has always taken this into consideration. But the way we were writing code meant we made distinct sites of the same information for different browser/platform combinations. The number of combinations one needs to test for is currently insane, and is about to become impossible. Imagine your cel phone was only good to call other people with that cel service instead of anyone with a phone, and you get an inkling of what's ahead.
Or we can write standards compliant code.
But, you can very legitimately ask, what about future non-compliant browsers from companies with enough market share leverage to ensure their adoption? Well, here's my take on that. Right now, very briefly, the pc is still on top, and the three major browsers that make up almost 100% of that market have just enough CSS compliance to let us use it now. All three will have new generations in a year. If we write enough standards compliant code starting now then no browser manufacture will take the risk of putting out a broken browser: people just won't like it when the sites they were looking at yesterday suddenly don't work in the upgrade. We can shift the weight of who's in charge here by writing correct code. If we, web developers, do not, then Microsoft and AOL and whoever your favorite irresponsible corporate greedhead is, will happily break the web into propitiatory fiefdoms so they can play their power games from there.
Really, no kidding, it is up to you.
End of Rant. I hope that was helpful to someone. I've covered this a lot of times in different ways in emails over the last month and wanted to put it all together somehow. I'm really busy and need to get back at the design end of things. I don't want to argue about this with anyone. If you don't like it, that's fine. Go do your thing. Metafilter will have someone willing to spar with you if that's your trip. I just delete aggressive email.