使用 grid-template-columns 配合 repeat(auto-fit, minmax(200px, 1fr)) 可创建智能响应式网格,容器宽度变化时自动调整列数并均分空间,适合卡片、图库等布局,无需媒体查询即可实现自适应效果。

使用 CSS 的 grid-template-columns 配合 repeat() 和 auto-fit,可以轻松创建响应式网格布局。当容器宽度变化时,网格项会自动换行或拉伸,始终保持合适的列数。
基本语法结构
auto-fit 会自动调整列的数量,把空的多余轨道“折叠”掉,并尽可能扩展已有项目(前提是允许拉伸)。
常用写法:.container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
这表示:创建尽可能多的列,每列最小 200px,最大为 1fr(均分剩余空间)。
关键参数说明
理解以下几个部分对掌握 auto-fit 很重要:
立即学习“前端免费学习笔记(深入)”;
- repeat(auto-fit, ...):让浏览器自动决定放多少列
- minmax(200px, 1fr):每列最小 200px,最大 1fr(可扩展)
- 当容器太窄容不下新列时,自动换行成新的一行
- 与 auto-fill 不同的是,auto-fit 会合并未使用的空轨道
实际应用场景
适合用于卡片布局、图库、产品列表等需要自适应的场景。
.gallery {
display: grid;
gap: 16px;
grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
}
在手机上可能只显示一两列,在桌面则铺满更多列,无需媒体查询也能实现响应式。
注意事项
使用 auto-fit 时注意以下几点:
- 确保父容器有明确宽度,否则可能无法正确计算
- 设置 min-width 或 minmax() 中的最小值,防止列过窄
- 若子元素设置了固定宽度且不灵活,auto-fit 效果可能不如预期
- 搭配 1fr 使用才能让列均匀拉伸填满空间
基本上就这些。auto-fit 让网格更智能,减少响应式代码量,是现代 CSS 布局中的实用技巧。不复杂但容易忽略细节。










