CSS Grid 生成器,免费

可视化构建 CSS Grid 布局 · 设置栏、行、间距与对齐方式,实时预览并复制 CSS。

Grid 属性

预览

生成的 CSS

使用方法

  1. 设置 Grid 尺寸:输入布局所需的列数和行数。
  2. 定义轨道:用 fr、像素、百分比、auto 或 minmax() 单位设置每列宽度和每行高度。
  3. 复制 CSS:生成的 display: grid、grid-template-columns、grid-template-rows 和 gap 属性可直接粘贴到您的样式表。

为什么使用 CSS Grid 生成器?

CSS Grid 是 CSS 中最强大的布局系统 , 能创建以前需要表格、浮动或 JavaScript 才能实现的复杂二维布局。但掌握 grid-template-columns、fr 单位、minmax()、repeat() 和命名区域需要练习。这款可视化生成器让您通过点击和拖拽构建任意 Grid 布局,并产出可直接使用的干净 CSS,或用作深入理解 Grid 的学习范例。

功能特性

常见问题

CSS Grid 中的「fr」单位是什么?

fr(fraction)单位按比例分配可用空间。在 3 列的 1fr 2fr 1fr 布局中,中间一列获得的空间是两侧的两倍。fr 单位会在固定尺寸轨道分配完之后再平分剩余空间。

不使用媒体查询如何创建响应式 Grid?

将 grid-template-columns 设为 repeat(auto-fill, minmax(200px, 1fr))。这会在满足最小宽度前提下尽可能多地创建列,并拉伸填满可用空间。当容器宽度变化时,项目会自动重新排列。

grid-template 与 grid-auto 有什么区别?

grid-template-columns/rows 定义您显式指定的轨道。grid-auto-columns/rows 定义隐式轨道的尺寸 , 即当项目溢出显式网格时自动创建的额外列和行。

CSS Grid 简史

在 CSS Grid 出现之前,Web 布局经历了三个痛苦的时代。基于表格的布局(1995-2008)滥用 <table> 元素来实现视觉结构,将 Photoshop 草图「切片」为 HTML 网格。基于浮动的布局(2008-2013)float 属性替代了表格,需要借助类似 Nicolas Gallagher 的 micro-clearfix(2011)这样的「clearfix」技巧来包含换行的子元素。Flexbox(CSS Flexible Box Layout Module Level 1,W3C 推荐标准 2018)解决了一维布局,但在真正的二维网格上表现吃力。CSS Grid 的故事始于微软在 Internet Explorer 10(2012)中的 -ms-grid 实现,这是一个为 W3C 规范提供参考的早期版本。CSS Grid Layout Module Level 1 的第一份 W3C 公开工作草案于 2011 年 4 月发布,但真正的势头来自 Rachel Andrew(她的著作《Get Ready for CSS Grid Layout》,2016)和 Jen Simmons(Mozilla 开发者倡导者,2016-2018 年的会议巡回)的推广工作。浏览器竞赛在 2017 年 3 月的一个引人注目的两个月窗口期内尘埃落定:Chrome 57、Firefox 52、Safari 10.1 和 Edge 16 都在几周内交付了无前缀的 Grid。W3C 在 2016 年 12 月将 Grid Level 1 标记为候选推荐标准最终的 W3C 推荐标准2020 年 8 月到来。Subgrid(Level 2)在 Firefox 71(2019 年 12 月)、Safari 16(2022 年 9 月)和 Chrome 117(2023 年 9 月)中推出。下一个前沿是提议的 Masonry 布局(CSS Working Group 2020 提案,Firefox 自 2021 年起在标志后开启)。

CSS Grid 的解剖结构

现实世界中的 Grid 模式

标准与里程碑

更多常见问题

我应该何时使用 Grid 而非 Flexbox?

社区的简捷说法:Flexbox 用于一维,Grid 用于二维。如果你在布局一排按钮或在单一方向对齐项目,Flexbox 更简单。如果你在设计带有必须对齐的行和列的整页布局,Grid 是正确的工具。许多真实布局结合两者:Grid 用于页面骨架,Flexbox 用于每个网格区域内组件级的对齐。现代框架(Tailwind、Bootstrap 5)拥抱这种模式。

CSS Grid 在旧浏览器中工作吗?

所有常青浏览器(Chrome、Firefox、Safari、Edge)自 2017 年 3 月起支持 Grid。Internet Explorer 11 只有早期的 -ms-grid 语法(子集,带前缀,缺少许多功能)。要支持 IE11,使用 @supports 查询回退到 Flexbox 或浮动布局。截至 2024 年,IE11 的全球使用率不到 0.5%,因此大多数团队已放弃回退方案。Caniuse.com 报告无前缀 Grid 的全球支持率超过 97%。

grid-template-areas 和 grid-area 有什么区别?

grid-template-areas 设置在网格容器上,并以视觉方式映射网格的命名区域(每行一个字符串)。grid-area 设置在网格项上,将其分配到这些命名区域之一。两者协同工作:容器声明「地图」,项目声明「我是区域 X」。你也可以直接使用带行号的 grid-areagrid-area: 1 / 1 / 3 / 4)而非名称,这对动态布局很有用。

什么是 subgrid,我应该何时使用它?

Subgrid 让嵌套的网格继承其父网格的轨道定义,而不是创建自己的。这解决了跨嵌套网格对齐项目的问题,例如内部布局必须与周围卡片对齐的卡片。在嵌套网格上使用 grid-template-columns: subgrid。可在 Firefox 71+(2019 年 12 月)、Safari 16+(2022 年 9 月)、Chrome 117+(2023 年 9 月)中使用。在不支持的浏览器中回退到常规嵌套网格。

Grid 如何与无障碍交互?

Grid 放置不会改变 DOM 源顺序:项目出现在你分配的视觉位置,但屏幕阅读器和键盘 Tab 顺序遵循源。WCAG 2.1 SC 1.3.2 有意义的序列要求源顺序在样式被剥离时仍然有意义。其含义是:首先为逻辑阅读顺序设计你的 DOM 源,然后使用 Grid 在视觉上放置项目。如果你用 grid-column: 3 / 5; grid-row: 2 大幅重新排序项目,请用屏幕阅读器审核,以确认朗读顺序仍然有意义。

相关工具

CSS 盒模型可视化工具,免费 CSS 多栏生成器,免费 CSS Flexbox 生成器,免费 CSS clip-path 生成器,免费