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

CSS Grid不生效问题排查:如何让首个div跨两行?

解决你的CSS Grid失效问题

嘿,我发现你的问题出在HTML结构和Grid核心逻辑的理解上,咱们一步步拆解修正:

1. 核心问题:Grid容器的结构不对

你现在用ng-repeat把每个cardData都生成了一个独立的.my-grid-container——这意味着你有N个彼此独立的Grid容器,每个容器里只有1个.myClass子元素。Grid布局的作用是在同一个容器内排列多个子元素,单个子元素自然体现不出Grid的布局效果。

修正后的HTML结构

把ng-repeat移到子元素上,让所有卡片都处于同一个Grid容器中:

<div class="my-grid-container">
  <div class="myClass" ng-repeat="cardData in summaryCardsCtrl.summaryDetails">
    My custom div
  </div>
</div>

2. 实现第一个元素跨两行

要让第一个子元素占据两行高度,需要给它添加grid-row: span 2属性,同时确保Grid容器有足够的空间容纳这个跨行元素。

完整CSS示例

.my-grid-container {
  display: grid;
  grid-template-columns: auto auto auto;
  grid-gap: 10px;
  padding: 10px;
  /* 让行高自适应内容,也可以设置固定值 */
  grid-auto-rows: minmax(100px, auto);
}

.my-grid-container > div {
  text-align: center;
  padding: 20px 0;
  background-color: #eee;
}

/* 给第一个子元素设置跨两行 */
.my-grid-container > div:first-child {
  grid-row: span 2;
}

额外提示

如果需要根据不同的cardData设置不同的Grid布局,可以借助Angular的ng-class结合$index来动态添加样式,比如:

<div class="myClass" 
     ng-repeat="cardData in summaryCardsCtrl.summaryDetails"
     ng-class="{'grid-span-2': $index === 0}">
  My custom div
</div>

对应的CSS:

.grid-span-2 {
  grid-row: span 2;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:06:59