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

CSS实现.big-div跨行两行布局,让.small-div填充其右侧两行后再换行

嘿,这个需求用CSS Grid就能完美实现,刚好对应你想要的类似rowspan="2"的布局效果!我帮你调整了代码,直接看方案:

修改后的CSS代码

.wrapper {
  max-width: 600px;
  border: 1px solid #333;
  display: grid;
  /* 第一列匹配big-div的宽度,后续自动填充small-div的宽度 */
  grid-template-columns: 212px repeat(auto-fill, 100px);
  /* 每行高度对应small-div的高度 */
  grid-auto-rows: 100px;
  /* 用gap代替margin,统一控制元素间距 */
  gap: 8px;
  /* 保留内边距,让元素和wrapper边框的间距和原来一致 */
  padding: 4px;
}

.big-div {
  min-width: 212px;
  min-height: 212px;
  max-width: 212px;
  max-height: 212px;
  background-color: #778;
  /* 核心:让big-div占据两行垂直空间,模拟rowspan=2 */
  grid-row: span 2;
}

.small-div {
  min-width: 100px;
  min-height: 100px;
  max-width: 100px;
  max-height: 100px;
  background-color: #787;
}

为什么这么改?

  • grid-row: span 2:这是实现你要的“跨行”效果的核心,它让.big-div直接占据两行的垂直空间,和表格的rowspan="2"逻辑完全一致。
  • Grid布局的自动排列:右边的.small-div会自动填充.big-div右侧的两行空间,当这两行的位置被填满后,后续的.small-div会自动换行到.big-div的下方,完全符合你的需求。
  • 用gap替代margin:相比原来的inline-flex+margin,Grid的gap能更精准地控制元素间距,还能避免margin折叠的问题,布局更稳定。

额外优化(可选)

如果需要响应式效果——比如屏幕变窄时,.big-div也能自动换行到顶部,可以把grid-template-columns改成:

grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));

然后给.big-div加上grid-column: span 2,这样它会占据两列宽度,同时保持跨行的效果,适配不同屏幕尺寸。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 21:02:35