123问免费工具与知识服务
123问工具大全› 工具大全› 设计工具› Grid布局器

📐 Grid布局器

二维网格 · 实时预览 · fr单位

1
2
3
4
5
6

Grid布局器常见问题

Grid和Flexbox有什么区别?

Flexbox适合一维布局(单行或单列),Grid适合二维布局(行和列同时控制)。复杂页面布局首选Grid,组件排列首选Flexbox。两者可以组合使用。

grid-template-columns的fr单位是什么?

fr(fraction)是Grid专用的分数单位。例如1fr 2fr表示第二列是第一列宽度的两倍。fr让等分和比例分配变得非常简单,无需calc()。

如何创建响应式Grid?

使用repeat(auto-fill, minmax(200px, 1fr))可以在不写media query的情况下让列数随容器宽度自适应。列宽不足200px时自动换行。

gap和grid-gap有什么区别?

它们是同一个属性的新旧写法,grid-gap是早期命名,现在已统一为gap,同时作用于行和列。gap: 20px表示行列间距都是20px,gap: 20px 10px表示行间距20px、列间距10px。

怎么让Grid子元素跨列或跨行?

用grid-column和grid-row属性。grid-column: 1 / 3让元素从第1条网格线跨到第3条(占2列);grid-column: span 2表示跨2列。跨行同理用grid-row。这样可以做出不对称的混合布局。

place-items和justify-items有什么区别?

justify-items控制单元格内水平对齐,align-items控制垂直对齐,place-items是两者合写。例如place-items: center让所有子元素在各自单元格内水平和垂直都居中。它们的设置优先级会被子元素自己的justify-self/align-self覆盖。

grid-auto-flow是干什么的?

它决定没有明确指定位置时,子元素按什么顺序自动放入网格。默认是row(按行优先填充),改成column则按列填充,加dense可以让后面的元素回填前面留下的空格,减少视觉空洞。

Grid在浏览器里的兼容性怎么样?

现代浏览器(Chrome、Firefox、Safari、Edge)全部原生支持Grid,无需前缀。只有IE11需要加-ms-前缀且只支持旧语法,如今IE已经停服,基本可以放心全用标准Grid。

Grid布局器 - 示例演示

示例一:三列等宽布局

输入:列数:3,行数:2,间距:10px
结果:grid-template-columns: repeat(3, 1fr); grid-template-rows: repeat(2, 1fr); gap: 10px;
这是最常见的Grid用法,3列均分容器宽度,适合卡片列表、商品橱窗等场景。

示例二:响应式卡片网格

输入:列数:auto-fill,minmax(280px, 1fr)
结果:grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
无需写媒体查询即可实现自适应列数,卡片宽度不足280px时自动换行缩列。

示例三:Dashboard仪表盘布局

输入:grid-template-areas定义"header header header" "sidebar main main" "footer footer footer"
结果:grid-template-areas: "header header header" "sidebar main main" "footer footer footer";
用命名区域布局复杂页面,header占满顶部三列,sidebar和main并排在中间,footer占满底部。

Grid布局器深度解读

CSS Grid vs Flexbox 选择指南

Grid 和 Flexbox 是现代 CSS 布局的两大核心工具。简单来说:Flexbox 是一维布局工具,适合处理单行或单列中的元素排列;Grid 是二维布局工具,能同时控制行和列。

  • 用 Flexbox:导航栏、工具栏、垂直居中、卡片内元素排列、表单行内排列
  • 用 Grid:整体页面布局、卡片网格列表、Dashboard 仪表盘、图片画廊、表单网格布局
  • 两者可以混合使用:页面大结构用 Grid 定义区域,每个区域内的小组件用 Flexbox 排列
Grid 与 Flexbox 快速选型
需求推荐理由
整体页面布局Grid同时控制行和列
导航栏/工具栏Flexbox单行排列、间距可控
卡片网格列表Grid行列自动对齐、gap统一
组件内部排列/居中Flexbox一行代码搞定居中

grid-template-areas 命名布局

grid-template-areas 是 Grid 布局中最直观的方式,用命名字符串定义页面区域。每个引号内的字符串代表一行,空格分隔代表不同列。

grid-template-areas 示例
CSS 属性值对应含义
"header header header"第一行三列合并,区域名为 header
"nav main aside"第二行三列分开,分别为 nav/main/aside
"footer footer footer"第三行三列合并,区域名为 footer

用 grid-area 属性给每个子元素命名后,即可用 grid-template-areas 自由排列,无需调整 HTML 结构。

auto-fit 与 auto-fill 响应式差异

auto-fit 和 auto-fill 都配合 minmax() 使用,但它们处理空轨道的方式不同:

  • auto-fill:即使网格项不够,也会保留空的轨道空间(空白区域保留)
  • auto-fit:网格项不够时,空轨道会被折叠,剩余空间由现有项均分
  • 通常推荐用 auto-fit,因为它不会留下意料之外的空白区域
  • 格式:repeat(auto-fit, minmax(最小宽度, 1fr))
auto-fit vs auto-fill
属性空轨道处理视觉效果
auto-fill保留空轨道网格项不足时留下空白列
auto-fit折叠空轨道剩余空间均分给现有项,填满容器

Grid + Flexbox 混合布局策略

在实际项目中,Grid 和 Flexbox 往往一起使用:

  • 最外层用 Grid 划分页面区域(header、main、footer、sidebar)
  • header 内部用 Flexbox 排列 logo 和导航菜单
  • main 区域内用 Grid 排列卡片网格
  • 每个卡片内部用 Flexbox 排列图片、标题、描述和按钮
大Grid+小Flexbox分工
层级技术职责
最外层Grid划分 header/main/footer/sidebar
header 内Flexbox排列 logo + 导航菜单
main 内Grid排列卡片网格
卡片内部Flexbox排列图片/标题/按钮

这种"大 Grid + 小 Flexbox"的策略兼顾了二维布局的灵活性和一维对齐的便利性。

Grid布局器参考数据

Grid 常用属性速查

属性作用示例值
grid-template-columns定义列的宽度分布repeat(3, 1fr) / 200px 1fr 2fr
grid-template-rows定义行的高度分布100px auto / repeat(2, 1fr)
gap / grid-gap行列间距10px / 10px 20px(行间距 列间距)
grid-column子元素跨越的列span 2 / 1 / 3(从第1条线到第3条线)
grid-row子元素跨越的行span 2 / 1 / -1(到最后一根线)
grid-area子元素命名或定位header / 1/1/2/4(行起/列起/行终/列终)
justify-items水平对齐方式start / center / end / stretch
align-items垂直对齐方式start / center / end / stretch
place-items水平+垂直对齐简写center / start stretch

Grid vs Flexbox 对比

维度GridFlexbox
布局维度二维(行×列)一维(行或列)
核心概念网格线、网格区域、轨道主轴、交叉轴、弹性容器
等分空间fr 单位flex-grow / flex-basis
间距gap / row-gap / column-gapgap(较新浏览器)/ margin
换行无需换行概念,直接定义行列flex-wrap: wrap
对齐justify/align/place-items + contentjustify/align/place-content + items + self
最佳场景整体页面布局、复杂网格组件内部排列、导航栏、居中
兼容性所有现代浏览器所有现代浏览器(IE10+支持旧语法)

使用说明

使用方法

1. 设置列数和行数。

2. 调整gap间距。

3. 查看实时网格预览。

4. 复制生成的CSS代码。

分享工具: Facebook Twitter 微博 复制链接