YL

MODERN CSS

子网格Subgrid

嵌套的网格可以继承父网格的轨道,让跨卡片的内容真正对齐。解决「卡片内元素对不齐」这个困扰多年的老问题。

效果预览

1设计稿还原已完成前端组
2接口联调进行中后端组
3灰度发布待开始运维组

适合用在哪

卡片列表里让标题、描述、按钮跨卡片对齐;表单里让标签列宽度一致;杂志式排版的跨栏对齐。

容易踩的坑

  • 子项没有横跨对应行数,subgrid 拿不到父轨道,跨卡对齐完全不生效。
  • 父网格行轨道用固定高度,某张卡标题变长时内容溢出而非整行撑高。
  • 在 subgrid 上重新声明 gap 却忘了它会继承父级 gap,间距翻倍或错乱。

设计提示词 · Prompt

子网格(Subgrid):父网格设 display:grid; grid-template-columns:repeat(3,1fr);子项(卡片)设 display:grid; grid-template-columns:subgrid(行方向用 grid-template-rows:subgrid),并让它横跨父网格的多列(grid-column:span 1)。这样卡片内部的每个元素会落在与父网格相同的列线上,跨卡片天然对齐。要点:Chrome 117+、Safari 16+、Firefox 71+ 支持,条件允许时用 @supports (grid-template-columns:subgrid) 做渐进增强,不支持时降级为普通流式布局(元素会各自算宽度,但仍可用)。
Subgrid: the parent grid sets display:grid; grid-template-columns:repeat(3,1fr); child items (cards) set display:grid; grid-template-columns:subgrid (use grid-template-rows:subgrid for the row direction) and span multiple tracks of the parent grid (grid-column:span 1). Each element inside a card then lands on the same lines as the parent grid, aligning naturally across cards. Key points: supported in Chrome 117+, Safari 16+, Firefox 71+; where possible use @supports (grid-template-columns:subgrid) for progressive enhancement, falling back to a normal flow layout when unsupported (elements size themselves independently but remain usable).

常见搭配

同一页面里经常和「子网格」一起出现的模式,可以收藏后用「组合收藏为整页提示词」一起交给 AI。

演示 HTML 结构

<div class="s" style="width:100%">
  <div class="mc-sg">
    <div class="mc-sg__r"><i>1</i><b>设计稿还原</b><em>已完成</em><span>前端组</span></div>
    <div class="mc-sg__r"><i>2</i><b>接口联调</b><em>进行中</em><span>后端组</span></div>
    <div class="mc-sg__r"><i>3</i><b>灰度发布</b><em>待开始</em><span>运维组</span></div>
  </div>
</div>

标签