AI摘要

只需两行CSS代码,即可让页面元素自动适应各种屏幕宽度,无需复杂的媒体查询。通过`grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));`实现自动换行和宽度自适应。

两行代码就能适应任何屏幕

💡 只需两行 CSS,就能让你的卡片、图片、内容块自动适应各种屏幕宽度,彻底摆脱复杂的媒体查询!

演示动画

🧩 基础概念

需求场景

  • 一排展示很多卡片
  • 每个卡片最小宽度 200px,剩余空间平均分配
  • 屏幕变窄时自动换行

解决方案

只需在父元素加两行 CSS:

/* 父元素 */
.grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}

/* 子元素 */
.item {
  height: 200px;
  background-color: rgb(141, 141, 255);
  border-radius: 10px;
}

📖 原理解析

核心代码

grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));

1. grid-template-columns

定义网格容器里有多少列,以及每列的宽度。

2. repeat(auto-fit, ...)

  • repeat:重复函数,表示后面的模式会被重复多次
  • auto-fit:自动根据容器宽度,能放下几个就放几个
  • 容器宽度足够时,能多放就多放,放不下就自动换行

3. minmax(200px, 1fr)

  • minmax:每列最小 200px,最大可以占 1fr(剩余空间的平分)
  • 屏幕窄时最小宽度 200px,再窄就会换行
  • 屏幕宽时卡片自动拉伸,填满整行

效果总结

  • ✅ 自动适应各种屏幕,不需要媒体查询
  • ✅ 网格卡片最小 200px,最大自动填满一行
  • ✅ 布局永远美观

🔍 auto-fill vs auto-fit

auto-fill 和 auto-fit 有什么区别?

对比动画

auto-fill 特点

  • 尽可能多地填充列,即使没有内容也会"占位"
  • 自动创建尽可能多的列轨道(包括空轨道)
  • 适合需要"列对齐"或"固定网格数"的场景

auto-fit 特点

  • 自动适应内容,能合并多余空列,不占位
  • 自动"折叠"没有内容的轨道
  • 适合希望内容自适应填满整行的场景

直观对比

假设容器能容纳 10 个 200px 卡片,但你只放了 5 个:

  • auto-fill:保留 10 列宽度,5 个卡片在前五列,后面五列是"空轨道"
  • auto-fit:折叠掉后面五列,让这 5 个卡片拉伸填满整行

💻 示例代码

HTML 结构

<h2>auto-fill</h2>
<div class="grid-fill">
  <div>item1</div>
  <div>item2</div>
  <div>item3</div>
  <div>item4</div>
  <div>item5</div>
</div>

<h2>auto-fit</h2>
<div class="grid-fit">
  <div>item1</div>
  <div>item2</div>
  <div>item3</div>
  <div>item4</div>
  <div>item5</div>
</div>

CSS 样式

.grid-fill {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap: 16px;
  margin-bottom: 40px;
}

.grid-fit {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 16px;
}

.grid-fill div {
  background: #08f700;
}

.grid-fit div {
  background: #f7b500;
}

.grid-fill div,
.grid-fit div {
  padding: 24px;
  font-size: 18px;
  border-radius: 8px;
  text-align: center;
}

📊 兼容性

兼容性图表

现代浏览器支持良好,详情查看 caniuse.com

🎯 使用建议

什么时候用 auto-fit?

  • 希望每行"有多少内容就撑多宽"
  • 适合卡片式布局、相册、响应式按钮等

什么时候用 auto-fill?

  • 希望"固定列数/有占位"
  • 比如表格、日历,或者希望网格始终对齐,即使内容不满

📝 总结对比

属性空轨道内容拉伸适用场景
auto-fill保留固定列数、占位网格
auto-fit折叠流式布局、拉伸填充

🌟 核心要点

  • auto-fill 更像"占位"
  • auto-fit 更像"自适应"
  • 推荐大部分响应式卡片用 auto-fit
  • 善用 minmax 配合,让列宽自适应得更自然
只需两行代码,你的页面就能优雅适配各种屏幕!
最后修改:2025 年 09 月 16 日
如果觉得我的文章对你有用,请随意赞赏