@Boushley の回答が最も近いものでしたが、指摘されていない問題が 1 つあります。右側のdiv はブラウザの幅全体を占めます。コンテンツは予想される幅を取ります。この問題をよりよく理解するには:
<html>
<head>
<style type="text/css">
* { margin: 0; padding: 0; }
body {
height: 100%;
}
#left {
opacity: 0;
height: inherit;
float: left;
width: 180px;
background: green;
}
#right {
height: inherit;
background: orange;
}
table {
width: 100%;
background: red;
}
</style>
</head>
<body>
<div id="left">
<p>Left</p>
</div>
<div id="right">
<table><tr><td>Hello, World!</td></tr></table>
</div>
</body>
</html>
http://jsfiddle.net/79hpS/
コンテンツは (Firefox で) 正しい場所にありますが、幅が正しくありません。子要素が幅の継承を開始すると (たとえば、 のテーブルwidth: 100%
)、ブラウザーの幅と同じ幅が与えられ、ページの右側からはみ出して (Firefox の場合) 水平スクロールバーが作成されるか、フロートせずに押し下げられます (クロムで)。
これは、右側の列に追加することで簡単に修正できます。overflow: hidden
これにより、コンテンツと div の両方に正しい幅が得られます。さらに、テーブルは正しい幅を受け取り、使用可能な残りの幅を埋めます。
上記の他の解決策をいくつか試しましたが、特定のエッジケースでは完全には機能せず、複雑すぎて修正することができませんでした. これは機能し、簡単です。
何か問題や懸念がある場合は、遠慮なく提起してください。