Among web designer, the use of HTML tables is religiously prohibited for layout in favor of pure CSS. Sure CSS is great but concerning portability it’s often a pain to get proper results without a bit of tweaking.
The only way you can perform horizontal layout with CSS is through the use of floating elements and width properties. Even if I managed to make proper designs using floating elements, the stability of the result are often a bit… inpredictible, especially for Internet Explorer.
Web designers says: “HTML pages must only contains the semantic of the document and not it’s structure”. It’s nonsense. Float elements are not about layout, their primary use is for a block to float inside a text paragraph — like for images in a word processor document. It’s not really layout. Worse! it take a lot amount of computation for the browser to render the page.
I’m not saying to give up CSS, but use tables for what they are, don’t hesitate to use them for the global layout of your web site. As soon as you need proper horizontal alignement, tables are great, they give predictible and browser compatible results. After all, the original goal of HTML was actually to structure documents, semantic went later.
There is a good article on the topic on the Apple Developer Connection site, Web Page Development: Best Practices. Interesting and pragmatic.
Web standards are great but since they’re are not yet fully supported, HTML tables are still a valuable tool for web designers. And ask yourself, how many time will you “skin” your web site?
Never, I guess.