CSS Play の Stu Nicholls による手法に基づいて、「HTML テーブルを必要としない」ソリューションを思いつくことができました。IE6+ と FF2+ で動作するだけでなく、有効な CSS であり、動作しないため、個人的に気に入っています。ハックが必要です。HTML テーブルよりも CSS ベースのレイアウトが望ましい理由に関する私の議論については、以下を参照してください。
まず、CSS を使用して新しいページをデザインする場合は、標準に準拠したブラウザー モードで行うことをお勧めします。quirksmode と標準準拠モードの説明については、お気に入りの CSS リソース サイトの 1 つにあるこの記事を参照してください。ページの上部に特定の DOCTYPE 要素を追加するだけです。その後、CSS は標準準拠モードで強制的にレンダリングされるため、バグやブラウザーの特異性が少なくなります。標準準拠モードに切り替えることができない場合は、CSS Play でも利用可能な quirksmode のブラウザー用の最小幅のソリューションがあります。
次に、既存のマークアップにラッパーを追加する必要があります。このラッパーは、最小幅を理解する (IE ではなく) ブラウザーの最小幅を設定するために使用されます。次に、* html トリックを使用して IE 6 を具体的にターゲットにし、Stu Nicholl の手法を内部ラッパーに適用できます。テクニックの詳細はこちらで、使用されている具体的な例は「#2 標準準拠モードの IE の場合」です。
http://www.cssplay.co.uk/boxes/minwidth.html
最終的な結果はかなり単純です。元の質問に記載されている2 列の ALA スタイル手法を使用して 2 つの 50% 列を作成します。これらの列は全体の最小幅 (この例では 500px) で、列のサイズ変更が停止し、右の列が左の列を下回らないようになっています。これが役立つことを願っています!
編集:これと同じ手法を使用して、クロスブラウザー互換の最小幅を何にでも適用できます。たとえば、列はそれぞれ 50% である必要はなく、任意の数の列を使用できます。http://www.glish.com/css/は、CSS ベースのページ レイアウトの優れたリソースであり、この最小幅テクニックと組み合わせると、最小限の有効な CSS で作成できる多くの優れたレイアウトがあります。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<style type="text/css">
/* For browsers that understand min-width */
.width {
width: 100%;
min-width: 500px;
}
/* IE6 Only */
* html .minwidth {
border-left: 500px solid white;
position: relative;
float: left;
}
/* IE6 Only */
* html .wrapper {
margin-left: -500px;
position: relative;
float: left;
}
.left {
float: left;
width: 50%;
}
.right {
float: left;
}
</style>
</head>
<body>
<div class="width">
<div class="minwidth">
<div class="wrapper">
<div class="left">
Left
</div>
<div class="right">
Right
</div>
</div>
</div>
</div>
</body>
</html>
さて、Stack Overflow アカウントを設定する動機は、「2 つの列が必要な場合は、Div をテーブルのように動作させるのではなく、テーブルを使用する」という以下の提案に対応できることでした。私は新人すぎてコメントしたり反対票を投じたりできないので、この議論を増やしています。
本当に?
誰かが CSS ベースのレイアウトについて質問し、HTML テーブルを使用するように答えますか?
まず、HTML テーブルが完全に不要であるとは考えていません。実際、表形式のデータ、つまりリレーショナル データを表示する必要があるときはいつでも、HTML テーブルを使用します。CSS テーブルの表示プロパティはまだ完全にはサポートされていません (IE8 で近日公開予定です)。単一レベルのHTML テーブルを使用するのが効果的な解決策です。Google の Web ページのマークアップを見てみると、それらが同意することがわかります。
テーブルを使用して 10 分で完了できるクロスブラウザー互換の CSS ベースのレイアウトを作成することに多くの時間を費やしてきた人として、この問題にはもっと簡単な解決策があることに同意します。ただし、ダイナマイトを使用してキッチンを改装できるからといって、そうすべきであるとは限りません。次の記事では、CSS ベースのレイアウトがより望ましい理由について詳しく説明しています。
http://www.chromesites.com/web-design-blog/2008-04-03/13-reasons-why-css-is-superior-to-tables-in-website-design/