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

仅用CSS实现嵌套可滚动div自适应占满屏幕剩余高度

实现方案

你可以通过CSS Flexbox布局实现需求,无需修改DOM结构,也无需使用JavaScript或固定值calc计算,代码如下:

/* 初始化根元素高度与边距 */
html, body {
  height: 100%;
  margin: 0;
}

/* body设为纵向flex容器,子元素纵向排列 */
body {
  display: flex;
  flex-direction: column;
}

/* header固定高度,不参与flex拉伸 */
header {
  flex: 0 0 60px; /* 替换为你实际的header固定高度值即可 */
}

/* 选中header之后的直接父div容器,设为纵向flex容器,占满body剩余高度 */
body > header + div {
  flex: 1;
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

/* border、bar元素高度随内容自适应,不拉伸 */
.border, .bar {
  flex: 0 0 auto;
}

/* scrollable元素占满父容器剩余高度,内容溢出时纵向滚动 */
.scrollable {
  flex: 1;
  overflow-y: auto;
}

实现逻辑说明

  • 给html和body设置100%高度,确保布局可以撑满整个视口高度
  • 把body设为纵向Flex容器,固定高度的header不参与弹性拉伸,header后的父容器自动填充body剩余高度
  • 父容器同样设为纵向Flex容器,动态高度的.border和.bar高度由内容决定,不参与拉伸
  • .scrollable设置弹性拉伸属性占满父容器剩余高度,添加overflow-y: auto保证内容超出时可滚动,不会撑破容器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 07:39:04