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

如何使用Flexbox实现图片的2×2横竖并排布局?

实现2×2图片布局的Flexbox解决方案

你的问题核心是没有给存放图片的article元素设置Flex容器属性——当前Flex规则只作用在section上,而figure是article的子元素,自然不会按你想要的方式排列。下面是修改后的代码和说明:

修改后的CSS代码

section {
  display: flex;
  flex-direction: row-reverse;
  flex-wrap: wrap;
  justify-content: space-between;
}

article {
  flex: 200;
}

.upgrades {
  flex: 100;
  /* 关键:让article成为Flex容器,子元素可换行 */
  display: flex;
  flex-wrap: wrap;
  /* 控制元素间间距,替代margin更便捷 */
  gap: 10px;
  padding: 5px;
}

.reviews {
  align-self: flex-end;
}

figure {
  background-color: #3482D5;
  /* 去掉固定高度,避免压缩图片 */
  /* height: 80px; */
  display: flex;
  flex-direction: column;
  /* 每个元素占容器一半宽度,减去gap的一半空间 */
  flex: 0 1 calc(50% - 5px);
  margin: 0;
  padding: 5px;
  align-items: center;
  text-align: center;
}

/* 让图片自适应容器,避免溢出 */
figure img {
  max-width: 100%;
  height: auto;
}

修改后的HTML代码(结构无需调整)

<article class="upgrades">
  <h3>Delorean Upgrades</h3>
  <figure>
    <img src="https://placekitten.com/200/300" alt="bumper_sticker">
    <figcaption>Flux Capacitor</figcaption>
  </figure>
  <figure>
    <img src="https://placekitten.com/201/301" alt="flame">
    <figcaption>Flame Decals</figcaption>
  </figure>
  <figure>
    <img src="https://placekitten.com/202/302" alt="flux cap">
    <figcaption>Bumper Stickers</figcaption>
  </figure>
  <figure>
    <img src="https://placekitten.com/203/303" alt="hub cap">
    <figcaption>Hub Caps</figcaption>
  </figure>
</article>

核心修改说明

  • 给.upgrades添加display: flex和flex-wrap: wrap,让它成为真正的Flex容器,子元素figure才能自动换行。
  • 用flex: 0 1 calc(50% - 5px)精准控制每个figure的宽度,确保一行刚好放下两个(减去gap的一半空间)。
  • 调整figure内部为垂直布局(flex-direction: column),让图片和figcaption的排版更合理。
  • 去掉固定height并设置图片自适应,避免图片被压缩变形。

内容的提问来源于stack exchange,提问作者Nana Kwame Dickson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 19:05:36