CSS响应式网格布局:网格-列跨度破坏最小值

时间:2018-10-30 15:27:16

标签: css css3 css-grid

我有一个简洁的响应式网格,如下所示:

grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));

这将使每个网格项目的宽度至少为200px。其中一项(红色的一项)的宽度是其两倍,如下所示:

grid-column-end: span 2;

到目前为止很好!

grid works fine on large screens

现在,当我将尺寸调整为较小的宽度时,红色项将网格强制为两列。即使我将最小宽度指定为200px,这也给了我一个奇怪的小列。看:

grid breaks at small screens

我真的希望红色项折叠成一列,以使网格不会破裂。

但是问题是,我不知道整个网格的宽度,所以我不能使用以特定视口大小触发的mediaquery。

是否有一种方法可以将红色项目强制为一列,或者以另一种方式解决该问题来定义网格列?

1 个答案:

答案 0 :(得分:0)

在使用网格时,您需要记住尺寸和一些数学运算。 如果您要告诉某个项目跨越2列,则意味着您始终希望网格中至少有2列,如果屏幕变小,它将不会变成1列网格。 现在,您的网格的最小宽度为400px。

对于该奇怪大小的列,您有2列,而第2列的宽度最小为200px,之后的项目则保留该奇怪的大小。

您可以在该断点处编写媒体查询,以告诉您的商品1停留在第1列中,并且应该对其进行修复。

@media screen and (max-width:415px){
.item1 {
grid-column: 1;
background:red;
}
}

查看我在此处链接的Codepen

see on Codepen