vlambda博客
学习文章列表

如何使用栅格化系统构建响应式设计


栅格系统可以帮助我们设计,但却不能保证我们的设计。它有多种可能的用途,并且每个设计师都可以寻找适合其个人风格的解决方案。但是必须学习如何使用网格。这是一门需要实践的艺术

——Josef Müller-Brockmann


目录:


01.栅格系统的作用

02.栅格系统的优势

03.栅格系统的构成

04.响应式设计

05.如何建立栅格系统

06.如何做到响应式

07.面板对栅格系统的影响

08.总结



01.栅格系统的作用


栅格系统可以让设计师依靠秩序与逻辑去完成设计


02.栅格系统的优势


1. 减少设计决策成本,提高阅读效率和认知速度

让页面设计变得有规律,从而减少了设计决策成本;

熟练运用网格系统能够让设计更加有秩序和节奏感,页面信息的展现更加清晰,提高阅读效率,从而提供给用户舒适的使用体验。加快认知速度。


2.响应化设计

使用产品时,人们通常会在多个设备之间切换,以完成该产品的单个任务,并没有固定尺寸。所以响应式设计是必要的。

使用网格可以跨不同屏幕尺寸的多个设备创建连贯的体验。


3. 加速团队协作设计

多设计师协作时,统一标准就变得尤为重要。

网格系统有助于分工协作,多位设计师可以在统一的布局下进行不同部分工作,并且无缝集成并保持连贯。


4. 加速开发并保证视觉还原

栅格化提高了页面布局的一致性和复用性;避免了设计师与开发者在细节上的反复沟通确认,从而提升了整个设计开发流程的效率、并能帮助开发者实现较为理想的设计还原。


03.栅格系统的构成




1.列和槽(Columns and Gutters)

  • 列是内容的容器,槽是相邻2个列的间距,把控页面留白

  • 列+槽+页边距=屏幕宽度

  • 内容区域=N个列 + N-1个槽

  • 通常web端采用12列,平板8列,手机4列,也可以根据项目特点来设计网格系统

  • 列和槽可以利用8点网格系统来定义

  • 列的数量越多,页面就会被分割越碎,页面设计时越难把控,适用于业务信息量大、信息分组较多、单个box内信息体积小的页面设计。反之则设计相对轻松简单


2.页面边距(Side Margins)

·页面边距就是内容区域以外的空间

·页面边距在移动设备上通常是 12Px到 40Px 之间


3.模块(Field Elements)

模块就是你的设计区块,可以是一段文字,一张图片,或其他更加元素。

背景元素并不能算作是设计模块,所以并不需要遵循栅格系统。模块的定义是很灵活的,它可以是个小的单位或是元素,也可以是一个元素丰富的区块。


4.8点网格(8pt spatial system)

  • 目前主流桌面设备的屏幕分辨率在竖直与水平方向基本都可以被 8 整除,使用 8 作为最小原子足够普适。

  • 在网格系统中应该更加注重的是间距,而间距要遵循网格系统(例如使用 4、8、16、24、32 等和 8 具有规律的数字)同时在产品中的各类元素也要遵循这类原则(例如图标大小、组件大小等)。

  • 开发工程师使用的前端开源组件库比如 Metronic、Antdesign 等也是基于 8 的原子单位来设计,因此如果设计师也使用以 8 为基本单位的栅格系统,开发与设计师相互对接就会更加方便,开发实现页面时也能更高品质地去还原我们的设计。

如何使用栅格化系统构建响应式设计


5.基线网格(Baseline Grid)

基线网格由密集的水平行组成,这些行提供文本的对齐和间距准则

如何使用栅格化系统构建响应式设计

将所有行高设置为基本单位(8x 或 4px)的增量非常重要,这样文本才能与基线网格完美对齐。

如何使用栅格化系统构建响应式设计




04.响应式设计



1.什么是响应式设计

设计师需要通过设计让内容在不同的平台上体验最大化,确保让用户在任何一个屏幕上看到内容的时候,会觉得这些内容就是为这个平台而设计的,而不是单纯的缩放而来。这种无缝的体验,才是跨屏幕设计的真正难点所在。


2.响应式设计的核心步骤

·确保核心的用户体验,围绕核心功能去设计

举个例子,Uber 的核心用户体验是随时随地叫车,无论设备的屏幕大小如何,你进行的设计全部都应该围绕着这个需求和功能来进行。叫车是 Uber 的核心功能,即使使用 Apple Watch 这种极小的屏幕尺寸都应该顺利地完成这个任务。

·敲定你的产品所覆盖的设备类型

比如说,在手机上,用户更加倾向于使用轻量级的任务,并且进行一定量的沟通和交流。在平板上,用户行为更多集中在内容消费上,并且目前平板的使用量被认为在逐步降低。桌面端依然是用户完成较为专业、复杂任务的首选平台,足以应付复杂多样的内容。了解各种设备类型和使用场景是用来构建用户体验的关键。

·针对不同内容来匹配用户体验

以 Evernote 为例,它可以在多种不同类型的设备之间同步和切换,其桌面端版本就针对用户的内容需求进行了优化:Evernote 的桌面端应用程序针对阅读性的内容和多媒体进行了优化,而移动端的 Evernote 则强化了拍摄记录、图片和音频记录的功能:其次,不同的设备屏幕具备不同的输入方式,设计师如果忽略输入方式上的独特性,也常常会出现许多问题,这里就不扩展开来了。

·优先为最小的屏幕做设计

在进行桌面端设计的时候,我们常常会遭遇「厨房水槽」困境:由于产品通常会牵涉到多个利益相关方,许多多余的功能会被加入进来。而实践经验表明,移动端优先的设计往往能够更好的专注于核心功能,更适合作为产品设计的起点。当你优先设计最小屏幕所需要的界面的时候,这种局面会强制你从最关键最重要的地方开始设计。这也是之前设计圈和产品开发领域一直所强调的「移动端优先」的策略的由来。在此之后,再进行平板、桌面和电视端的设计,就是一个自然地做加法的过程了。在绝大多数的案例当中,最小屏幕通常是手机屏幕。

·测试你的设计

产品的测试环境并不一定都得是在现实世界中寻找,但是在尽可能让真实的用户来做可用性测试,并且在产品发布之前解决所有的用户体验上的问题。


3. 为何要利用栅格系统来进行响应式设计?

响应式可以响应的前提有两点:1、页面布局具有规律性、2、元素宽高可用百分比代替固定数值,而这两点正是栅格系统本身就具有的典型特点,所以利用栅格系统进行响应式的设计是顺理成章的,也比较高效快捷,所以响应式与栅格化天生一对好搭档。


05.如何建立栅格系统


1.确定列的数量

第一阶段先不要限制自己的列数。首先,创建一个低保真或高保真的原型。设计一些基本元素和用户流程。在此之后,就开始设计最优的列数和大小。如果在项目开始设计之后不得不改变我们的栅格系统,不要有负担,我们需要有一些试错的空间。

我们在设计页面时,用到最多的布局方式就是等分布局,即页面内容区域被 N 等分,每一份的宽度则根据屏幕宽度自适应调整。那么就从这个角度出发,思考一下页面的网格应该设置为多少列,才能最大程度的满足各种等分布局的需要。与 web 类似,移动端最方便的网格之一是 12 列网格。这个网格将允许我们在一行中同时放置偶数和奇数个元素。

界面设计通常包含数百个不同的页面,因此,一个网格可能不适合所有的页面。如果需要,创建额外的栅格系统,但不要忘记设计的一致性。网格系统的一致性:相同的布局边距、列之间相等或成比例的水槽,以及更改列本身的宽度时其他模块也需要保持相同的比例。

如何使用栅格化系统构建响应式设计



第2步:定义水槽和边距

目前,Android 和 ios 的最小推荐布局边距为 16pt。web 端则依照屏幕尺寸不同而不同。这意味着,如果你希望遵循系统指南,则页面边距不应小于 16pt。(但可以更大的)

在选择 12 列网格时,列之间的水槽不应该太大,因为由于列的宽度小和它们之间的大宽度的水槽,列将在视觉上产生分裂的感觉。同时我建议你选择与8pt 间距系统成比例的水槽大小。


第3步:定义8pt间距系统

了帮助不同设计能力的设计者们在界面布局上的一致性和韵律感,统一设计到开发的布局语言,减少还原损耗。在大量的实践中,我们提取了一组可以用于 UI 布局空间决策的数组,他们都保持了 8 倍数的原则、具备动态的韵律感。经过验证,可以在一定程度上帮助我们更快更好地实现布局空间上的设计决策。定义网格系统方法很多,如运用 8 点网格系统、斐波那契数列、某最小原子单位的增量、从底层系统参数化定义间距等,我们以最小原子单位的增量为例去定义网格系统。最小单元格的数值选择需要从两方面考虑:

  • 一方面是该数值是否能被大多数手机屏幕的宽度整除,即广泛的适用性;

  • 另一方面是在具体使用时是否具有一定的灵活性。

在适用性方面,4、6、8、10 这四个数值都是基本可以满足的,在灵活性方面,4px 表现最佳,但是页面就会被分割的非常细碎,在设计时比较难于把控。因此我们需要根据 APP 的实际情况选择合适的数值,4px 或 6px 单元格比较适合页面内容信息较多,布局排版比较复杂的产品。而 8px 单元格对一般的设计场景都可以很好的满足,比较适合大多数的 项目,因此是比较推荐使用的。

如何使用栅格化系统构建响应式设计

那么假设我们以 8 为基准的去延展系统间距,得到如下间距系统:

1、2、8、16、24、32、40、48、56、64、72、80、88、96、192 等,这里都是 8 的倍数或能被 8 整除

但是目前间距数量太多,过于细碎也会导致间距比较乱,所以我们继续优化梳理(以 6 为基准,前面个数是后面个数的 2 倍递增),得到以下间距系统:

1、2、8、16、24、32、48、64、80、96


第4步:sketch布局设置

利用 sketch 的布局设置功能,即可快速搭建出网格系统的参考布局,在平时做设计的过程中,可以经常使用 Ctrl+L 快捷键切换布局的显示,提高设计效率。

如何使用栅格化系统构建响应式设计


06.如何做到响应式


在传统的栅格化系统设计中,列的宽度和水槽的宽度是保持不变的,只是列的「数量」发生变化。为什么要这么处理呢?这是为了让设计更简单。如果一组三张卡片分别放在桌面的四列上,那么在平板电脑上,会显示两张卡片,并把第三张卡片进行折行显示在第二行上。不需要做任何的调整,因为已经知道它位于第四列上了。在手机上,答案也很简单,只需要一张卡片,其他的就会自动堆到下面的行中。但是目前我有更多的响应策略,例如当视窗(Viewport)发生变化时,内容区域的元素如何去响应,具体到我们当前的栅格系统,就是 Columns、Gutters、Margins 以及由 Columns 跟 Gutter 组成的盒子(BOX)四者的值(主要是宽度)如何变化,以及在这种变化之下我们页面的布局如何调整。

1. 固定栅格或是断点系统(Fixed boxes or breakpoint system)

如果开发那边写了一个固定栅格,当你从桌面缩小到平板电脑,就像是在桌面的浏览器宽度时,你不会看到任何变化,设计就像是被剪掉了一样。但当达到平板屏幕尺寸临界点时,设计布局马上就会改变,平板电脑上的显示效果就会好起来。如果继续减小这个值,同样的事情也会发生,在到达另一个临界值之前,设计看起来都是不变的。下面是常见的断点系统(Breakpoint System)

如何使用栅格化系统构建响应式设计

如图,响应式是以视窗的最小宽度作为基本依据来制定每种宽度下 Columns、Gutters、与 Margins 的响应策略,也就是说 Viewport Min-width 是做出响应的触发条件,视窗每达到一个最小宽度,就会触发该宽度下预设的页面布局方式,而每种布局都是在该宽度下的最佳布局,也是因此,响应式才会在各种复杂分辨率条件下都能给用户比较好的体验。
每个视窗宽度的最小值是触发响应的关键值,因此我们给这些用于触发的关键值起了个名字叫「Breakpoint」,每个 Breakpoint 触发一种响应策略

如何使用栅格化系统构建响应式设计


2. 流动栅格(Fluid Grid

流动栅格系统是编辑内容,仪表板,图像,视频,数据可视化等理想的响应策略。当窗口缩小时,内容将动态地发生变化,文本会进行换行,元素也会变窄。然而,这些元素在内容宽度缩小到下一个临界值之前,布局是不会变化的。在各种情况下,对用户来说,扩展内容的大小比扩展可见内容的数量更有用。

所以我想说的是,断点 BreakPoint 只是一个更改布局的参考点。这就是为什么列宽和水槽的数量不会改变的原因,因为我们想让设计师在考虑布局时能够更容易地创建一致性。内容宽度会随着窗口的缩放而发生改变,例如图片会缩小,文本会换行。水槽的宽度不一定是固定的,可以随着页面宽度变化。

在每个断点处,列计数是固定的,列宽度是最小网格 8PT 的倍数。行高是列大小的倍数,遵循推荐的纵横比。边距和填充是小单位的固定倍数。在断点之间,实际列宽是网格区域的百分比,而不是一个小的单位倍数。内容尺度流畅。

首先从所以屏幕大小中选择一个基本尺寸,然后按照推荐的纵横比以基本大小的倍数构建每个响应式尺寸。当每个块使用相同基础大小的倍数时,就会出现网格。遵循此方法可确保栅格系统一致性,甚至跨产品的一致性。

如何使用栅格化系统构建响应式设计



3. 混合栅格(Hybrid Boxes)

在实际项目中,使用流动网格和固定网格的组合也是常见的做法。网站通常是流动网格,因为它要去适应各种不同终端的大小。后台系统设计、工具型的界面设计就比较经常使用网格和流动网格组合的形式。例如的后台管理系统(dashboard)侧边栏是固定网格,右侧内容是流动网格。混合栅格在每个维度上有不同的缩放规则,所以它们不使用统一的缩放比。当用户需要调整浏览器的大小以使内容在一个维度上伸缩而在另一个维度上不伸缩时,便使用混合网格。


如何使用栅格化系统构建响应式设计





07.面板对栅格系统的影响



1. 灵活面板

灵活的面板允许折叠和扩展状态。面板的展开状态为固定宽度,用户无法调节。当用户将鼠标悬停在折叠的面板上时,面板就会展开。当灵活的面板扩展时,它们要么压缩内容和网格,要么将内容推到浏览器边缘之外。


如何使用栅格化系统构建响应式设计



2. 固定面板

固定面板保持静态宽度,不能折叠,也存在于响应网格之外。




3. 悬浮面板

此样式漂浮在主要内容区域之上,不影响响应网格。

浮动面板将任何 UI 元素隐藏在其下方,用户必须将其移除。

内联菜单、下拉菜单和工具提示也是浮动的。





08.总结


分享一套 WEB/UI 标准栅格系统库,它能帮助你更好的理解栅格系统并开始尝试去实践它。这套栅格的设计是按照目前流行的网页、平板、iOS手机以及 Android 界面进行标准化设计,所以适用性是很广的。包含 PS、Sketch、Adobe XD、AI、Figma 这几款源文件


  • 下载链接

    https://pan.baidu.com/s/1B5yaBpYTNmyLecpmREBtDg 密码:8tfc

  • 备用下载链接

    https://pan.baidu.com/s/1hodNZyOOc5YA78o_zwWqqA 提取码:b7cr






附大厂设计系统


  • Google’s Material Design System
    https://material.io/design/layout/responsive-layout-grid.html#columns-gutters-margins


  • Intuit’s Design System
    https://designsystem.quickbooks.com/foundations/responsive-column-grid/


  • IBM’s Carbon Design System
    https://www.carbondesignsystem.com/guidelines/layout#2x-grid-fundamentals