
网页设计中有关网页宽度(960PX)的学问与栅格系统.doc
11页研究网页栅格系统前,来看一组数据:网站 首页页面宽度 pxYahoo! 950淘宝 950MySpace 960新浪 950网易 960Live Search 958搜狐 950优酷 960AOL 960上面列举的都是 Alexa 全球排名前 100 的站点,它们的首页宽度为 950px/960px. 除了微软的 Live Search, 这些站点有个共同特点:页面结构较复杂,都可以认为是门户型网站再来看看 Google, YouTube, Facebook, Flickr!, eBay 等知名站点,它们的首页宽度没什么固定规律,共同的特点是:功能专一,页面结构相对简单根据上面的简单分析可以认为:当搭建页面结构复杂的门户型网站时,开发工程师们不约而同地都选择将页面宽度定为 950px/960px.这是一件很有趣的事情,为什么要选择这个宽度呢?这个宽度值究竟有什么魔力?神奇的 960设计师们对苹果情有独衷在 1024 x 768 的分辨率下,打开 Firefox:自然状态下,Firefox 窗体的大小约为 974 x 650. 减掉左右两边 7px 的边框,网页的实际大小为上图中的红色部分,高宽为 960 x 650.有趣的 960 就这样出现了。
是的,可以认为一切就这么简单栅格系统最早出现在平面设计领域,设计师们爱用苹果,苹果下浏览器的默认宽度为 960px, 于是960 就这么“自然”地出现了数字背后的奥妙上面的“自然”出现,细究自然是不让人信服的苹果系统的设计者们在没有喝醉酒的情况下选择了 960,而不是其它什么 1000 之类的整数,自然另有奥妙科学界有很多问题都可以归结到数学问题上,我们也从数学着手:960 可以分解为 2 的 6 次方乘以 3 和 5, 这使得 960 可以分割成以下宽度的整数倍:2, 3, 4, 5, 6, 8, 10, 12, 15, 16, 20, 24, 30, 32, 40,48, 60, 64, 80, 96, 120, 160, 192, 240, 320, 480 共 26 种(26 = 7 * 2 * 2 – 2, 减去 2 是去掉 1 和 960 自身),我们标记为:N(960) = N(2^6 * 3 * 5) = 26 根据上面的算法,可以得到:N(360) = N(2^3 * 3^2 * 5) = 22N(480) = N(2^5 * 3 * 5) = 22N(720) = N(2^4 * 3^2 * 5) = 28N(750) = N(2 * 3 * 5^3) = 14N(800) = N(2^5 * 5^2) = 16N(960) = N(2^6 * 3 * 5) = 26N(1000) = N(2^3 * 5^3) = 14N(1024) = N(2^10) = 9N(1440) = N(2^6 * 3^2 * 5) = 34N(1920) = N(2^7 * 3 * 5) = 30 根据直觉(严格证明也不难,不过还是留给数学系的学生去证明吧),我们得到一个有趣的结论:要使得 N(width)最大,width 的取值有两个系列:A 系列: …, 320, 720, 1440, …B 系列: …, 480, 960, 1920, …N 越大,可组合的宽度值就越多。
对栅格系统来说,这意味着越灵活!目前绝大多数显示器都支持 1024 x 768 及其以上分辨率为了有效的利用屏幕宽度同时保证栅格的灵活度,可以看出 960 是非常合适的这样,在目前主流显示器下,960 就成为网页栅格系统中的最佳宽度了也许不久的将来,将会流行1440)对于结构复杂的网站,不少设计师们喜欢采用 960 固定宽度布局但要注意的是,960 并不是万能钥匙,大部分网站没有也不需要栅格系统Amazon 采用的是宽度自适应布局,最大限度的呈现信息Google 更是简简单单,主题部分就一个列表eBay 的页面非常简洁,商品页面宽度自适应,信息自然流畅,噪音少,购物很踏实类似的站点还有很多,对于这些站点来说,宽度自适应布局更受青睐有个很有意思的网站是 Yahoo!, 看起来是固定宽度布局,实际上在 CSS 中只要去掉一行,就能摇身一变自适应宽度了:#page {width: 70em;}为什么 Yahoo!最后选择了定宽布局呢?这很可能是因为定宽布局比宽度自适应布局更容易控制对于结构复杂的网站来说,可维护性和可扩展性非常重要Yahoo!是以信息展示为主的门户型网站,960 的宽度对于信息的阅读比较友善(Joe Clark写了一篇屏幕阅读时有关行长的有趣文章)。
种种因素使得 Yahoo!最后采用了定宽布局(Tommy Olsson 总结了每种布局设计的优缺点)这里将只关注定宽布局,适用的场景是搭建复杂的门户型网站对于宽度自适应布局和相应的栅格系统,暂不讨论(根据实现的技术手段不同,宽度自适应布局又分为流体布局和弹性布局我个人蛮喜欢弹性布局,以后有时间再研究)好了,已经将范围缩小到定宽布局的网页栅格系统,那我们开始吧并不遥远的 750还记得 800×600 的显示器不?虽然才时隔几年,感觉却好像是上个世纪的事了Mark Boulton 做了最早的探索:将 750 分割成均等的 6 份,这就形成了栅格系统,稍加组合划分就形成了两栏布局和三栏布局Mark Boulton 还研究了 Gutter(垂直栏之间的间隙)对栅格的影响,有兴趣的可以阅读原文,或者跟着我往下看吧,下面将详细阐述几个术语和一个公式一个标准的栅格系统,包括以下部分:将 Flowline 的总宽度标记为 W, Column 的宽度标记为 c, Gutter 宽度标记为 g, Margin 的宽度标记为 m, Column 的个数标记为 N, 我们可以得到以下公式:W = c * N + g * (N - 1) + 2 * m 一般来说,Gutter 的宽度是 Margin 的两倍,上面的公式可以简化为:W = c * N + g * (N - 1) + g = (c + g) * N 将 c+g 标记为 C, 公式变得非常简单:W = C * N 上面的公式就是栅格系统的基础,很简单吧。
950 的来历具体应用时,Margin 其实是一个空白边,从视觉上看并不属于总宽度不少栅格设计里习惯性地设定 Gutter 为 10px, 这样 Margin 就是 5px. 当 W 为 960,分割成6 列时,栅格如下图:上图的处理是左右 Margin 各为 5px. 也可以将 Margin 集中放在一边,比如右边:无论 Margin 放在何处(这只影响技术实现,不影响设计),我们真正要关注的是去除 Margin 之后的部分:这就是我们要真正关注的 950!将 W 的含义变为去除 Margin 的总宽度,公式变化为:W = N * C - g 将上面的公式实例化一下:950 = 12 * 80 - 10950 = 16 * 60 - 10950 = 24 * 40 - 10 这就形成了 960 蛋糕的三种常见切法12 x 8016 x 60 24 x 40上面三种切法,N 越大,灵活度越高可以根据网页的实际复杂度来选用对应的切法在 960 Grid System 首页中,展示了 12 x 80 的应用:我们来看下上篇文章中开头列举的网站的栅格应用情况Yahoo!是很标准的 24 x 40 栅格:淘宝网目前只有商城上部分使用了栅格系统(大的两栏布局遵守了 24 x 40 的栅格化,主体部分使用的另一套 740 的栅格划分):网易很不错,采用的是 16 x 60 的栅格系统:研究(1)中的其它站点都没有真正严格地采用栅格系统。
栅格系统的优势上面的“发现”是让人有点沮丧的目前严格采用栅格系统的站点非常少,为什么我们还要努力的让网页栅格化呢?栅格系统具有以下优势:能大大提高网页的规范性在栅格系统下,页面中所有组件的尺寸都是有规律的这对于大型网站的开发和维护来说,能节约不少成本 基于栅格进行设计,可以让整个网站各个页面的布局保持一致这能增加页面的相似度,提升用户体验 对于设计师们来说,灵活地运用栅格系统,能做出很多优秀和独特的设计详见《超越 CSS》 一书) 对于大型网站来说,我相信栅格化将是一种潮流和趋势下面讨论栅格系统中的黄金分割黄金分割黄金分割可以归结为数学问题:对于长度为 1 的线段,将其分成两部分 x 和 1 – x, 使得:x / 1 = (1 - x) / x 化为简单的二次方程:x^2 + x - 1 = 0 正数解为:x = (sqrt(5) - 1) / 2 ~= 0.618 这就是黄金分割这个比例不仅仅出现在诸如绘画、雕塑、音乐、建筑等艺术领域,在管理、工程设计等方面也有着不可忽视的作用 (这是个自然界的魔数,类似的还有真空光速、普朗克常数、精细结构等等,感兴趣的 Google 吧)在平面设计领域,黄金分割点被广泛采用。
比如下面这种图:数一数上面有多少黄金分割?对于 960 栅格,实际宽度是 950. 两栏布局时,黄金分割为:对于 24 x 40 的情景,最接近黄金分割的两栏布局是 350 : 590, 栏数比例为 9 : 15. 但实际使用时,因为窄栏经常用来做导航或放辅助信息,并不需要 350px 这么宽因此实际情况下经常被采用的布局是:上面讲的都是宽度方向上的栅格化,下面我们看看高度方向上如何应用高度方向上的栅格还记得研究(1 )中那张红红的很刺眼的图吗?注意高度值 560 也是很神奇的N(560) = N(2^4 * 5 * 7) = 18560 / 960 ~= 0.583N(560)比较大,同时可以让高宽比接近黄金分割针对 560, 我们采用 14 x 40 栅格:这样,我们就在宽度和高度两个方向上都实现了栅格化。
