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

CSS Grid如何实现跨列/行单元格覆盖相邻元素而非挤走后续项

解决方案

该需求可以通过CSS Grid实现,核心是开启网格的密集自动放置模式。

你遇到的元素被挤开的问题是CSS Grid默认配置的特性:默认grid-auto-flow为row(稀疏排布模式),当跨列/跨行的元素无法在当前行剩余单元格中放下时,会直接跳到下一行的起始位置放置,留下的空白不会被后续元素自动填充,就会出现后续元素被整体挤开的现象。

只需要在你的.grid选择器中新增一行grid-auto-flow: row dense配置即可,dense会触发密集排布规则,让自动放置算法回溯前面的空白位置,把尺寸匹配的元素填进去,不会留下无效空隙。

修改后完整代码如下:

.grid
  width: 100%
  height: 500px
  background-color: green
  display: grid
  grid-template-columns: repeat(6, 1fr)
  grid-template-rows: repeat(4, 1fr)
  gap: 1em
  /* 新增下面这行开启密集排布 */
  grid-auto-flow: row dense
                
  > *
    background-color: gray
  
  .doubleWidth
    grid-column: span 2

  .doubleHeight
    grid-row: span 2

该配置属于原生CSS Grid标准属性,不需要额外JS逻辑,符合你要的纯CSS极简方案要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:06:04