You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让两个div之间的容器垂直填充剩余空间?

解决Between容器填充屏幕剩余空间的问题

你的问题出在绝对定位让header和footer脱离了文档流,wrapper的100vh高度虽然占满屏幕,但between容器无法识别header和footer的存在,自然没法填充剩余空间。下面是两种解决方案,优先推荐第一种:

方案一:Flexbox布局(最简洁稳定)

修改CSS,利用Flexbox的弹性特性自动分配空间:

.wrapper {
  height: 100vh;
  display: flex;
  flex-direction: column;
  margin: 0; /* 清除浏览器默认边距,避免出现横向滚动条 */
}

.header {
  width: 100%; /* 用100%替代100vw,避免横向溢出 */
  /* 移除absolute定位,让元素回到文档流 */
}

.between {
  flex: 1; /* 核心属性:自动填充容器剩余空间 */
}

.footer {
  width: 100%;
  /* 移除absolute定位 */
}

HTML结构保持不变:

<div class="wrapper">
  <div class="header"></div>
  <div class="between"></div>
  <div class="footer"></div>
</div>

原理:把wrapper设为垂直方向的flex容器,header和footer保持自身高度,flex:1会让between容器自动占据wrapper中除header和footer外的所有剩余空间。

方案二:固定高度+Calc(适配必须用绝对定位的场景)

如果一定要保留header和footer的绝对定位,需要明确它们的高度,然后通过计算给between设置高度:
假设header高度为60px,footer高度为40px:

.wrapper {
  height: 100vh;
  position: relative; /* 让绝对定位的子元素以wrapper为参照 */
}

.header {
  width: 100vw;
  position: absolute;
  top: 0;
  height: 60px; /* 明确高度 */
}

.between {
  min-height: calc(100vh - 60px - 40px); /* 计算剩余高度 */
  margin-top: 60px; /* 避免被header遮挡 */
}

.footer {
  position: absolute;
  bottom: 0;
  width: 100vw;
  height: 40px; /* 明确高度 */
}

这种方法的缺点是:如果header或footer高度变化,between的样式必须同步修改,灵活性差。

内容的提问来源于stack exchange,提问作者Rutvik Chaudhari

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:15:42