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

使用CSS Grid拆分无序列表为多列 解决grid-template-areas元素重叠问题

结论

不需要修改HTML结构,也不需要用到subgrid特性,标准CSS Grid就能实现你的需求。

问题原因

你当前代码出现元素堆叠的核心原因是用法错误:grid-area属性用于指定单个元素占用的网格区域,你给所有普通<li>都指定了同一个main-links区域,自然所有元素都会堆叠在这个占满第一行三列的区域中。

正确实现方案

不需要定义grid-template-areas,只要给需要单独占满一行的.extra-link设置横跨所有3列即可,剩下的普通链接会自动遵循3列的网格规则排布,修正后的CSS如下:

/* 保留原有的.grid基础样式 */
.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: auto;
  gap: 3rem 0.75rem;
  background-color: #f0f0f0;
  list-style-type: none;
  margin-bottom: 40px;
  padding: 10px;
}

/* 仅需保留这一行样式即可,不需要其他grid--areas相关配置 */
.grid--areas .extra-link {
  /* 1 / -1 表示从网格第一列横跨到最后一列,自动独占一行 */
  grid-column: 1 / -1;
}

实现效果

10个普通链接会自动按3列排列:前3行各放3个,第4行放剩下的1个,之后.extra-link单独占满一整行,完全匹配你的需求,该写法兼容所有支持CSS Grid的浏览器。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:06:00