編集3:
これは私が推奨するソリューションで、以下の Edit 2 の CSS をフォールバックとして使用しますが、JavaScript を使用して、ロード時およびウィンドウ サイズが変更されたときに div のサイズを適切に変更します。CSS ソリューションは、クライアントで JavaScript が無効になっている場合に適切な出発点を提供し、JavaScript がページのパフォーマンスに実際に影響を与えるべきではないため、表示したいものを完成させるために JavaScript を使用しない理由はないと思います。動作するフィドルはこちらで見ることができます。また、適切な JavaScript コードは次のとおりです。
var resizeDiv = function(){
document.getElementById('c').style.height = getWindowHeight() - 64 + 'px';
};
//Framework code
var getWindowHeight = function(){
if (window.innerHeight) {
return window.innerHeight;
}
if (document.body && document.body.offsetHeight) {
return document.body.offsetHeight;
}
if (document.compatMode=='CSS1Compat' &&
document.documentElement &&
document.documentElement.offsetHeight ) {
return document.documentElement.offsetHeight;
}
return 740;//provide a default height as a fallback
};
//resize on pageload
window.onresize = resizeDiv;
setTimeout(resizeDiv);
3 番目の div の絶対高さを調整して、残りのスペースを (絶対またはパーセンテージで) 占有し、親 div でオーバーフローを非表示に設定し、3 番目の内部 div のコンテンツでスクロールバーを表示するかどうか。 これは、絶対高さ法を使用した更新されたフィドルです。
編集:
「コンテナがブラウザであると想像してください」というコメントから(これは、スクロールバーがコンテナ上にあることを意味します)、オーバーフローを「スクロール」に設定し、3番目のdivの高さを「自動」に設定するだけです'。 そのための更新されたフィドルを次に示します。
編集#2:
この質問に対するあなたのコメントによると、パーセンテージ メソッドを使用する必要があるようです。最も簡単な方法は、a、b、および ca の高さをパーセンテージにすることです (すべてのズームに合わせて余白を微調整する必要がありました)。残念ながら、この方法では上部のコンポーネントが固定されず、ファンキーに見える静的コンテンツをそこに表示しているように思えます。したがって、ブラウザ ウィンドウでサポートされている最小サイズを選択し、3 番目の要素のパーセンテージを調整してちょうど収まるようにするという別のオプションがあります。 これがそのためのフィドルです. ただし、ウィンドウの高さが大きくなるほど、ページの下部に空きスペースが増え、特定の高さより下に 2 つのスクロールバーが表示されるという欠点があります。上部の固定サイズの div でこれを適切に行うには、window.resize メソッドにイベント リスナーを追加し、ウィンドウの新しいサイズに基づいて適切に発生したときに 3 番目の div のサイズを変更する必要があります。
注: W3C が高さ、幅、およびその他のサイズ変更プロパティのパーセンテージとピクセルを承認することを望むのは、このような場合です!