@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 の両方に正しい幅が得られます。さらに、テーブルは正しい幅を受け取り、使用可能な残りの幅を埋めます。
上記の他の解決策をいくつか試しましたが、特定のエッジケースでは完全には機能せず、複雑すぎて修正することができませんでした. これは機能し、簡単です。
何か問題や懸念がある場合は、遠慮なく提起してください。