Andy Budd offers an objective look at table based vs. CSS based design, arguing that using tables for layout sometimes makes more sense than relying on CSS. He also states that the “CSS only” approach of some standards enthusiasts may alienate those not so well-versed in CSS.
Although some of the purists in my customer base may be shocked to hear this, I’m inclined to agree with Andy. IMO, you should use whichever technique makes your work easier – both long-term and short-term. Now, I tend to avoid tables since they’re a pain to maintain, but I also realize pure CSS designs can be equally painful given all the cross-browser pitfalls.
When I advocate CSS, it’s never from a dogmatic position – instead, it’s simply because CSS makes things so much easier, especially when it comes to updating your site. If using CSS doesn’t simplify your work, then you need to simplify how you’re using CSS, even if that means (shudder) using tables for your layout.
In my field [aerospace/NASA hardware manufacturing], our mantra is, “Use the right tool for the job.” Implicit in that is knowing what each tool’s abilities are.
CSS and tables are like a ratchet and a wrench—sometimes, you don’t have the clearance in your space to use the ratchet, so you use the wrench. You’ll bang your knuckles, sure, but you’ll bang them with the ratchet, too.
Thanks for saying this publicly, Nick. It’s been my little secret for a while to still throw tables in when I run into a CSS headache. Sure, it’s a crutch, but it works and the client gets what they want. In the long run, a table or two here and there isn’t that difficult to maintain. Certainly not any more difficult than the moving target that is browser support for CSS.
I agree, it’s like Object Oriented Programming vs. Procedure, you have to know what to use and when.
I guess alot of people including me is following the mainstream and forget the reality.
T.
Nick —
I tried really hard to get the classic “Header/Three Column/Footer” pattern in pure CSS. I tried a million different patterns found from searching all over the web, but none worked well. Finally, I just gave up and used a single table to achieve the exact effect I wanted. Piece of cake.
I’d like to use pure CSS, but until the CSS world and the browsers all sort of come together in some sort of ‘galactic harmony of cooperation’, I’ll do my basic layout with a table.