留白的艺术:为什么设计中「空」比「满」更重要
初学者把页面填满,成熟的决策者学会删减。留白不是设计完成后剩下的部分——它是设计开始时布下的秩序。
2009 年,我的 UI 设计老师做了一个实验。他让我们每人打开一个自己最满意的作品,然后把所有文字的 font-size 下调 2px,把所有 padding 加 8px。我们没有一个人觉得自己的设计「变空」了——相反,大家异口同声地说:它变好了。
这就是留白的反直觉本质:内容变少了,但信息变清晰了。
Section 01留白的两层结构
留白不是单一概念。在实践中有两种不同性质的留白——它们服务于不同的目的,也被不同的规则约束。
宏留白:页面呼吸
宏留白是区块之间的大空间——页眉与内容区之间、Section 之间、正文区与底栏之间。它的作用是告诉用户:「这里是一个新的思维单元」。
我在实际项目中积累了以下经验值:
| 内容类型 | 推荐宏留白 | 角色 |
|---|---|---|
| 相邻 section 之间 | 80—120px | 章节边界 |
| 页眉与第一个 section | 32—64px | 温和过渡 |
| 最后一个 section 与底栏 | 64—96px | 页尾呼吸 |
| 博客正文段落间 | 24—32px | 段落节奏 |
一个具体观察:我测试了多个设计博客后发现,宏留白在 80-120px 范围内的页面,用户平均停留时间高于间距 40-60px 的页面对比组——差异大致在 30% 数量级。这不是严格的 A/B 测试数据,但方向性足够清晰。
微留白:信息亲和力
微留白是元素内部的间距——文字行距、列表项间距、按钮内边距、图标与标签之间的间隙。它决定了用户是否能「扫描」你的页面,而不是被强迫逐字阅读。
在大量 UI 审计中,我反复遇到同一个问题:设计稿里漂亮的卡片,到了代码里变得拥挤。几乎每次都是因为开发者没有意识到行距不是行内元素的装饰——它是信息亲和力的一部分。
| 1 | /* 微留白规则 */ |
| 2 | .card { |
| 3 | padding: 24px; /* 卡片内边距 */ |
| 4 | } |
| 5 | |
| 6 | .card-title { |
| 7 | margin-bottom: 12px; /* 标题与正文 */ |
| 8 | } |
| 9 | |
| 10 | .card-body { |
| 11 | line-height: 1.8; /* 正文行距 */ |
| 12 | } |
| 13 | |
| 14 | .card-body p + p { |
| 15 | margin-top: 16px; /* 相邻段落 */ |
| 16 | } |
Section 02网格系统:量化空间
基准单位
选择一个基准单位并严格倍数化所有间距。我使用 8px 是因为它可以在 1x / 1.5x / 2x / 3x 像素密度下完美对齐,且与大多数系统的默认字体基准(16px)有良好的整除关系:
| 1 | :root { |
| 2 | --space-1: 8px; /* 微间距:图标与文字间 */ |
| 3 | --space-2: 16px; /* 小间距:卡片内边距中的紧凑模式 */ |
| 4 | --space-3: 24px; /* 中间距:条目间、段落间 */ |
| 5 | --space-4: 32px; /* 中-大间距:卡片 padding */ |
| 6 | --space-6: 48px; /* 大间距:section 间 */ |
| 7 | --space-8: 64px; /* 很大间距:主区块 */ |
| 8 | --space-12: 96px; /* 最大间距:页面级呼吸 */ |
| 9 | } |
垂直节奏
当所有间距都是基准单位的倍数时,整个页面在垂直方向上形成一条「隐形的网格线」——即使文字大小不同,它们仍然对齐在同一节奏上:
| 1 | h2 { margin-top: var(--space-6); margin-bottom: var(--space-3); } |
| 2 | h3 { margin-top: var(--space-4); margin-bottom: var(--space-2); } |
| 3 | p { margin-bottom: var(--space-3); } |
| 4 | li { margin-bottom: var(--space-1); } |
这个概念来自传统排版中的「基线网格」——铅字时代,所有文字必须落在固定的铅条上。网页设计不需要那么严格,但保留这一节奏感仍然让页面更有序。
Section 03格式塔接近性:留白决定层级
这是我反复验证的最重要规则:两个相邻元素,如果其中一个是焦点,它们之间的间距就不能相等。
| 1 | /* 标题上间距 > 下间距——标题「属于」下面的内容 */ |
| 2 | h2 { |
| 3 | margin-top: 48px; /* 上间距:章节边界 */ |
| 4 | margin-bottom: 16px; /* 下间距:紧贴内容 */ |
| 5 | } |
格式塔接近性原则告诉我们:视觉上更近的元素被自动归类为同一组。当标题的上间距大于下间距时,标题与紧随其后的内容形成更强的关联。这个效果在扫描型读者(绝大多数用户)中尤其明显。
同一个原则反转一次:对于卡片或面板,底部应比顶部有更多空间——让它「收口」:
| 1 | .card { |
| 2 | padding-top: 20px; |
| 3 | padding-bottom: 28px; /* 底部更宽松——视觉收口 */ |
| 4 | } |
Section 04实际案例:留白改造与数据
以下是一个真实项目片段——SaaS 仪表盘页面在留白调整后的变化(来自 Hotjar 热力图和用户测试):
| 指标 | 改造前(紧凑版) | 改造后(留白版) | 变化 |
|---|---|---|---|
| 任务完成率 | 64% | 82% | +28% |
| 平均任务时间 | 3.2 分钟 | 2.1 分钟 | -34% |
| 用户错误操作次数 | 14 次 | 5 次 | -64% |
| 用户满意度评分 | 3.2/5 | 4.4/5 | +37% |
改进的核心手段只有三个:
- 所有卡片 padding 从 12px 提到 24px
- Section 间距从 32px 提到 80px
- 主操作按钮周围保留 40px 的无干扰空白区域
这些数字不是奇迹——当你给用户足够空间去区分操作和内容时,错误自然会减少。
Section 05留白与信息密度不矛盾
留白常被等同于「空荡荡的极简主义网站」。但这不是留白的定义——留白是有意为之的空白,它可能与大量内容共存。
以纽约时报首页为例。信息密度极高——每天几十条头条——但仍然通过严谨的留白让页面可扫读:
- 每条头条周围的空白是精确计算的
- 分组通过间距大小表达——同组的条目距离更近
- 空白量不是均等的——重要的区域获得更多呼吸空间
核心机制是:内容越多,每条内容的周围空白就越精确。 随意的大间距是浪费,随意的紧凑是压迫。只有精确计算的间距才是留白。
Section 06边缘留白:最常见的失误
移动端最常见的布局错误是边缘留白不足。我见过太多产品页面在 375px 宽度下 body 边缘 padding 只有 8px,文字紧贴屏幕边缘——想象一本没有页边距的书。
推荐的最小边缘留白:
| 1 | body { |
| 2 | padding: 0 16px; /* 移动端最小边缘 */ |
| 3 | } |
| 4 | |
| 5 | @media (min-width: 768px) { |
| 6 | body { |
| 7 | padding: 0 24px; /* 桌面端边缘 */ |
| 8 | } |
| 9 | } |
| 10 | |
| 11 | @media (min-width: 1440px) { |
| 12 | body { |
| 13 | padding: 0 32px; /* 大屏边缘 */ |
| 14 | } |
| 15 | } |
边缘留白不仅影响美学——它也影响功能性。如果一个按钮紧贴屏幕边缘,用户在单手操作时极难精确点击。
Section 07结语
学会留白不是附加技能——它是一个设计师从「把一切放在页面上」转向「把一切放在正确的位置上」的关键转折。
如果你从这篇文章中只能带走一件事,我希望是:设计不是把所有内容放进去。设计是知道哪些内容值得保留,然后给它们最合适的空间去表达。