移动端商品网格需用minmax(auto,1fr)实现列数弹性,配合媒体查询增大gap和调整padding,并通过align-items:start与min-height统一项高,消除拥挤与台阶感。

商品网格在移动端变密集,核心是列数没随屏幕缩小而减少,同时间距未动态调整。用 minmax() 配合媒体查询,能兼顾弹性布局与精准控制,不靠 JS 也能让网格呼吸感十足。
用 minmax(auto, 1fr) 控制单列最小宽度
避免小屏下强行塞多列导致内容挤压。比如设每列最小 280px(适配多数手机竖屏),超过就自动换行:
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr))这样在 375px 宽的 iPhone 上只显示 1 列,414px 可能撑出 1 列(留白)或仍为 1 列,取决于内容与 padding;到平板(如 768px)自然变成 2 列——无需写死断点,更健壮。
用媒体查询统一调大移动端间距
minmax 解决列数,但 gap 默认值在小屏下常显得局促。建议在移动断点内显式增大 gap,并同步缩放内边距:
立即学习“前端免费学习笔记(深入)”;
- @media (max-width: 767px) { .goods-grid { gap: 16px; } .goods-item { padding: 12px; } }
- gap 推荐用 12–16px(比桌面端的 8–10px 翻倍),避免卡片“粘连”
- padding 缩小可选,但别归零;保留 8–12px 让文字和按钮有呼吸空间
图片与文字高度不一致?加 align-items + min-height
商品图尺寸不一、标题行数不同,会导致网格“台阶感”。仅靠 gap 不够,需约束基线对齐:
- .goods-grid { align-items: start; } —— 避免底部参差
- 给商品项设 min-height: 240px(按典型图文组合估算),再配合 display: flex; flex-direction: column; 让内容自上而下排列
- 图片用 object-fit: cover; height: 140px; 统一视觉高度
基本上就这些。minmax 负责“列数弹性”,媒体查询负责“间距与容器节奏”,再加上一点对齐和高度约束,移动端商品网格就不再拥挤,也不失信息密度。










