3

我有几个 DIV 元素结构,一个位于另一个之下。

<div id="app">
    <div id="title">Title</div>
    <div id="block1">Block 1</div>
    <div id="block2">Block 2</div>
    <div id="content">CONTENT</div>
</div>

#title,#block1并且#block2具有固定的高度,我希望该内容将占用 100% 的可用空间,并且overflow-y: auto当其内容不适合时也会有滚动条。

我该怎么做?我已经阅读了有关使内容绝对定位并将其底部设置为 0px 并将其顶部设置为其他 DIV 高度摘要的想法。但是我可以在内容块上有更多的 DIV 元素,并且不想一直更改它的 CSS。

我还设置了:

html, body, #app {
    height: 100%
}

但是当我设置#content为 100% 高度时,它会越过屏幕底部,这不是我需要的。我希望这#app将是 100% 的高度,并且#content如果需要的话,可以显示滚动条。

这是 jsFiddle - http://jsfiddle.net/ZNFcd/

有什么帮助吗?由于它的 Intranet 应用程序因此只适用于 chrome + CSS3 解决方案的解决方案也受到欢迎。

谢谢你。

4

2 回答 2

0

基于@apaul34208 的 CSS 解决方案,您可以使用

html, body {
    padding: 0px;
    margin: 0px;
    height: 100%;
}
#app {
    border: 1px solid green;
    height: 100%;
    box-sizing: border-box;
    -moz-box-sizing: border-box;
    position: relative;
}
#title {
    height: 20px;
}
#block1 {
    height: 30px;
}
#block2 {
    height: 40px;
}
#content {
    position: absolute;
    top: 90px;
    bottom: 0;
    width: 100%;
    border: 1px solid red;
    box-sizing: border-box;
    -moz-box-sizing: border-box;
}

这样你就不需要calc()了,这在旧浏览器上不起作用。

演示

于 2013-09-30T22:27:23.100 回答
0

jQuery 选项

工作示例

var contentHeight = function () {
    var w = $(window).height();
    x = $('#title').height();
    y = $('#block1').height();
    z = $('#block2').height();
    h = w - x - y - z - 3; // -3 to account for borders
    $('#content').height(h);
};

$(document).ready(contentHeight);
$(window).resize(contentHeight);

.height() 的 API 文档

为此使用一个小脚本具有更灵活的优点。尝试添加或删除内容或更改其他 div 的高度。

纯 CSS 选项

工作示例 2

#app {
    border: 1px solid green;
    height: 100%;
    box-sizing:border-box;
    -moz-box-sizing:border-box
}
#title {
    height: 20px;
}
#block1 {
    height: 30px;
}
#block2 {
    height: 40px;
}
#content {
    height: 90%; /* fallback for browsers without support for calc() */
    height: calc(100% - 90px);
    border: 1px solid red;
    box-sizing:border-box;
    -moz-box-sizing:border-box
}

calc()
文档 box-sizing 文档

我个人会选择 jQuery 选项,calc()它很酷,但它在 Opera 中不受支持,并且在 Safari 中是“错误的”。

于 2013-05-28T19:37:14.140 回答