我有一个带有2列和3行的CSS网格。由于使用了Angular ngif子句,第三行内容并不总是存在。一张跨越了前3行的图片出现在第一列中。尽管如此,在Chrome(80.0.3987.87,这是我发布时的最新稳定版)和Firefox中会得到2个不同的结果。
是否有一种方法可以控制行为,使其像Firefox一样,即当图像高度大于前两行高度之和时,第三行会增长。
.grid {
width:400px;
display:grid;
grid-template-columns: 40px 1fr;
grid-template-rows: minmax(0, auto) minmax(0, auto) minmax(0, 1fr);
}
.image {
width:40px;
height:100px;
grid-column:1;
grid-row:1 / span 3;
background-color: #f00;
}
.text1 {
grid-column:2;
grid-row:1;
}
.text2 {
grid-column:2;
grid-row:2;
}
<div class="grid">
<div class="image"></div>
<div class="text1">Text 1</div>
<div class="text2">Text 2</div>
</div>
这里是可以在Chrome和Firefox中检查的codepen。
下面是一张图片以展示差异:
如您所见,Chrome等比例地增加了行1和2的高度(行3保持为0),而Firefox仅增加了最后一个可见内容行即第二行的高度。
请注意,我尝试将grid-template-rows设置为 "minmax(0, auto) minmax(0, auto) 1fr",但是这时第三行会有奇怪的高度,使得网格的高度大于其内容。
更新: 啊!我能够在之前的Chrome版本(79)上尝试,这次我获得了与Firefox相同的结果。因此似乎80做了改变,这里有一些人能够确认吗?
grid-template-rows: minmax(0, auto) minmax(0, auto) 1fr;
看起来可以解决这个问题。 - Paulie_D