css - 三个垂直堆叠的 DIV,中间有滚动条

标签 css html scroll

是否可以将三个 DIV 垂直堆叠起来,只让中间的 div 垂直滚动?不过,我不想使用像素高度,因为 DIV 位于可调整大小的对话框内。像这样的东西(请原谅我糟糕的 ASCII 艺术):

+-----------+
|  Header   |
+-----------+
|          ^|
|          ||
|  Scroll  ||
|          ||
|          v|
+-----------+
|  Footer   |
+-----------+

目标是固定页眉和页脚,随着对话框的增长,中间的 div 会垂直增长。也许我只是愚蠢,但过去几个小时我一直在为此而战,似乎无法把它做对。这三个 DIV 可能需要位于“另一个”DIV 内,但是当我这样做并将高度设置为 100% 时,它会随着中间 DIV 的增长而增长。再一次,这可能是我没有考虑的愚蠢的事情。我也尝试过使用 TABLE 无济于事。

感谢您的帮助。

最佳答案

在 2017 年重新审视这一点。使用 flexbox,现在无需显式定义页眉和页脚的高度即可完成此操作。这至少适用于所有目前拥有重要市场份额的浏览器,除了 IE <= 10,它仍然有 1-5% 的份额,具体取决于你问谁。因为这通常是一种视觉/可用性机制并且不会阻止功能,所以在这种情况下使用 flexbox 至少应该让您的页面对不受支持的浏览器的用户可用。

您需要做的就是将页眉、内容和页脚包装在一个高度有限的 div 中(例如,通过设置 heightmax-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;

https://jsfiddle.net/ornsk10a/

关于css - 三个垂直堆叠的 DIV,中间有滚动条,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3011248/

相关文章:

html - 在悬停边框上添加了 PIE

html - 仪表板 100% 高度?

javascript - 重构以使用 OOP MVC

html - 使用 CSS 设置表格样式时的额外空间

asp.net-mvc - 关闭并提交表单 Bootstrap 3

reactjs - 重新渲染后保持滚动-y

html - 直接链接到 Bootstrap 选项卡而不滚动到 anchor

ios - 启用分页和每页多个单元格时奇怪的 UICollectionView 行为

jquery - Bootstrap - 附近的图像 slider |在下方添加文字

css - 设置内联背景图像时保留 CSS 背景属性