写给设计师的 Ant Design 栅格指南 · 语雀 - 图1写给设计师的 Ant Design 栅格指南
登录快速注册查看原始文档

写给设计师的 Ant Design 栅格指南

本文适合新手设计师以及不知道如何使用 Ant Design 栅格系统的设计者来阅读
全文阅读时长约 10 分钟


关于栅格系统的 5 个基础概念

1. 网格 | Grid

网格是构成页面栅格系统的最小单位。
在 Ant Design 的设计体系中,我们用 8 作为网格的最小基数,在保证偶数的思路同时能够匹配多数主流的显示设备,最大程度避免出现半像素的情况。(更多可参考 8-Point Grid

  1. ![](https://www.yuque.com/attachments/yuque/0/2021//465193/1612586901913-27d2f74d-0f78-4838-9823-91535a9ec130.#height=842&width=1492) <br />(栅格最小单位)

2. 栅格宽度 | Container

栅格宽度是页面栅格系统的总宽度。
在这里要注意一点,为了方便设计师在日常设计环境中的理解,这里的 Container 可以理解为是设计可见区域的总宽度。

  1. ![](https://www.yuque.com/attachments/yuque/0/2021//465193/1612586901968-e5480099-dccf-4865-8645-93cca39c2567.#height=880&width=1492) <br />(栅格总宽度)

3. 列和槽 | Column&Gutter

列(Column)

列是栅格的数量单位,当界面设定好总宽度后纵向等分成几列,比如 Ant Design 采用的 24 栅格就是有 24 列。
一列中包含了列宽(Column Width)以及(Gutter)两部分。

槽(Gutter)

槽是相邻两个列宽之间的间隔,通过设定列的左右内边距(padding)来决定槽的大小,列减去槽的部分为列宽。
槽用来规范页面中内容间的间距,槽的值越大,页面中留白部分的面积越多,视觉效果越松散;反之,页面越紧凑。槽通常设为定值。

  1. ![](https://www.yuque.com/attachments/yuque/0/2021//465193/1612586902034-579373f0-5596-421e-a47d-1fefed544f99.#height=870&width=1492) <br />(列、列宽以及槽)

4. 边距 | Margin

边距是栅格外边距,与屏宽保持合适的安全距离,让界面左右能保证可读性和美观度。

  1. ![](https://www.yuque.com/attachments/yuque/0/2021//465193/1612586902099-a81787d7-a6d4-4b45-80d6-cae05c21a21d.#height=880&width=1492) <br />(上下布局的安全边距示例)

5. 区块 | Col-n

建立好基础栅格之后,一块内容通常会占用几个列,我们把这个区域理解为内容区块,用于承载一个区域的内容。
划重点:区块从水槽开始到水槽结束

  1. ![](https://www.yuque.com/attachments/yuque/0/2021//465193/1612586902170-1dc8c88a-a5a6-459a-9450-33053045b420.#height=746&width=1492) <br />(示例为24栅格中,区块内容占据8、6以及4栅格的布局)

3 步上手 Ant Design 的栅格系统

1. 确定栅格可见区域宽度&安全边距

当我们开始着手做一个界面时,首先应考虑在多大的尺寸范围内做设计,也就是确定栅格可见区域的总宽度(Container)。
基于 Ant Design 的画板规范以及 UI 模度的概念,我们在设计中主要有以下两种常用布局宽度:

上下布局

栅格可见区域总宽度(Container):1152px
安全边距(Margin):32px
写给设计师的 Ant Design 栅格指南 · 语雀 - 图2

左右布局

栅格可见区域总宽度(Container):1136px
安全边距(Margin):24px
写给设计师的 Ant Design 栅格指南 · 语雀 - 图3

2. 确定列与槽的定值

常见的栅格系统通常被划分为 12 栅格或 24 栅格,划分的格子越多,承载的内容越精细。通常,在信息繁杂的中后台系统常用 24 栅格,而一些商业网站、门户网站通常划分成 12 栅格。

我们会给槽设定一个定值,用来确定列宽的大小。在 Ant Design 系统中,我们对 Gutter 数值的设定以 8 为基数,如16px,24px,32px…
Tips:

  • 槽的数值越大,页面留白间隙越多;
  • 槽的区域不可以放置内容,内容区从水槽开始到水槽结束


3. 计算公式

在 Antd Design 的栅格体系中,我们定义栅格可见区域的总宽度为 C(Container),列数为n。
可得到一个简单的栅格公式:

C(Container)=列(Column)*N-槽(Gutter)

  1. ![](https://www.yuque.com/attachments/yuque/0/2021//465193/1612586902351-186225d0-4036-418e-ab61-81b4feed66a0.#height=793&width=1492) <br />(左右两块为两边各多余出来的半个 Gutter,合计一个 Gutter)

举个例子

以 Antd Design 的标准上下布局栅格为例:
默认的画板为1440px 的屏宽,首先确定内容区宽度为1152px,使用 24 列栅格,槽的定值为 24px
那么可以得出:
1152px(可见区域总宽度)=列*24-24px(1个 Gutter),从而得出列为 49px,列宽为 25px(列-槽)。

附:sketch 栅格工具

目前,很多设计软件提供自动栅格设置功能,sketch也提供这样的功能:Layout Settings
写给设计师的 Ant Design 栅格指南 · 语雀 - 图4

  • 总宽:相当于 Container,是设计可见区域的总宽度。
  • 偏置:表示栅格的起始位置。
  • 列数:表示栅格的数量。
  • 外围间距:取消勾选。与前端沟通时注意说明总宽为设计可见区域的宽度。
  • 间距宽度:槽的值,通常是定值。
  • 列宽:栅格内单个可放置内容区的宽度。

栅格布局在项目中的实践

Ant Design Pro - dashboard 写给设计师的 Ant Design 栅格指南 · 语雀 - 图5

Ant Design Pro - Profile
写给设计师的 Ant Design 栅格指南 · 语雀 - 图6

语雀 - 团队首页
写给设计师的 Ant Design 栅格指南 · 语雀 - 图7

若有收获,就赏束稻谷吧

441 颗稻谷
莘羽
06-12 15:05
6858
28
投诉

28 条回复

  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图8
    Roc04-22 18:03
    写的挺好 谢谢啦!
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图9
    莘羽04-22 18:56
    回复 @Roc回到原评论
    写给设计师的 Ant Design 栅格指南 · 语雀 - 图10
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图11
    Sun Jia 遠紙04-22 21:32
    Antd Design 的栅格体系中,我们定义栅格可见区域的总宽度为 C(Container),列数为n。
    可得到一个简单的栅格公式:
    C(Container)=列宽(Column Width)*N-槽(Gutter)
    以 Antd Design 的标准上下布局栅格为例:
    默认的画板为1440px 的屏宽,首先确定内容区宽度为1152px,使用 24 列栅格,槽的定值为 24px
    那么可以得出:
    1152px(可见区域总宽度)=列宽24-24px(1个 Gutter),从而得出列宽为 24px
    ————————————————————————————————————————————
    1、这里 列宽(Column Width) 和 列的宽度(Width of Column) 写乱咯。根据上文,列=列宽+槽;
    公式里应该是 C=列
    N-槽。写列宽是有歧义的。
    2、1152px=列24-24px,列=49px,列宽=25px。这里是有问题的。
    在sketch里勾选上 Gutter on outside(图中的「外围间距」) 才是 24px,而此时公式是 C=列
    N。
    所以这段需要统一下哦。
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图12
    Sun Jia 遠紙04-22 21:42
    另外,基本概念中关于 Margin 的定义:Container100%显示下的的窗口宽度=Margin*2+Container,所以「上下布局」一节中,32px 的 Margin 值一图中不建议标注 屏宽1440px。因为此处不受窗口宽度影响。

p.s. 文章讲的很详细,感谢~写给设计师的 Ant Design 栅格指南 · 语雀 - 图13

  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图14
    莘羽04-22 22:45
    回复 @Sun Jia 遠紙回到原评论

    根据上文,列=列宽+槽; 公式里应该是 C=列*N-槽。写列宽是有歧义的。

  • 这块是写失误了,应该是列,感谢指正~

    在sketch里勾选上 Gutter on outside(图中的「外围间距」) 才是 24px,而此时公式是 C=列*N。 所以这段需要统一下哦。

  • 按前端的定义是应该勾选上 gutter on outside,我们这里主推的公式主要是方便设计师在做界面过程中更直观的理解~所以一般不勾选这个选项,但在交接时会跟前端做说明。

  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图15
    Sun Jia 遠紙04-23 08:30
    回复 @莘羽回到原评论

    按前端的定义是应该勾选上 gutter on outside,我们这里主推的公式主要是方便设计师在做界面过程中更直观的理解~所以一般不勾选这个选项,但在交接时会跟前端做说明。

  • 是哒,所以这里不是 24px 而是 25px

  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图16
    莘羽04-23 11:25
    回复 @Sun Jia 遠紙回到原评论
    写给设计师的 Ant Design 栅格指南 · 语雀 - 图17我是数学渣渣的设计师。。。。。
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图18
    Sun Jia 遠紙04-23 13:44
    回复 @莘羽回到原评论
    看了你的文章对栅格系统理解更系统啦,很棒~写给设计师的 Ant Design 栅格指南 · 语雀 - 图19
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图20
    UI_阿曼04-25 10:43
    问一个问题 如果设置列款为24px,槽宽度为25px,那元素与元素之前的间距岂不是成了25px,但是规范间距都是8的倍数,一般都是24px,那这样会不会不统一。
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图21
    UI_阿曼04-25 10:52
    还有一个小问题 antdedign在左右布局的时候,左边栏是固定256px,然后对中心1136px做删格处理。但是有些时候由于产品业务原因,左边栏不需要做这么宽,想做成240px或者220px,那么这时候又是如何对于中心做删格处理的。
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图22
    莘羽04-25 11:55
    回复 @UI_阿曼回到原评论

    问一个问题 如果设置列款为24px,槽宽度为25px,那元素与元素之前的间距岂不是成了25px,但是规范间距都是8的倍数,一般都是24px,那这样会不会不统一。

  • 所以我们一般将槽的值设置为定值(8的倍数),因为随着屏幕尺寸的变化,列的宽度是不可控的~

    还有一个小问题 antdedign在左右布局的时候,左边栏是固定256px,然后对中心1136px做删格处理。但是有些时候由于产品业务原因,左边栏不需要做这么宽,想做成240px或者220px,那么这时候又是如何对于中心做删格处理的。

  • 左右布局的示例只是我们基于antd规范给的一个基本模板,左侧侧边栏的宽度是可以依据实际业务场景来自由定制的,可见设计区域的宽度可以通过 总画板宽度(1440)- 侧边栏宽度(自定制)-最小安全距离(margin)*2 来确定

  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图23
    fengmk2❤️04-27 22:53
    毛阿姨竟然也会写技术分享!写给设计师的 Ant Design 栅格指南 · 语雀 - 图24
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图25
    酒夏 .04-27 23:36
    非常棒~
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图26
    林外04-28 13:54
    回复 @fengmk2❤️回到原评论
    来自毛毛的白眼
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图27
    cc04-29 18:27
    回复 @Roc回到原评论
    sdfsdaf
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图28
    cc04-29 18:27
    回复 @cc回到原评论
    hhhh
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图29
    汤军05-07 13:09
    整的明白!
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图30
    风吹幡动05-14 14:15
    写的不错,很有收获写给设计师的 Ant Design 栅格指南 · 语雀 - 图31
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图32
    刘小good05-17 14:22
    “首先确定内容区宽度为1152px”,这个是可以自己定的吗,为什么这么有整有零
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图33
    莘羽05-17 17:19
    回复 @刘小good回到原评论
    这个内容区的宽度是可以按你的业务需求定的,antd中根据布局上的黄金比选了横向1152px作为基础的内容区宽度
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图34
    lrrrr05-30 12:48
    很感谢这篇文章,总算明白栅格怎么使用。
    另外想请教,横向的栅格如何制定?
    sketch里的布局工具的“行”的“行高”只能是整数倍的“间距高度”,如果我要与纵列的栅格统一“槽”和“行宽”,是否只能手动绘制了?

  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图35
    莘羽06-04 11:55
    回复 @lrrrr回到原评论
    横向的栅格一般是在设计组件的高度尺寸时直接定制了,在 Ant Design 中,我们的组件高度都以8的倍数为韵律递增。

  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图36
    RETHINKAIZHABITS06-05 15:26
    写给设计师的 Ant Design 栅格指南 · 语雀 - 图37
    根据算出来的结果,这里的设置应该是槽 宽度是 24 列宽是25
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图38
    莘羽06-06 11:19
    回复 @RETHINKAIZHABITS回到原评论
    是呀,这个有什么问题么?
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图39
    RETHINKAIZHABITS06-06 11:56
    回复 @莘羽回到原评论
    我看图上设置的数字是反的,看了提供的模板里设置的栅格也是反的,疑问是故意这么设置的吗?
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图40
    莘羽06-12 15:01
    回复 @RETHINKAIZHABITS回到原评论
    写给设计师的 Ant Design 栅格指南 · 语雀 - 图41 啊。。。我的错,写反了
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图42
    墨刃07-10 17:05
    写给设计师的 Ant Design 栅格指南 · 语雀 - 图43
  • 写给设计师的 Ant Design 栅格指南 · 语雀 - 图44
    RETHINKAIZHABITS08-10 11:37
    写给设计师的 Ant Design 栅格指南 · 语雀 - 图45
    这部分的安全边距为什么要定位32呢?有什么特殊依据吗?个人在平时设计中页面总宽是1440,内容可视区域一般定为1200,而为了适用栅格内容可视区域定为1152,这样算安全区域应该是24,这样就能保证在1200内

注册登录 语雀进行评论
发现帮助中心更新日志数据安全关于我们服务协议反馈English