私は一般的に、Webサイトのレイアウトは<table>ではなく<div>で行う必要があるという考えに同意します。ただし、これが機能しない状況があります。少なくとも、解決策が見つかりません。
私は多くの顧客が同じテンプレートを共有する動的なサイトを持っています(彼らは利用可能なテンプレートのセットから1つを選ぶことができます)。テンプレートは、サイトの一般的なレイアウトを定義します。通常、上部にヘッダー、2列または3列(左側にメニュー、中央にプライマリコンテンツ、場合によっては右側に追加コンテンツ)、下部にフッターがあります。顧客は、ヘッダーのコンテンツと右側のコンテンツを完全に制御し、メニューとメインコンテンツ領域のコンテンツを大幅に制御できます。
ここでのポイントは、どの列の幅もわからないということです。顧客は、メニュー項目ごとに長いテキストまたは短いテキストを持っている場合があり、右側の列に小さい画像または大きい画像を配置する場合があり、メインコンテンツは自由に使用できます。私は顧客にあまり多くのデザイン制限を課すことはできません-彼らはサイトがどのように見えるべきかについて彼ら自身の考えを持っています(彼らのいくつかはMySpaceページより醜くなります)。サイトには「優先」幅(メインの<table> widthプロパティ)があるため、コンテンツが妥当な場合、サイトは見栄えがよくなります。
テーブルベースのレイアウトはこれを処理するだけです。列のサイズがどのようなものであっても、テーブルはそれに合わせて調整されます。ただし、<div>はそうではありません。メニューが少し広くなると、他の列がその下にドロップダウンします。一部のコンテンツがそのコンテナ<div>に対して広すぎる場合、そのコンテンツは境界を越えて拡張し、その隣にあるものすべてに干渉します。
Javascriptを使用して列幅を調整してみましたが、これによりレイアウトが点滅し、<table>が大騒ぎせずにレンダリングします。CSS表示プロパティのさまざまなテーブル関連のオプションについては知っていますが、十分に広くサポートされていないため(いたずらなIE)、使用できません。(余談ですが、<table>はレイアウトに使用することを意図したものではなかったので、代わりに<div>を使用して<table>のように動作するように指示する必要があります。 )。
したがって、通常の理由で<div>ベースのレイアウトに切り替えたいと思いますが、これらのテンプレートを使用できるとは思いません(または、少なくとも、全員がIE 10にアップグレードするまでは)。SOギャングがこれを行う方法を見つけるのに役立つことを願っています。