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

如何用HTML和CSS实现垂直交替排列的Div布局?

解决垂直交替图片画廊的布局问题

你的问题出在绝对定位的元素会脱离正常文档流——右侧的.small-container用了position:absolute后,页面里的其他元素(也就是第三个.large-container)完全不会考虑它的位置和高度,只会跟着前一个在文档流里的元素(第一个大容器)排列,所以才会直接出现在第一个大容器的正下方。

要实现你想要的「左侧第二个大容器紧跟右侧小容器下方」的效果,推荐用现代CSS布局方案,比如Grid,它能精准控制元素的位置和布局关系,代码也更简洁:

解决方案代码

<div class="gallery-grid">
  <div class="large-container">This is an outer container</div>
  <div class="small-container">This has been the small one</div>
  <div class="large-container">This is an outer container</div>
</div>
.gallery-grid {
  display: grid;
  /* 定义两列,宽度对应你的大、小容器 */
  grid-template-columns: 200px 150px;
  /* 行高由内容自动决定 */
  grid-auto-rows: auto;
}

.large-container {
  height: 100px;
  background-color: blue;
  color: white;
  /* 所有大容器都放在第一列 */
  grid-column: 1;
}

.small-container {
  height: 50px;
  background-color: red;
  /* 小容器放在第二列、第二行 */
  grid-column: 2;
  grid-row: 2;
}

/* 第二个大容器放在第一列、第三行,自然就紧跟小容器下方了 */
.large-container:last-child {
  grid-row: 3;
}

为什么这个方案有效?

Grid布局会把容器划分成网格单元格,每个元素的位置由grid-column和grid-row精准控制:

  • 第一个大容器占第一列第一行
  • 小容器占第二列第二行
  • 第二个大容器占第一列第三行

这样布局的话,第二个大容器的位置会自动跟着小容器的行往下走,完美符合你的预期效果。如果想要扩展成更多交替的图片,只需要继续在网格里添加元素、调整对应的行号就行,扩展性很强~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:47:31