html - 如果另一个 div 有边距,div 将失去其完整高度

标签 html css

我需要所有 div 为 100% 文档高度。它一直有效,直到其中一些有最高利润。在这种情况下,剩余的 div 将失去其完整高度。

我怎样才能将所有 div 的高度拉伸(stretch)到整个文档高度,而​​不管它们中的任何一个的边距?

* {
  .margin: 0;
}
html {
  background: red;
  height: 100%;
}
body {
  max-width: 1366px;
  background: blue;
  height: 100%;
}
#divleft {
  float: left;
  background: lightblue;
  width: 40%;
  height: 100%;
}
#divmiddle {
  float: left;
  margin-top: 25px;
  background: lightgreen;
  width: 40%;
  height: 100%;
}
#divright {
  float: right;
  background: green;
  width: 20%;
  height: 100%;
}
<div id='divleft'>left</div>
<div id='divmiddle'>middle</div>
<div id='divright'>right</div>

这是 fiddle

最佳答案

您的 div 不一定需要 height: 100% 才能达到全高。您可以使用 CSS flexbox 实现此布局,使 div 完全动态化。

您只需要在容器上显示display: flex

你可以摆脱所有的 float 规则,不需要使用 calc()

html {
  background: red;
  height: 100%;
}
body {
  display: flex; /* NEW */
  max-width: 1366px;
  background: blue;
  height: 100%;
}
#divleft {
  background: lightblue;
  width: 40%;
}
#divmiddle {
  margin-top: 25px;
  width: 40%;
  background: lightgreen;
}
#divright {
  width: 20%;
  background: green;
}
<div id='divleft'>left</div>
<div id='divmiddle'>middle</div>
<div id='divright'>right</div>

revised fiddle

flex 容器的初始设置是align-items: stretch。这意味着容器的子元素(也称为“flex 元素”)将占用横轴 中的可用空间,在本例中为垂直/高度。

关于html - 如果另一个 div 有边距,div 将失去其完整高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41071934/

相关文章:

jquery - 动态调整页面大小

css - Stylelint 规则强制选择器和属性在同一行

javascript - 当最大高度减小时,最大高度过渡不起作用

python - 使用正则表达式刮取不带括号的干净科学名称

javascript - 禁用 Div 标签时无法获取值

css - 在页面底部保留页脚 DIV

javascript - 防止从周围激活菜单

javascript - Flexslider 箭头有问题,如何解决?

javascript - 根据内容动态改变div的高度

javascript - Android 播放一次音频