我有一个容器 div,我想至少将其拉伸到整个窗口的高度。如果容器 div 中有很多内容,我希望它伸展到超过窗口的高度。这行得通。
在容器 div 中,我有一个图像。在图片之后/下方,我有第二个 div。我希望这个嵌套的 div 垂直拉伸以填充容器 div 的剩余空间。这是行不通的。
我试图说明 这张图片 中的问题。我希望 div 以右图 左侧 所示的方式拉伸,而不是它在 右图右侧 的样子。
以下是我的代码。如您所见,在这段代码中,我什至没有尝试使图像下的 div 垂直拉伸,因为没有任何效果。 “高度:100%”不起作用,因为我默认将“100%”定义为窗口的高度,以使容器 div 至少拉伸到窗口的高度。
* {
margin: 0;
padding: 0;
}
body {
overflow-y: scroll;
overflow-x: hidden;
}
body,
html {
height: 100%;
}
.container {
display: block;
overflow: auto;
min-height: 100%;
height: 100%;
height: auto;
}
.bottom {
width: 100%;
}
<div class="container">
<img src="image.jpg" width="100%">
<div class="bottom">
LOREM IPSUM
</div>
</div>
原文由 Magnus the Swede 发布,翻译遵循 CC BY-SA 4.0 许可协议
我花了太多时间试图弄明白,但是乔治,我明白了!
“尤里卡”时刻正在阅读其他问题,人们会问“我怎样才能 不 使用表格来做到这一点?”因为当然,这种布局对于表格来说很容易。但这让我想到了
display:table
。正如 这篇博文很好地论证的 那样,使用
display:table
可以为您提供表格布局,而无需像 HTML 表格布局那样令人讨厌的标记开销,从而使您可以针对不同的媒体查询使用语义代码和不同的布局。我最终不得不对标记进行 一项 更改:图像周围的包装器
<div>
。此外,在处理 表格显示 时,最大/最小高度都很奇怪:height
考虑到父元素和子元素的约束,设置被视为首选高度。因此,在display:table-row
包装器 div 上设置高度为零,使该行完全适合内容图像。在内容 div 上设置 100% 的高度可以很好地填充图像和父容器的最小高度之间的空间。瞧!
仅压缩基本代码:
适用于 Firefox 25、Chrome 32、Opera 18 和 IE10。在 IE 8 中不起作用,但那又怎样呢?它在 IE8 中看起来并没有 _损坏_,只是无法拉伸以适应。
如果您可以在 Safari、IE9 或移动浏览器中测试它,请发表评论。