信息可以沿着同一条线排列整齐,读者却仍不知道哪些项目属于一组,或一个开关会影响哪里。构图需要同时回答位置与关系。

我先从共同起点和行高谈起,再通过设置表单与操作面板拆解分组、说明位置和视觉主次,让空间承担一部分解释。

本文由原篇重编并扩充。样例数值代表当时条件,并非所有界面的固定规格;系列背景与工具入口见 总论。

排列与行高

让信息沿着共同起点排列

间距节奏(spacing rhythm)来自重复的关系。图中行高 64 px、图标与文字间距 12 px、面板内边距 24 px;名称、说明与分隔线共用文字起点,图标留在自己的区域。表头则先对齐整组内容的起点,交代列范围。

三行项目信息放大一点五倍,虚线穿过名称、说明与分隔线的共同起点,右侧尺寸线标注六十四像素行高。
共同起点让信息容易扫读。64 px 是这张试样的行高,完整界面可以更紧密。

组内靠近,组间留出停顿

共同起点让内容整齐,接近性(proximity)则让人看出关系。这里两组导航保留相同的文字、行高与组内 8 px 间距,只把组间距离由 8 px 拉到 24 px。Workspace 和 Personal 的分组因此更容易读出来。

两组导航保持相同项目与行高,左侧组内和组间都为八像素,右侧只把组间距离改成二十四像素。
组内和组间有不同的停顿,分组便能从空间读出来。

24 px 是这组内容的停顿,没有必要套到每一段导航。工作区可以紧密,组别仍要辨认得出;分隔线若需要出现,也应沿着内容起点安排。我会先让间距承担关系,再决定哪里还需要一条线。

同行元素如何维持节奏

一行文字只有 24 px 高,旁边的头像、徽章或控件却可能更高。头像与缩略图有自己的尺寸;按钮、复选框、单选、开关、输入框与选择框还可能带着内边距或最小操作范围。先看哪个元素决定了整行高度,才能知道该调整哪一层。

我会分开衡量布局占用、可见范围和操作范围。细线、阴影或焦点轮廓可以画在外面,不一定撑高行;实体边框、内边距与元素尺寸则参与布局。基线对齐决定文字沿哪条线排列,光学对齐判断可见形状,垂直节奏(vertical rhythm)关心这些行如何连续排列。

相同二十四像素文字与三十六像素按钮比较自然布局、上下各负六像素 margin 和向上平移六像素;只有负 margin 改变行的占用。
行高分别为 36、24、36 px,三个按钮仍高 36 px;图中保留足以容纳外伸部分的空间。

这组试样上下各 −6 px margin,让 36 px 控件对 flex 行的占用降为 24 px,控件本身和点击区仍高 36 px。负 margin 补偿描述实现方式,bleed 描述元素有控制地伸入周围留白。Radix 的 ghost button也用类似处理抵消内边距。

取值要跟着元素和周围空间走。我会先确认行的用途与密度,选择合适尺寸,处理内边距和对齐,最后判断是否需要补偿。头像过大、文字换成两行,或触控需要更大的目标时,就让行增高或重新排列。单纯平移只改变外观,原本占用的高度仍在;外伸的操作范围也不能盖住相邻行。

表格与句内内容另看行框

表格常有更直接的调整位置:操作单元格的内边距。这组文字行高 24 px,上下各 8 px,合计 40 px。放入 36 px 控件后,同样的内边距会把行撑到 52 px;只将操作格上下内边距改成 2 px,就能容纳原尺寸控件,回到 40 px。

文字行、加入控件的表格行,以及减少操作单元格上下内边距后的行;控件固定三十六像素,行高由四十变五十二再回四十像素。
控件维持原尺寸,操作格单独设置内边距。较长文字仍可让行继续增高。

原生表格会让单元格的内容和对齐参与行高计算,指定 tr 高度也不会把更高的内容缩小。只扣掉控件的 margin,行框和基线仍可能留下额外空间,不能直接套用前面的 flex 算式。

同一句繁中内容穿插三十六像素按钮,比较原始行框、负 margin 加基线对齐与仅做平移;相邻文字行显示行距变化。
句内控件会参与行框。负 margin、基线与字体度量需一起判断,平移仍保留原来的布局贡献。

句内图片和图标可能在基线下方留下字母下伸部的空间;不属于句子的图片,可以在独立区域改用 block。行内 code、上标和原生控件也有各自的字体、行高默认值。vertical-align: middle 依据周围字体的基线与 x-height 对齐,并不代表整行的几何中心。最后仍要检查实际字符串、相邻行距与键盘焦点。

可在文字与行高研究页切换五语样本、深浅主题、行宽和文字大小,并操作不同元素。研究页区分语法支持、实际测量与光学判断;文字放大或操作范围需要更多空间时,行会跟着生长。

让关系可见

框线包住的,应该是同一件事

每个字段都装进独立卡片,画面会很整齐,却未必说清关系。这组表单保留相同字段和顺序,右侧让通知偏好共用一个区域,账号资料则单独成组。边界因此承担了分组的工作。

我会先用标题和间距组织内容,再决定是否需要底色或外框。同一个面板不代表设置一定一起保存;提交范围不同时,按钮和说明仍要交代清楚。实际行为不能悄悄违背框线暗示的关系。

相同三个字段,左侧各自包框,右侧将两项通知设置放进共同区域,账号字段独立。
相同三个字段,左侧各自包框,右侧将两项通知设置放进共同区域,账号字段独立。

说明留在需要它的地方

错误只显示在表单顶部时,读者需要带着消息回到字段,逐一寻找对象。图中只改说明的位置:相同的 Email 格式错误,分别放在所有字段上方和 Email 后面。

就近说明适合解释局部问题;长表单仍可在顶部提供错误摘要与跳转入口。实现时,错误消息还需与字段建立程序上的关联,不能只有视觉靠近。W3C 表单通知指南同时讨论整体摘要与字段旁的反馈。

同一句 Email 格式错误从表单顶部移到对应字段旁,字段顺序和内容不变。
同一句 Email 格式错误从表单顶部移到对应字段旁,字段顺序和内容不变。

让重要的信息先被看见

标题、状态、时间和每个按钮都同样醒目时,读者仍需自行判断先看哪里。这组审核面板保留相同内容与位置,右侧只强调待处理状态和主要操作,时间及次要操作退到下一层。

我按当前任务分配分量,不规定整页永远只有一个重点。弱化次要信息也不意味着降低可读性;错误、费用或不可逆操作的后果,即使不是主标题,也必须清楚呈现。

两张审核面板内容与位置相同,右侧通过字重及按钮填色建立主次。
两张审核面板内容与位置相同,右侧通过字重及按钮填色建立主次。

控件靠近它影响的内容

把开关集中在右上角看起来利落,却可能让用户不清楚每个开关控制哪组通知。图中保留名称与数量,右侧把 Email 和桌面通知开关放回各自的行。

位置帮助建立对应,文字仍需说明作用。影响整个工作区的开关应放在工作区层级并注明范围。手机重排时,控件应随自己的内容移动,不能因为换行而靠近另一项内容。

相同两个开关,左侧集中排列,右侧各自与所控制的通知行对齐。
相同两个开关,左侧集中排列,右侧各自与所控制的通知行对齐。

收起细节,留下当前选择

高级选项不必始终展开,但收起后也不能让人忘记已应用的设置。这组通知设置把频率留在主要画面,展开后可调整免打扰时段,收起后仍显示当前时段。必要条件和错误不会一起消失。

我将低频调整放到次层,并提供清楚的展开名称。如果每次使用都必须展开,通常说明分层有问题。渐进披露是在安排信息出现的时机,不是让画面尽可能短。

基本设置、高级展开与设置后收起三个画面,摘要仍保留已选免打扰时段。
基本设置、高级展开与设置后收起三个画面,摘要仍保留已选免打扰时段。

我希望读者从排列就能看懂关系:哪些内容一起读、哪个控件影响哪里,以及现在需要处理什么。间距、区域与主次先把这些事交代清楚,折叠才有助于阅读,而不只是缩短页面。