编辑3:
这是我推荐的解决方案,它使用下面编辑 2 中的 CSS 作为后备,但使用 JavaScript 在加载时和窗口大小发生变化时适当调整 div 的大小。如果客户端禁用了 JavaScript,CSS 解决方案提供了一个不错的起点,并且 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);
我认为您需要调整第三个 div 上的绝对高度以占用其余空间(绝对或百分比),在父 div 上将溢出设置为隐藏,并让第三个内部 div 中的内容确定是否是否显示滚动条。 这是使用绝对高度方法的更新小提琴。
编辑:
从您的“想象容器是浏览器”评论(对我来说,这意味着滚动条应该在容器上),您真正需要做的就是将溢出设置为“滚动”,将第三个 div 中的高度设置为“自动” '。 这是一个更新的小提琴。
编辑#2:
根据您对这个问题的评论,听起来您需要使用百分比方法。最直接的方法是设置a、b 和 ca 的高度百分比(我必须调整边距以使其适合所有缩放)。不幸的是,使用这种方法,顶部组件不会被修复,听起来您可能会在那里显示看起来很时髦的静态内容。因此,另一种选择是为您的浏览器窗口选择支持的最小尺寸并调整第三个元素的百分比以使其适合。 这是一个小提琴. 但是,不利的一面是,窗口的高度越大,页面底部的空白区域就越多,并且在某个高度以下会有 2 个滚动条。要真正使用顶部固定大小的 div 正确执行此操作,您需要向 window.resize 方法添加一个事件侦听器,并在发生这种情况时根据窗口的新大小适当调整第三个 div 的大小。
注意:在这种情况下,我希望 W3C 批准百分比加上像素的高度、宽度和其他尺寸属性!