【发布时间】:2018-04-20 00:57:40
【问题描述】:
我需要一个位于 100vh 最小高度容器内的居中框,最小高度为 100%,最大高度为 600 像素。到目前为止,这很容易。但在我居中的框中,我还有 3 个其他元素(标题、内容和页脚)。内容部分必须增长,直到达到所有可用空间(在这种情况下,它是父级的最大高度减去标题和 gg 部分)。
flexbox 可以做到吗?
我自己也尝试过,但是一旦我输入 100% 的最小高度而不是项目 div 的像素值,我就会遇到问题。 知道如何解决这个问题并且可以使用最小高度 100% 吗?
* {
box-sizing:border-box;
margin:0;
padding:0;
}
.wrapper {
background: rgba(red, 0.3);
display:flex;
min-height:100vh;
align-items: center;
justify-content:center;
//flex-direction:column;
.wrapper-inner {
padding:20px;
max-width:80%;
min-height:100%;
//max-height: 500px;
background:#fff;
display:flex;
flex-direction:column;
background: rgba(green, 0.2);
}
.item {
width:100%;
min-height:100%;
display:flex;
flex-direction:column;
max-height:600px;
background:#fff;
}
.titel,
.content,
.footer {
padding:10px;
background: rgba(#000, 0.2);
margin-bottom:10px;
}
.content {
flex-grow:1;
}
}
<div class="wrapper">
<div class="wrapper-inner">
<div class="item">
<div class="titel">Titel here...</div>
<div class="content">
content goes here. this box has to grow until the space is filled.
"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
<div class="footer">gg</div>
</div>
</div>
</div>
这是一个有效的小提琴:https://jsfiddle.net/zg3kLe70/14/
EDIT2:我越来越近了 :) 最新的 fiddel 似乎在 chrome、firefox、edge 和 safari 中运行良好。但在 IE10/11 中,内容没有居中。我认为这是 min-height:100 vh 的问题... https://jsfiddle.net/zg3kLe70/26/
谢谢你, 马可
【问题讨论】:
-
你测试的是什么浏览器?
-
只是用于开发的 chrome。但它必须在 ie11+、ff、chrome 和 safari 中工作。
-
你需要那么多包装器吗?
-
我假设您在使用 flex 时正在处理现代浏览器。为什么不使用 css-tricks 的一篇精彩文章中描述的 transform: translate(-50%,-50%) 策略。 css-tricks.com/centering-percentage-widthheight-elements 为“header div”设置固定高度,为“footer div”设置固定高度,并且元素应该增长直到达到最大高度。