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

如何让CSS Grid中.head元素跨所有行实现响应式布局?

目标布局效果

我想实现如图所示的布局,但没法让.head元素跨所有行显示。试了grid-row: 1 / 6,但宽度变化时不能自适应跨所有行;grid-column: 1 / -1能正常工作,可grid-row: 1 / -1却无效。

问题代码

.mgrid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(91px, 1fr));
  grid-gap: 4px;
}

.head {
  background: blue;
  font-weight: bold;
  color: #fff;
  grid-row: 1 / -1;
}

.item {
  background: red;
}
<div class="mgrid">
  <div class="head">My Text</div>
  <div class="item">item</div>
  <div class="item">item</div>
  <div class="item">item</div>
  <div class="item">item</div>
  <div class="item">item</div>
  <div class="item">item</div>
  <div class="item">item</div>
  <div class="item">item</div>
  <div class="item">item</div>
  <div class="item">item</div>
  <div class="item">item</div>
  <div class="item">item</div>
  <div class="item">item</div>
  <div class="item">item</div>
  <div class="item">item</div>
</div>

解决方法

问题出在你用了repeat(auto-fill, minmax(91px, 1fr))作为唯一列规则,这会让.head和所有.item被纳入同一自动填充列体系,导致grid-row: 1 / -1无法正确跨所有行。

调整网格列布局,给.head单独分配一列,剩余列保留自动填充逻辑即可:

.mgrid {
  display: grid;
  /* 第一列自适应.head内容宽度,剩余列自动填充 */
  grid-template-columns: auto repeat(auto-fill, minmax(91px, 1fr));
  grid-gap: 4px;
}

.head {
  background: blue;
  font-weight: bold;
  color: #fff;
  /* 跨所有行 */
  grid-row: 1 / -1;
}

.item {
  background: red;
}

修改后,.head会固定在第一列,自动拉伸高度匹配右侧所有.item组成的网格高度,无论窗口宽度如何变化,都能保持跨所有行的效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 05:01:59