使动态改变div高度

时间:2016-10-25 08:55:40

标签: javascript jquery html css

我有一个包含3行的页面。第一行的固定高度为150px,最后一行的固定高度为120px。我需要根据窗口的高度调整中间行,以便所有三行都可见,并且没有可见的滚动条。中间行必须动态调整,以便即使在加载后如果将浏览器窗口移动到另一个较小的屏幕,中间行也必须相应地进行调整。其次,中间行必须使其内容垂直中间和水平对齐。任何帮助表示赞赏。

5 个答案:

答案 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;
}

http://codepen.io/kevinfarrugia/pen/wzOqGo?editors=1100#0

答案 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

&#13;
&#13;
.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;
&#13;
&#13;