これを行うにはおそらくもっと簡単な方法がありますが、兄弟の動的な高さに合わせて列を下に伸ばすのは難しいので、私はしばしば絶対配置に頼っています。
列に 3 つの div を作成して、1) ダイアグラムの div #1 と #3、2) 動的コンテンツの div、3) ダイアグラムの div 2 と 4 を含めます。
これら 3 つを div 内に配置します (これに「all」の ID を付けました)。このコンテナーに clearfix スタイルを適用します (CSS の最後で定義されたスタイル)。position:relative をこの div に適用します。また、このコンテナーの幅を 3 つの列を含むように正確に設定する必要があります (3 番目の絶対位置の列を適切に考慮する必要があります)。
設計に従って 3 つの列のそれぞれの幅を固定し、最初の 2 列をフロートにします。ただし、3 列目は position:absolute にします。上に設定: 0px; 下:0px;右:0px;
次に、必要な比率に従って、パーセンテージで内部の 2 つの div の高さを設定します。
私のソリューションにはかなりのものが含まれています。そのため、コードを jsfiddle に保存しました: http://jsfiddle.net/feaLC/5/
動的コンテンツ エリアのテキストの量を調整して、その動作を確認します。
更新-- 質問者の説明に基づいて完全に改訂されました。
これを達成するには、左右の列を絶対的に配置し、次に 2 番目の div をこれらの 2 つの列のそれぞれの内側に絶対的に配置して、一番下まで伸ばします。
参照: http://jsfiddle.net/feaLC/6/
HTML:
<div id="header"></div>
<div id="all" >
<div id="leftCol">
<div id="left1"></div>
<div id="left3"></div>
</div>
<div id="content">text text text text text text
text text text text text text text text text text text text
text text text text text text text text text text text text
text text text text text text text text text text text text
text text text text text text text text text text text text
text text text text text
</div>
<div id="rightCol">
<div id="right2"></div>
<div id="right4"></div>
</div>
</div>
<div id="footer"></div>
CSS:
#all, #footer, #header{position:relative;width:500px;}
#footer, #header{background:green;height:30px;}
#content{width:300px;padding:0px 100px}
#rightCol, #leftCol{position:absolute;width:100px;top:0px;bottom:0px;}
#rightCol{left:0px;}
#leftCol{right:0px;}
#left1, #right2{background:yellow;height:100px;}
#left3, #right4{background:DarkRed;position:
absolute;left:0px;right:0px;bottom:0px;top:100px;}