垂直栅格与渐进式行距

准备工作
去年的时候,青云发表过 关于栅格系统的文章   . 我们知道网页的栅格系统是运用固定的格子设计版面布局,使其风格工整简洁. 视觉上来说,栅格系统能够将大块区域分割成小区域,清楚地展示页面的布局,并能够引导视觉线在各个板块之间扫描、阅读. 从信息上来说,栅格系统让信息的呈现方式更加直观,从而有效提高易读性.
但是大部分栅格系统是在水平方向上的布局,其实,我们的垂直方向也是有栅格系统的——也就是我们的“垂直韵律”.
垂直韵律的就像好比我们手上拿着的线格本子,有着一行行的网格线,安排着垂直方向上的文字排版。“排版中的空间就像是音乐里的节拍. ”音乐的节拍虽然有许多变化,但是几乎每首歌都会有一个固定的节拍来掌握整个歌曲的节奏. 这就是为什么栅格系统一般用固定宽度的网格阵列来指导和规范网页中的版面布局以及信息分布.
其实,那么,在网页里,垂直韵律应由三个因素控制:

  • 字体大小(font-size)
  • 行距(line-height)
    具体定义可以参照我的《字体、排版简明入门》 中行距这一节
  • 间距(margin,padding)
    认真考量这三个因素的值,才能实现垂直韵律.

开工
基础行距
在垂直韵律中,基本的单位是行距. 在整个页面上设定一个合适的行距是垂直韵律之所以能够成为韵律的必要条件. 这个行距,我们将应用于整个页面的所有文字上,包括正文、标题、侧边栏等. 例如,我们现在设定我们的字体大小(css font-size)为12px,行距(css line-height)为18px. (对于中文宋体来说,12px是能够清晰显示的最小字号. 为了保证可读性,12px的1.5倍行距就是18px. 同时12px/18px也是中文互联网上最常用的字号和行距. )我们在空白页面的垂直方向上以18px为单位做垂直网格,就像我们线格本子上的线条,每条网格线也就是基线的对齐线. 接着,我们放上三个段落(12px/18px)作为例子讲解.


(demo-1.html)

段落间距
段落间加上段间距不但美观,而且容易在视觉上区别各段落. 但是要注意的是,垂直韵律最容易被打破的地方就是两个元素在垂直方向上的空白了. 所以,为了让下一段的文字内容落在网格内,我们要将段落间距设置为基础的倍数. 例如:我们可以设置段前距为9px,段后距为9px,9px+9px=18px;或者设置段前距(css margin-top)为0,段后距(css margin-bottom)为18px;或者段前距和段后距都是18px. 这里,我们选取第二种方案,即,设置段前距为0,段后距为18px. 图中可以看到,每段段落的文字都落在了格子内. 关闭网格可以发现,段落清晰明了,比之前容易阅读多了.


(demo-2.html)

添加标题
使用浏览器默认的样式,你会发现,大多数情况下,垂直韵律都被打破了. 所以,添加标题,我们需要选择正确的行距和间距才可以.
有了添加段间距的经验,相信添加标题也不是一件难事了. 标题的文字要比正文的文字要大的多. 例如,我们现在选择h1的字体大小为24px.
那么,根据附录结论有:

  • 行距和全部垂直间距之和为基础行距的倍数。

那么,我们假设行距为36px,则可以设置段前距为9px,段后距为9px (验证有:36 + 9 + 9 = 54 = 3 * 18).
同样,我们也可以设置h2:字体大小18px,行高24px,段前距3px,段后距9px(验证有:24 + 3 + 9 = 36 = 2 * 18)。


(demo-3.html)

添加边注
网站我们常常有侧边栏,我们这里就用右边的边注来代表。在这里的例子中,我们和正文一样设定边注的排版:字体12px,行距18px。正是由于我们前面的努力,我们可以看到,边注的基线和正文的基线是对齐的。关闭网格可以看到,由于基线的对齐,整个排版有条不紊,十分美观。


(demo-4.html)

添加边框
添加边框道理相同,无非要的就是最后要求基线与网格对齐。这里的例子中,我们来给边注加个边框吧。给他加上1px边框(css border)后,还要再加上8px的补白(css padding).细心的同学们一定发现了,为什么补白是8px呢?其实很简单,这就是保证垂直方向上的补白和边框之和,是我们的基础行高18px的倍数:垂直方向上两个补白两个边框,那么1 + 8 + 8 + 1 = 18.


加上去后,我们发现,恩?怎么没有右边文字没有对齐到网格上呢?原来加上了补白和边框后,边注下移了9px,所以网格就没有对齐啦。那么,我们就要把边注上移9px。现在,我们可以看到右边的文字已经对齐到网格。是不是感觉不错?


(demo-5.html)

不同字体大小的正文
如果有一天,老板告诉你,正文的字体太小啦,他看得眼花。你因此不得不将左边的正文设置成14px大小的字体,右边的边注保持12px。由于正文字体变大,我们也同时加大行距。根据我们前面学到的知识,我重新设计了间距:

  • 正文:字体大小14px,行距24px,段后距24px
  • h1:字体大小24px,行距24px,段前距24px,段后距24px
  • h2:字体大小:18px,行距24px,段前距12px,段后距12px
  • 边注正文:字体大小12px,行距24px,段后距24px
  • 边注边框:边框粗1px,内补白11px——别忘了还要把它上移12px

效果见:


(demo-6.html)

完工
OK,最后,我们来做个使用前使用后的对比,来张合照吧:
使用前:


使用后:


附录 基本垂直韵律对行距、间距的要求的推导
根据之前的经验,不难得出:
设行距为 dl px ,设垂直方向上的间距和为 ∑ds = dst (段前距) + dsb (段后距) (px) ①,假设基础行距为k px,则
n*k = dl + ∑ds (n为自然数) 即行距和间距之和应当是18的倍数 ②
由方程①、② 得出:
行距和全部垂直间距之和为18的倍数。

标签: none

评论已关闭