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

不使用float实现固定HTML结构布局:两div上下叠放,第三div填充空间

能否不使用float实现两个div上下叠放,第三个div填充剩余空间?

是否可以在不使用float的前提下,实现两个div上下叠放,同时第三个div填充剩余空间?要求不能修改现有HTML结构,也不能使用float。以下是我尝试的代码:

div{ width: 33%; height: 100px; background: red; display: inline-block; }
.left{ background: blue; }
.right{ background: green; }
.middle{ width: 50%; height: 200px; }
<div class="left"></div>
<div class="middle"></div>
<div class="right"></div>

当然可以!完全不用float,也不用动你的HTML结构,用CSS Grid就能轻松搞定,这也是现在布局的最优解之一。另外我也会帮你分析下原来代码的问题,给你清晰的实现方案:

问题分析:你原来的inline-block方案的缺陷

你用inline-block的思路方向没问题,但有两个核心问题:

  • inline-block元素之间会存在默认的空白间隙,导致三个div的总宽度超过100%,无法在一行正常显示;
  • 垂直对齐默认是基线对齐,middle的高度是200px,会让另外两个div的位置偏移,达不到预期的上下叠放效果。

最优方案:CSS Grid布局

Grid是专门为二维布局设计的,我们可以直接给父容器(这里用<body>就行,因为你的三个div直接放在页面里)设置网格规则,然后指定每个div的位置:

/* 重置body默认边距,避免布局偏移 */
body {
  margin: 0;
  /* 设置网格布局 */
  display: grid;
  /* 三列:左右各33%,中间列自动补满剩余空间 */
  grid-template-columns: 33% auto 33%;
  /* 两行,每行高度100px,刚好匹配middle的200px总高度 */
  grid-template-rows: 100px 100px;
}

.left {
  background: blue;
  /* 占据第一行、第一列 */
  grid-area: 1 / 1;
}

.middle {
  background: red;
  /* 从第一行到第三行(跨2行),占据中间列 */
  grid-area: 1 / 2 / 3 / 3;
}

.right {
  background: green;
  /* 占据第二行、第三列 */
  grid-area: 2 / 3;
}

/* 移除你原来的inline-block等样式,替换成上面的代码 */

这样实现的效果完全符合你的需求:

  • 左侧蓝色<div class="left">在左上角(100px高),右侧绿色<div class="right">在右下角(100px高),这两个div实现了上下分布;
  • 中间红色<div class="middle">填充了中间的所有剩余空间,高度刚好200px。

备选方案:Flexbox(适合一维布局延伸场景)

如果你更习惯用Flexbox,也可以通过调整flex-direction和order属性实现,但相对Grid来说代码会繁琐一点:

body {
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  height: 200px; /* 总高度匹配middle的高度 */
}

.left {
  background: blue;
  width: 33%;
  height: 100px;
  order: 1;
}

.middle {
  background: red;
  width: 34%;
  height: 200px;
  order: 2;
}

.right {
  background: green;
  width: 33%;
  height: 100px;
  align-self: flex-end;
  order: 3;
}

这个方案通过Flex的换行和对齐属性,也能达到类似效果,但Grid的代码可读性和维护性会更好。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:35:46