是否可以将三个 DIV 垂直堆叠起来,只让中间的 div 垂直滚动?不过,我不想使用像素高度,因为 DIV 位于可调整大小的对话框内。像这样的东西(请原谅我糟糕的 ASCII 艺术):
+-----------+
| Header |
+-----------+
| ^|
| ||
| Scroll ||
| ||
| v|
+-----------+
| Footer |
+-----------+
目标是固定页眉和页脚,随着对话框的增长,中间的 div 会垂直增长。也许我只是愚蠢,但过去几个小时我一直在为此而战,似乎无法把它做对。这三个 DIV 可能需要位于“另一个”DIV 内,但是当我这样做并将高度设置为 100% 时,它会随着中间 DIV 的增长而增长。再一次,这可能是我没有考虑的愚蠢的事情。我也尝试过使用 TABLE 无济于事。
感谢您的帮助。
最佳答案
在 2017 年重新审视这一点。使用 flexbox,现在无需显式定义页眉和页脚的高度即可完成此操作。这至少适用于所有目前拥有重要市场份额的浏览器,除了 IE <= 10,它仍然有 1-5% 的份额,具体取决于你问谁。因为这通常是一种视觉/可用性机制并且不会阻止功能,所以在这种情况下使用 flexbox 至少应该让您的页面对不受支持的浏览器的用户可用。
您需要做的就是将页眉、内容和页脚包装在一个高度有限的 div 中(例如,通过设置 height
或 max-height
属性,只要它们与容器无关即可与内容一起成长)。一种方法是 <html>
和 <body>
具有 100% 的高度并且容器是 body 的直接子对象,但还有其他方法。容器应该有样式:
display: flex;
flex: auto;
flex-direction: column;
并将样式应用于可滚动 Pane :
overflow-y: auto;
如果您希望可滚动 Pane 增长以便使用所有垂直空间:
flex-grow: 1;
以及页眉和页脚(Safari 和 IE 10 必需):
flex-grow: 0;
关于css - 三个垂直堆叠的 DIV,中间有滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3011248/