Back in 1997 typographer David Siegel changed the way web designers made websites; some would say he even changed the web itself. He wrote about an emerging technique for pixel-perfect designs. The technique involved combining the <table> tag with sliced images and spacer gif images to achieve a design that was all but impossible back then. Web designers were overjoyed with this new found wisdom. They could now create web page designs that were as graphically rich and fluid as their traditional print media cousins. But as happy as the designers around the world were, David began to recognize the implications of his discovery.
In David’s “The Web Is Ruined and I Ruined It” he writes:
But what’s all the fuss about? To many people using the web this will never make any difference, but to some it will make all the difference. There’s a not-so-unspoken rule that content and structure should always be independent from visual presentation. Using tables for your layout is like framing your house with PVC pipe. The PVC pipe serves an important role in your home’s plumbing system but it never signed up for the responsibility of providing stability for your entire house! Table-based layouts, while effective, can’t stand up to the various methods by which your website will be viewed. It’ll fall flat.
So based on what I’ve written so far you’d probably assume that I never use a <table> to structure my designs visually, right? You’d be wrong. As much as I understand the problem and what the solution is, sometimes it’s not practical to cling to this particular best practice. The reality is that because there are so many browsers (and versions of those browsers) out there it’s difficult to craft a solution that’s both semantically and visually solid. Some CSS attributes don’t render correctly on all browsers, some don’t render at all! So, in the interest of having a design that renders as it should across all browsers I use a method that works… almost always… tables.
Now before you web purists fire up your witch hunt let me stress that about 98% of my web creations are css-based designs with almost no inappropriate table use. However, there are some times when I’m just not comfortable releasing a design into the wild that renders so inconsistently across the vast array of browsers out there. I just can’t have that. Sure, some would argue that the content is what’s truly important and the design should be secondary. But try telling that to your next client when they call in saying that the website looks broken on Internet Explorer 4.0.
So, until the browser makers of the world can get on the same page and produce browsers that render CSS elements consistently I fear table-based layout is here to stay.