私は単純な1列のレイアウトを作成しようとしています。私は上の2つの行がより小さい、固定された高さを持つことを望む。 3行目は、ページの残りの部分を埋めるように展開されます。私の現在のソースは以下の通りです:IEでウィンドウを埋めるように展開するテーブルのセルの高さを設定するにはどうすればよいですか?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<style type="text/css">
html, body
{
height:100%;
width:100%;
border:0px;
margin:0px;
}
</style>
</head>
<body>
<table style="width:100%;height:100%;" cellpadding="0" cellspacing="0">
<tr>
<td style="height:50px;background:red;">Header 1</td>
</tr>
<tr>
<td style="height:10px;background:blue;">Header 2</td>
</tr>
<tr>
<td style="background:green;">Content</td>
</tr>
</table>
</body>
</html>
これはSafari、Firefox、Operaですばらしいです。しかし、それはIE6とIE7の両方で悲惨な失敗です。これらの2つのブラウザでは、最初の2つの行が指定された高さよりもはるかに大きくレンダリングされます。それだけでなく、実際にはブラウザウィンドウの高さで動的にサイズが変更されます。 IEのように一定のピクセルの高さをパーセンテージの高さに変換するのと同じです。
3番目の行の内容が十分でなければ、ブラウザウィンドウにはスクロールバーが表示されません。第3の<td>の高さを100%に設定すると、実際にその行の高さがテーブル全体の高さに等しく設定されるため、スクロールバーが常に表示されます(その要素を含む要素の100%になります)。
doctype宣言を削除してquirksモードに戻すと、IEで問題が解決するようですが、このアプリケーションの既存の他のすべてのページに期待されるように、HTML 4.01の移行を使用する必要があります。
100%高さのレイアウトが必要な理由は何ですか? –