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

如何实现列Div C占据父容器body的剩余水平空间?

解决方案:让列C占据剩余水平空间的Flex布局实现

原代码使用inline-block布局存在两个核心问题:元素间会产生默认的空白间隙,且无法自动让列C填充容器的剩余水平空间。改用CSS Flexbox可以完美解决这个需求,它原生支持混合宽度单位的布局,并能自动分配剩余空间。

修改后的完整代码

CSS 部分

html,
body {
  height: 100%;
  margin: 0px;
  padding: 0px;
  display: flex; /* 关键:将body设为Flex容器 */
}

.col {
  /* 移除inline-block,Flex项默认会横向排列 */
  position: relative;
  height: 100%;
  padding: 0 10px;
}

.a {
  background-color: #2a85ff;
  width: 20%;
}

.b {
  background-color: #83bf6e;
  width: 100px;
}

.c {
  background-color: #ff6a55;
  flex: 1; /* 关键:让C占据所有剩余空间 */
}

.c span {
  font-weight: bolder;
}

.d {
  background-color: #8e59ff;
  width: 200px;
}

.e {
  background-color: #b5e4ca;
  width: 20%;
}

HTML 部分

<div class="col a">
  <h1>A</h1>
  w:%percent
  <br/> h:100%
</div>

<div class="col b">
  <h1>B</h1>
  w:pixel
  <br/> h:100%
</div>

<div class="col c">
  <h1>C</h1>
  <span>w:remaining</span>
  <br/> h:100%
</div>

<div class="col d">
  <h1>D</h1>
  w:pixel
  <br/> h:100%
</div>

<div class="col e">
  <h1>E</h1>
  w:%percent
  <br/> h:100%
</div>

关键改动说明

  1. 将body设置为Flex容器:display: flex;让所有子列自动横向排列,消除inline-block带来的空白间隙。
  2. 给列C添加flex: 1;:这个属性是flex-grow: 1; flex-shrink: 1; flex-basis: 0%;的简写,意味着列C会尽可能占据容器的剩余水平空间,同时允许在容器过小时自动收缩。
  3. 保留原有列的宽度设置:列A/E的百分比宽度、列B/D的固定像素宽度会被Flex容器优先计算,剩余空间全部分配给列C。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 20:55:20