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

如何设置中间div宽度使其填充左右浮动div间的空隙?

首先得修正一个小问题:你的HTML里左右两个div的id是leftside和rightside,但CSS里写的是#left和#right,这会导致样式不生效,得先把选择器对应上。

接下来给你两种靠谱的实现方式:

方法一:利用BFC(块级格式化上下文)

这种方法不用改太多结构,只需要调整middle的样式:

  • 去掉#middle的float:left
  • 给#middle加上overflow: hidden;(或者display: flow-root;,后者更语义化,不会隐藏溢出内容)

修改后的完整CSS代码:

* {
  box-sizing: border-box;
}
#container {
  width:500px;
  height:50px;
}
#container div {
  height:50px;
}
#leftside {
  float:left;
}
#middle {
  background-color:red;
  text-align:center;
  overflow: hidden; /* 触发BFC,自动填充空隙 */
}
#rightside {
  float:right;
}

原理是触发BFC的元素不会和浮动元素重叠,会自动占据浮动元素之外的剩余空间,不管左右浮动元素的宽度怎么变,middle都会填满中间的空隙。

方法二:使用Flex布局(更推荐,现代布局方案)

直接把容器改成flex布局,这种方式更简洁,也更易维护:

  • 给#container加上display: flex;
  • 给#middle加上flex: 1;,让它自动填充剩余空间
  • 左右两个div不需要再设置float

修改后的完整CSS代码:

* {
  box-sizing: border-box;
}
#container {
  width:500px;
  height:50px;
  display: flex; /* 开启flex布局 */
}
#container div {
  height:50px;
}
#leftside {
  /* 不需要float了 */
}
#middle {
  background-color:red;
  text-align:center;
  flex: 1; /* 自动填充剩余空间 */
}
#rightside {
  /* 不需要float了 */
}

这种方法兼容性很好,现在主流浏览器都支持,而且布局逻辑更清晰,后续调整也更方便。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 04:34:55