使用grid-template-columns配合auto-fit可自动调整商品列数以适应不同屏幕。1. 基本语法为repeat(auto-fit, minmax(最小宽, 最大宽)),如minmax(200px, 1fr)确保每列不小于200px并均分剩余空间。2. 容器变窄时列数自动减少,避免压缩变形。3. auto-fit会拉伸现有列填满容器,而auto-fill保留空列,推荐商品列表使用auto-fit。4. 实际应用中,结合gap、padding等设置,可实现手机一列、平板多列、桌面更多列的响应式布局,无需媒体查询,代码简洁且易维护。

在CSS中制作响应式商品列表,grid-template-columns 配合 auto-fit 是一种简洁高效的方法。它能自动调整每行商品的数量,适应不同屏幕尺寸,无需媒体查询就能实现良好的布局效果。
基本语法与原理
auto-fit 用在 grid-template-columns 中时,会自动填充尽可能多的列,同时保持设定的最小宽度或固定宽度。浏览器会根据容器宽度动态计算可容纳的列数。
常用写法:
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 16px;
}
这段代码的意思是:创建一个网格,每列最小宽度为200px,最大为1fr(均分剩余空间),并自动适配列数。
立即学习“前端免费学习笔记(深入)”;
minmax() 的作用
minmax(200px, 1fr) 定义了每一列的宽度范围:
- 当容器足够宽时,所有列平均分配空间(1fr)
- 当空间不足时,每列不会小于200px,超出部分会被挤掉,列数自动减少
- 避免了元素被压缩变形或换行错乱的问题
实际应用示例
假设你要做一个电商商品展示列表:
.product-list {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
gap: 20px;
padding: 20px;
}
.product-item {
border: 1px solid #ddd;
border-radius: 8px;
overflow: hidden;
background: white;
}
在手机上可能只显示一列,在平板上两到三列,桌面端则显示四列以上,全部由浏览器自动完成。
auto-fit 与 auto-fill 的区别
两者相似,但行为略有不同:
- auto-fit:会把空的末尾列“收掉”,让现有列拉伸填满容器
- auto-fill:保留所有可能的列,即使为空,可能导致最后一行看起来不整齐
做商品列表时推荐使用 auto-fit,视觉更紧凑美观。
基本上就这些。用 repeat(auto-fit, minmax()) 能快速构建自适应网格,适合商品、卡片、图库等场景,代码少且维护简单。










