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
相关产品推荐
相关产品推荐

