用 grid 实现完全自适应卡片布局的核心是 auto-fit(或 auto-fill)搭配 minmax() 和 fr 单位,使列数随容器宽度自动增减、卡片等宽伸缩、内容区域保持弹性;需配合 max-width、box-sizing、图片和文字样式优化,并可选 aspect-ratio 与 place-items 实现比例控制和居中。
用 grid 做完全自适应卡片布局,核心就是:用 auto-fit(或 auto-fill)搭配 minmax() 和 fr 单位,让列数随容器宽度自动增减,卡片等宽伸缩,内容区域保持弹性。
关键写法:
display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)))); gap: 1rem;
说明:
minmax(280px, 1fr) 表示每列最小 280px,最大占满剩余空间(即均分)auto-fit 会把所有“空的”重复轨道折叠掉,让实际列数紧贴内容宽度;auto-fill 则保留空轨道(适合需要占位或 JS 计算场景)minmax 的上限(即 1fr 分配完后不再加列)仅靠 grid 外层不够,卡片自身要配合才能真正“不溢出、不撑破”:
max-width: 100%,防止图片/文字强制拉宽box-sizing: border-box,避免 padding/margin 破坏网格计算width: 100%; height: auto;,文字用 word-break: break-word; 防止单词过长虽然 minmax(280px, 1fr) 已能应对多数情况,但极端小屏(如 iPhone 竖屏 375px)可能让卡片太挤。可微调:
280px 换成 min(280px, 100%),确保最小列宽不超过屏幕宽@media (max-width: 480px) { grid-template-columns: 1fr; }
额外断点——auto-fit + minmax 本身已足够智能想让卡片自带比例(如 4:3 封面图)、内容垂直水平居中?可以这样叠加:
aspect-ratio: 4 / 3;(现代浏览器支持),高度随宽度自动计算display: grid; place-items: center; 快速居中文本/图标overflow: hidden; 和 img { object-fit: cover; },保证图片不拉伸、不留白基本上就这些。不需要写一堆 media query,也不用 JS 计算列数——CSS Grid 的 auto-fit 和 minmax 组合,就是为这种弹性卡片而生的。