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

为何仅设置宽高未定位的div会垂直排列而非重叠?

为什么你的div会垂直排列而不是重叠?

嘿,这事儿其实是HTML元素的默认布局规则在起作用!你用的<div>标签,默认的display属性是block——也就是块级元素。块级元素的核心特性就是独占一行,不管你给它设置了多宽多高,它都会自动把后面的元素挤到下一行去,所以才会出现垂直排列的效果,而不是你预想的重叠。

想要让它们重叠,你需要让这些div脱离默认的文档流,常见的方法有这几种:

方法1:使用绝对定位(最常用)

给每个div设置position: absolute,这样它们就会脱离文档流,不再占据自己的空间,而是相对于最近的已定位父元素(如果没有的话就相对于视口)定位,自然就会重叠在一起了。如果需要相对于某个容器定位,记得给父容器加position: relative。

修改后的代码示例:

<!-- 可以加个父容器,方便定位 -->
<div class="parent">
  <div class="D1"> </div>
  <div class="D2"> </div>
  <div class="D3"> </div>
  <div class="D4"> </div>
</div>
.parent {
  position: relative; /* 让子元素相对于这个容器定位 */
  width: 200px; /* 给父容器设宽高,避免塌缩 */
  height: 200px;
}
.D1,.D2,.D3,.D4{
  border:1px solid red;
  width: 100px;
  height: 100px;
  position: absolute; /* 关键属性,脱离文档流 */
}

方法2:使用Grid布局

如果不想用定位,也可以用Grid布局,把所有div放在同一个网格单元格里,这样它们就会重叠:

<div class="grid-container">
  <div class="D1"> </div>
  <div class="D2"> </div>
  <div class="D3"> </div>
  <div class="D4"> </div>
</div>
.grid-container {
  display: grid;
  width: 200px;
  height: 200px;
}
.D1,.D2,.D3,.D4{
  border:1px solid red;
  width: 100px;
  height: 100px;
  grid-row: 1 / 2; /* 都放在第一行 */
  grid-column: 1 / 2; /* 都放在第一列 */
}

这样修改后,你的div就会重叠在一起啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:55:32