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

仅用CSS实现div占满剩余屏幕空间且不出现滚动条的方法

完全可以通过纯CSS实现,无需预先知道其他元素的高度参数,推荐以下两种成熟方案:

方案1:Flex布局(兼容性最好,适用场景广)

核心逻辑是给父容器设置纵向Flex排列,需要填充剩余空间的元素设置flex-grow: 1自动占用剩余空间。

代码示例

<!-- 页面结构 -->
<body>
  <header>头部导航,高度随内容自适应,无需预设</header>
  <div class="main-content">需要填充剩余空间的div</div>
  <footer>底部信息栏,高度同样无需预设</footer>
</body>
/* 全局样式重置,避免默认边距导致滚动条 */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
/* 父容器(这里是body,也可以是自定义的最外层包裹容器)设置 */
body {
  min-height: 100vh; /* 最小高度占满整个视口 */
  display: flex;
  flex-direction: column; /* 子元素纵向排列 */
}
/* 要填充剩余空间的元素设置 */
.main-content {
  flex-grow: 1; /* 核心属性:分配所有剩余空间 */
  overflow: auto; /* 内容超出时内部滚动,不会触发页面滚动条 */
}

方案2:Grid布局(代码更简洁)

核心逻辑是利用Grid的fr分数单位自动分配剩余空间。

代码示例

复用上面的HTML结构,CSS修改为:

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
body {
  min-height: 100vh;
  display: grid;
  /* 按顺序设置行高:第一行auto(内容自适应)、第二行1fr(占满剩余)、第三行auto(内容自适应) */
  grid-template-rows: auto 1fr auto;
}

注意事项

  • 如果需要填充剩余空间的元素不是最外层容器的直接子元素,只需要给它的所有父级容器同步设置对应的Flex/Grid规则即可,逻辑完全一致。
  • 若需要页面固定高度不随内容撑开,把父容器的min-height: 100vh改成height: 100vh即可。

内容的提问来源于stack exchange,提问作者Darren Oakey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 01:27:01