我有一个包含3行的页面。第一行的固定高度为150px,最后一行的固定高度为120px。我需要根据窗口的高度调整中间行,以便所有三行都可见,并且没有可见的滚动条。中间行必须动态调整,以便即使在加载后如果将浏览器窗口移动到另一个较小的屏幕,中间行也必须相应地进行调整。其次,中间行必须使其内容垂直中间和水平对齐。任何帮助表示赞赏。
答案 0 :(得分:2)
高度的CSS:
.first-row {
height: 150px;
}
.middle-row {
height: calc(100vh - 150px - 120px);
}
.last-row {
height: 120px;
}
答案 1 :(得分:0)
以完整页面模式运行代码段(!)。使用css calc
函数自动计算中间容器的高度。
body {
margin: 0;
}
.top {
background-color: #f0f0f0;
height: 150px;
}
.bottom {
background-color: #ddd;
height: 120px;
}
.middle {
background-color: teal;
display: table-cell;
height: calc(100vh - 270px);
text-align: center;
vertical-align: middle;
width: 100vw;
}
<div class="top">TOP</div>
<div class="middle">MIDDLE</div>
<div class="bottom">BOTTOM</div>
答案 2 :(得分:0)
就个人而言,最干净的解决方案是使用flexbox
:
.container {
display: flex;
flex-direction: column;
}
.dynamic {
flex: 1 1 auto;
}
答案 3 :(得分:0)
根据建议,尝试使用flexbox:
<style>
.container {
display: flex;
flex-flow: column wrap;
align-items: stretch;
height: 100%;
}
.row{}
.row.row1{height: 150px;}
.row.row2{flex: 1 1 auto;}
.row.row3{height: 120px;}
</style>
<div class="container">
<div class="row row1">First row</div>
<div class="row row2">Middle row</div>
<div class="row row3">Final row</div>
</div>
使用此功能时,请不要忘记添加供应商前缀。
答案 4 :(得分:0)
我将flexbox用于这些事情:A Complete Guide to Flexbox
.container {
display: flex;
flex: 1 1 auto;
flex-direction: column;
}
.header {
height: 50px;
background-color: green;
flex: 0 0;
}
.footer {
height: 30px;
background-color: red;
flex: 0 0;
}
.content {
background-color: blue;
flex: 1 1 auto;
min-height: 50px;
}
&#13;
<div class="container">
<div class="header"></div>
<div class="content"></div>
<div class="footer"></div>
<div>
&#13;