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

如何使内层div填充带padding的外层全屏div剩余空间?

解决内层div填充外层带padding容器的问题

嘿,这个问题我太熟悉了!你碰到的是CSS默认盒模型的经典坑——默认的content-box盒模型下,元素的width和height只计算内容区域的大小,当外层容器有padding时,内层设置100%宽高就会直接撑破外层容器,因为它不会自动减去外层的padding值。

下面给你几个靠谱的解决方案,按推荐程度排序:

方案1:修改盒模型为border-box(最推荐)

这是最直接的解决方式,把内外层元素的盒模型改成border-box,这样width和height就会包含内容、padding和border的总尺寸,完美适配你的需求。

修改后的CSS代码:

.fullscreen-page {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 100%;
  box-sizing: border-box; /* 关键:修改盒模型 */
}

.padding-container {
  padding: 30px;
  box-sizing: border-box; /* 外层也要加,避免它自己撑破页面 */
}

#inner {
  width: 100%;
  height: 100%;
  box-sizing: border-box; /* 内层同样设置,确保它的尺寸是外层padding后的剩余空间 */
  /* 可以加个背景色方便看效果 */
  background-color: #f0f0f0;
}

如果想全局统一盒模型,也可以用通配符:

* {
  box-sizing: border-box;
}

这样所有元素都会默认使用border-box,一劳永逸。

方案2:用Flex布局(现代且灵活)

不需要设置width和height,利用Flex的自动填充特性,让内层div自动占满外层的剩余空间,代码更简洁:

修改后的CSS:

.fullscreen-page {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 100%;
}

.padding-container {
  padding: 30px;
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  display: flex; /* 开启Flex布局 */
}

#inner {
  flex: 1; /* 关键:让内层自动填充剩余空间 */
  background-color: #f0f0f0;
}

这个方案的好处是,如果以后内层需要加其他元素,Flex的布局能力会更灵活,不需要再调整宽高。

方案3:用calc()手动计算宽高(不推荐,仅作参考)

如果你不想改盒模型或用Flex,也可以手动计算内层的宽高,减去外层左右/上下的padding总和(30px*2=60px):

#inner {
  width: calc(100% - 60px);
  height: calc(100% - 60px);
  background-color: #f0f0f0;
}

但这个方案的缺点是,一旦外层的padding值改变,你必须手动修改calc里的数值,维护起来比较麻烦,所以只适合临时场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:50:34