使用 grid-template-columns: repeat(auto-fit, minmax(600px, 1fr))
可以轻松构建响应式CSS网格 . 容器将填充适合行的任意数量的元素,而不使用媒体查询 .
.container {
display: grid;
grid-gap: 5px;
grid-template-columns: repeat(auto-fit, minmax(400px, 1fr));
}
.item {
height: 100px;
background: #ccc;
}
<div class="container">
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
<div class="item"></div>
</div>
问题是当屏幕小于 minmax()
中指定的最小值时,项目比屏幕宽 . 您可以通过在 400px
添加媒体查询来解决此问题,但这仅在您知道容器可以放置在任何位置时几乎不可能的情况下才有效 .
Is there a way or property to tell the items that they should never be wider than 100%?
类似于:用尽可能多的400px物品填充容器,但要确保它们的宽度不超过容器宽度的100% .
2 回答
您应该将
grid-template-columns
更改为grid-template-columns: repeat(auto-fit, minmax(min-content, 400px))
因为minmax
以这种方式工作:它尝试应用最大值,如果失败则应用最小值 . 但是在这里,您可以在右侧的网格中获得空白 . 演示:为此,您可以使用“max-content”属性,在您的示例中,这将是: