<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>刘钢的博客 - 我是UED &#187; 栅格系统</title>
	<atom:link href="http://www.iamued.com/tag/%e6%a0%85%e6%a0%bc%e7%b3%bb%e7%bb%9f/feed" rel="self" type="application/rss+xml" />
	<link>http://www.iamued.com</link>
	<description>http://www.IamUED.com</description>
	<lastBuildDate>Wed, 18 Jan 2012 02:51:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>垂直栅格与渐进式行距(下)</title>
		<link>http://www.iamued.com/design/664.html</link>
		<comments>http://www.iamued.com/design/664.html#comments</comments>
		<pubDate>Mon, 07 Dec 2009 13:25:07 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[视觉设计]]></category>
		<category><![CDATA[页面实现]]></category>
		<category><![CDATA[960px]]></category>
		<category><![CDATA[垂直栅格]]></category>
		<category><![CDATA[栅格系统]]></category>
		<category><![CDATA[用户体验]]></category>
		<category><![CDATA[网页栅格]]></category>
		<category><![CDATA[视觉]]></category>
		<category><![CDATA[设计]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=664</guid>
		<description><![CDATA[新问题 来也匆匆，去也“冲冲”。距上次发布垂直栅格与渐进式行距(上)发布，已经不知不觉过去了两个多月了。反过来，看看上次的成果。诶？怎么感觉边注有点奇怪呢？ (demo-6.html) 还是参考我的这篇关于排版的文章：我们知道 中文互联网上最常用的行距是1.5左右 行长越长,需要的越大的行距. (行距太小,读者阅读换行时容易串行. 行距太大,读者阅读行时会感觉到文字不连续.) 看 来，对于边注的12px字体大小的，24px的行高显然过大了。但是，根据上一篇文章的方法，垂直韵律需要边注的行距和正文的行距应当一致。那么为了保持 垂直韵律，我们只能同时减少左右两边的行距——总结：不靠谱。那么，我们该如何调整边注行距，却又能够让我们建立的垂直韵律生效呢？这就需要我们引入渐进式行距。 渐进式行距 总得说来，渐进式行距是对死板的垂直韵律的一个补充。垂直韵律是要求边注和正文的每一行都对 齐。相比之下，渐进式行距让边注和正文也对齐——但不是每一行——而是每几行对齐一次。一般是每4行或者每5行对齐一次。我们回顾一下上一篇文章，知道， 本文开始的那张例子，“配置”如下： 正文：字体大小14px，行距24px，段后距24px h1：字体大小24px，行距24px，段前距24px，段后距24px h2：字体大小：18px，行距24px，段前距12px，段后距12px 边注正文：字体大小12px，行距24px，段后距24px 边注边框：边框粗1px，内补白11px——别忘了还要把它上移12px 我们修改边注的行距和段后距都为18px。那么情况就会像这样： (demo-9.html) 不知道各位看官发现了没有，为什么第一行基线没对齐呢？这是因为流布局会将文字块按照行高做顶端对齐。如下图： 所以，在这里，为了使首行基线对齐，我们还要将边注下降一定的像素。可恨的是，需要下降的像素是多少——这个很复杂的问题，至少经过不才好几次的尝试都没有看出个规律来，而只得出以下三个结论： 设正文行高是h px，边注行高是h’ px，需要下降的值为d px，那么，这个值将介于 1/2(h-h’) &#60; d &#60; (h-h’) . ① 如果该行引入了西文字符(半角数字或者字母)，该行的基线有时会比没有西文字符偏移一个像素。 不同的字体渲染引擎可能行为不一致。 这 个结论并不能有成型的公式来确定需要下降的具体像素值。那么，我们就根据结论①一个一个像素试验吧(3 &#60; d &#60; 6)，反正不会太多。在本例中经试验可得，下降4px是能够让首行对齐的。对齐后，各位可以看到正文每隔4行，边注每隔5行，他们的基线会对齐一次。 (demo-10.html) 很有趣，是吧？ 垂直栅格与渐进式行距应用举例 这 套理论看起来略显枯燥。所以，我还是得举个应用的例子，不然理论对于现在来说没有任何意义。前几天，我遇到了一个问题是这样的：有一个系统，它能够用像 iGoogle那样的模块迅速搭建一个页面用于淘宝的各个子页面。但是，用模块搭建却常常遇到开天窗的问题，就像下面这样： 再看看模块本身，文字基线均未对齐，行距七零八落： 好， 现在，我们开始开刀。首先，我们用6px的红色网格线，画好标尺。为什么用6px呢？我们在前面的例子中，正文行距是24px，边注行距是18px，那么 他们的最大公约数就是6px. 也就是说，如果我们画好以6px为单位的横线族，那么，每3条横线就是一个18px单位，每4条横线就是一个24px单位。 画上线后，工作简单啦！利用18px和24px这两种行距，将文字的基线都挪到红色网格线上。 [...]]]></description>
			<content:encoded><![CDATA[<h2>新问题</h2>
<div>来也匆匆，去也“冲冲”。距上次发布垂直栅格与渐进式行距(上)发布，已经不知不觉过去了两个多月了。反过来，看看上次的成果。诶？怎么感觉边注有点奇怪呢？<span id="more-664"></span></div>
<div><a href="http://www.om19.cn/images/IncLeading/demo-6.html"><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/215244EiO.jpg" alt="" /></a></div>
<div><a href="http://www.om19.cn/images/IncLeading/demo-6.html">(demo-6.html)</a></div>
<div>还是参考<a id="z0v_" title="我的这篇文章" href="http://www.om19.cn/2008/08/25/%E5%AD%97%E4%BD%93%E3%80%81%E6%8E%92%E7%89%88%E7%AE%80%E6%98%8E%E5%85%A5%E9%97%A8/">我的这篇关于排版的文章</a>：我们知道</div>
<div>
<ul>
<li>中文互联网上最常用的行距是1.5左右</li>
<li>行长越长,需要的越大的行距. (行距太小,读者阅读换行时容易串行. 行距太大,读者阅读行时会感觉到文字不连续.)</li>
</ul>
</div>
<div>看 来，对于边注的12px字体大小的，24px的行高显然过大了。但是，根据上一篇文章的方法，垂直韵律需要边注的行距和正文的行距应当一致。那么为了保持 垂直韵律，我们只能同时减少左右两边的行距——总结：不靠谱。那么，我们该如何调整边注行距，却又能够让我们建立的垂直韵律生效呢？这就需要我们引入<strong>渐进式行距</strong>。</div>
<h2>渐进式行距</h2>
<div>总得说来，渐进式行距是对死板的垂直韵律的一个补充。垂直韵律是要求边注和正文的每一行都对 齐。相比之下，渐进式行距让边注和正文也对齐——但不是每一行——而是每几行对齐一次。一般是每4行或者每5行对齐一次。我们回顾一下上一篇文章，知道， 本文开始的那张例子，“配置”如下：</div>
<div>
<ul>
<li>正文：字体大小14px，行距24px，段后距24px</li>
<li>h1：字体大小24px，行距24px，段前距24px，段后距24px</li>
<li>h2：字体大小：18px，行距24px，段前距12px，段后距12px</li>
<li>边注正文：字体大小12px，行距24px，段后距24px</li>
<li>边注边框：边框粗1px，内补白11px——别忘了还要把它上移12px</li>
</ul>
<div>我们修改边注的行距和段后距都为18px。那么情况就会像这样：</div>
<div><a href="http://www.om19.cn/images/IncLeading/demo-9.html"><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/215245QML.jpg" alt="" /></a><br />
<a href="http://www.om19.cn/images/IncLeading/demo-9.html">(demo-9.html)</a></div>
</div>
<p>不知道各位看官发现了没有，为什么第一行基线没对齐呢？这是因为流布局会将文字块按照行高做顶端对齐。如下图：</p>
<div>
<div><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/215245cUG.jpg" alt="" /></div>
<div>所以，在这里，为了使首行基线对齐，我们还要将边注下降一定的像素。可恨的是，需要下降的像素是多少——这个很复杂的问题，至少经过不才好几次的尝试都没有看出个规律来，而只得出以下三个结论：</div>
<div>
<ul>
<li>设正文行高是h px，边注行高是h’ px，需要下降的值为d px，那么，这个值将介于 1/2(h-h’) &lt; d &lt; (h-h’) . ①</li>
<li>如果该行引入了西文字符(半角数字或者字母)，该行的基线有时会比没有西文字符偏移一个像素。</li>
<li>不同的字体渲染引擎可能行为不一致。</li>
</ul>
</div>
<div>这 个结论并不能有成型的公式来确定需要下降的具体像素值。那么，我们就根据结论①一个一个像素试验吧(3 &lt; d &lt; 6)，反正不会太多。在本例中经试验可得，下降4px是能够让首行对齐的。对齐后，各位可以看到正文每隔4行，边注每隔5行，他们的基线会对齐一次。</div>
<div>
<div>
<div><a href="http://www.om19.cn/images/IncLeading/demo-10.html"><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/215246Cdw.jpg" alt="" /></a><br />
<a href="http://www.om19.cn/images/IncLeading/demo-10.html">(demo-10.html)</a></div>
</div>
<div>很有趣，是吧？</div>
<h2>垂直栅格与渐进式行距应用举例</h2>
<div>这 套理论看起来略显枯燥。所以，我还是得举个应用的例子，不然理论对于现在来说没有任何意义。前几天，我遇到了一个问题是这样的：有一个系统，它能够用像 iGoogle那样的模块迅速搭建一个页面用于淘宝的各个子页面。但是，用模块搭建却常常遇到开天窗的问题，就像下面这样：</div>
</div>
</div>
<div><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/2152473Nu.jpg" alt="" /></div>
<div>再看看模块本身，文字基线均未对齐，行距七零八落：</div>
<div>
<div><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/215248MOC.jpg" alt="" /></div>
<div>好， 现在，我们开始开刀。首先，我们用6px的红色网格线，画好标尺。为什么用6px呢？我们在前面的例子中，正文行距是24px，边注行距是18px，那么 他们的最大公约数就是6px. 也就是说，如果我们画好以6px为单位的横线族，那么，每3条横线就是一个18px单位，每4条横线就是一个24px单位。</div>
<div>
<div><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/215249sQa.jpg" alt="" /></div>
<div>画上线后，工作简单啦！利用18px和24px这两种行距，将文字的基线都挪到红色网格线上。</div>
</div>
</div>
<div><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/215250PAo.jpg" alt="" /></div>
<div>去掉网格看看吧：</div>
<div>
<div><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/2152515Fa.jpg" alt="" /></div>
<div>回顾一下优化前的样子：</div>
<div>
<div><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/215248MOC.jpg" alt="" /></div>
</div>
<div>全部使用了18px或者24px的行距。其中，将右边模块的资讯条数由8条缩减为5条。甚至，我们可以继续发现，应用了垂直韵律之后，垂直的行数可以做自由得调整，而两个模块的高度可以保持高度一致。例如我们缩减了行数：</div>
<div>
<div>
<div><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/215252txq.jpg" alt="" /></div>
<div>应用了垂直韵律之后，既美观又灵活，何乐不为呢？哇咔咔～</div>
<h2>最后</h2>
<div>当然，垂直韵律和渐进式行距还有很多应用的方法。总之，作为设计师，特别是网页设计师/交互设计师，我们不应当单纯地凭借感觉，应当专注到像素级别，严谨设计。</div>
<div>“严谨”一词，永远受用。送给我和大家。</div>
<div>文章转自：taobaoUED</div>
</div>
</div>
</div>
<p><!-- .entry-content --></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/design/664.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>垂直栅格与渐进式行距(上)</title>
		<link>http://www.iamued.com/design/661.html</link>
		<comments>http://www.iamued.com/design/661.html#comments</comments>
		<pubDate>Mon, 07 Dec 2009 13:21:23 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[视觉设计]]></category>
		<category><![CDATA[页面实现]]></category>
		<category><![CDATA[960px]]></category>
		<category><![CDATA[前端]]></category>
		<category><![CDATA[垂直栅格]]></category>
		<category><![CDATA[栅格系统]]></category>
		<category><![CDATA[网页栅格]]></category>
		<category><![CDATA[视觉]]></category>
		<category><![CDATA[设计]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=661</guid>
		<description><![CDATA[准备工作 去年的时候,青云发表过关于栅格系统的文章 . 我们知道网页的栅格系统是运用固定的格子设计版面布局,使其风格工整简洁. 视觉上来说,栅格系统能够将大块区域分割成小区域,清楚地展示页面的布局,并能够引导视觉线在各个板块之间扫描、阅读. 从信息上来说,栅格系统让信息的呈现方式更加直观,从而有效提高易读性. 但是大部分栅格系统是在水平方向上的布局,其实,我们的垂直方向也是有栅格系统的——也就是我们的“垂直韵律”. 垂直韵律的就像好比我们手上拿着的线格本子，有着一行行的网格线，安排着垂直方向上的文字排版。“排版中的空间就像是音乐里的节拍. ”音乐的节拍虽然有许多变化,但是几乎每首歌都会有一个固定的节拍来掌握整个歌曲的节奏. 这就是为什么栅格系统一般用固定宽度的网格阵列来指导和规范网页中的版面布局以及信息分布. 其实，那么,在网页里,垂直韵律应由三个因素控制：  字体大小(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 + [...]]]></description>
			<content:encoded><![CDATA[<h2>准备工作</h2>
<p>去年的时候,青云发表过<a id="u81." title="关于栅格系统的文章" href="http://ued.taobao.com/blog/2008/09/17/grid_systems/">关于栅格系统的文章</a> . 我们知道网页的栅格系统是运用固定的格子设计版面布局,使其风格工整简洁. 视觉上来说,栅格系统能够将大块区域分割成小区域,清楚地展示页面的布局,并能够引导视觉线在各个板块之间扫描、阅读. 从信息上来说,栅格系统让信息的呈现方式更加直观,从而有效提高易读性.<br />
但是大部分栅格系统是在水平方向上的布局,其实,我们的垂直方向也是有栅格系统的——也就是我们的“垂直韵律”.</p>
<div>垂直韵律的就像好比我们手上拿着的线格本子，有着一行行的网格线，安排着垂直方向上的文字排版。“排版中的空间就像是音乐里的节拍. ”音乐的节拍虽然有许多变化,但是几乎每首歌都会有一个固定的节拍来掌握整个歌曲的节奏. 这就是为什么栅格系统一般用固定宽度的网格阵列来指导和规范网页中的版面布局以及信息分布.<br />
其实，那么,在网页里,垂直韵律应由三个因素控制： </div>
<ul>
<li><strong>字体大小(font-size)</strong></li>
<li><strong>行距(line-height)<br />
<span>具体定义可以参照我的</span><a id="qza2" title="《�体、排版简明入门》" href="http://www.om19.cn/2008/08/25/%E5%AD%97%E4%BD%93%E3%80%81%E6%8E%92%E7%89%88%E7%AE%80%E6%98%8E%E5%85%A5%E9%97%A8/"><span>《字体、排版简明入门》</span></a><span> 中</span>行距<span>这一节</span></strong></li>
<li><strong>间距(margin,padding)</strong></li>
</ul>
<p>认真考量这三个因素的值,才能实现垂直韵律.</p>
<div>
<div>
<div>
<h2><span id="more-661"></span>开工</h2>
<div>
<h3>基础行距</h3>
<p>在垂直韵律中,基本的单位是行距. 在整个页面上设定一个合适的行距是垂直韵律之所以能够成为韵律的必要条件. 这个行距,我们将应用于整个页面的所有文字上,包括正文、标题、侧边栏等. 例如,我们现在设定我们的字体大小(css font-size)为12px,行距(css line-height)为18px. (对于中文宋体来说,12px是能够清晰显示的最小字号. 为了保证可读性,12px的1.5倍行距就是18px. 同时12px/18px也是中文互联网上最常用的字号和行距. )我们在空白页面的垂直方向上以18px为单位做垂直网格,就像我们线格本子上的线条,每条网格线也就是基线的对齐线. 接着，我们放上三个段落(12px/18px)作为例子讲解.</p>
</div>
<div>
<div><a href="http://www.om19.cn/images/IncLeading/demo-1.html" target="_blank"><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/215035eIL.jpg" alt="" /></a></div>
</div>
<div><a href="http://www.om19.cn/images/IncLeading/demo-1.html" target="_blank">(demo-1.html)</a></div>
<div>
<h3>段落间距</h3>
<p>段落间加上段间距不但美观,而且容易在视觉上区别各段落. 但是要注意的是,垂直韵律最容易被打破的地方就是两个元素在垂直方向上的空白了. 所以,为了让下一段的文字内容落在网格内,我们要将段落间距设置为基础的倍数. 例如：我们可以设置段前距为9px,段后距为9px,9px+9px=18px；或者设置段前距(css margin-top)为0,段后距(css margin-bottom)为18px；或者段前距和段后距都是18px. 这里,我们选取第二种方案,即,设置段前距为0,段后距为18px. 图中可以看到,每段段落的文字都落在了格子内. 关闭网格可以发现,段落清晰明了,比之前容易阅读多了.</p>
</div>
<div>
<div><a href="http://www.om19.cn/images/IncLeading/demo-2.html" target="_blank"><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/215037jxL.jpg" alt="" /></a></div>
</div>
<div><a href="http://www.om19.cn/images/IncLeading/demo-2.html">(demo-2.html)</a></div>
</div>
<h3>添加标题</h3>
<p>使用浏览器默认的样式,你会发现,大多数情况下,垂直韵律都被打破了. 所以,添加标题,我们需要选择正确的行距和间距才可以.</p>
<div>有了添加段间距的经验,相信添加标题也不是一件难事了. 标题的文字要比正文的文字要大的多. 例如,我们现在选择h1的字体大小为24px.</div>
<div>那么,根据附录结论有：</div>
<div>
<blockquote>
<ul>
<li>行距和全部垂直间距之和为基础行距的倍数。</li>
</ul>
</blockquote>
<div>那么，我们假设行距为36px,则可以设置段前距为9px，段后距为9px (验证有：36 + 9 + 9 = 54 = 3 * 18).</div>
<div>同样，我们也可以设置h2:字体大小18px，行高24px，段前距3px，段后距9px(验证有：24 + 3 + 9 = 36 = 2 * 18)。</div>
<div>
<div><a href="http://www.om19.cn/images/IncLeading/demo-3.html" target="_blank"><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/215038J4A.jpg" alt="" /></a></div>
</div>
<div><a href="http://www.om19.cn/images/IncLeading/demo-3.html">(demo-3.html)</a></div>
<h3>添加边注</h3>
<p>网站我们常常有侧边栏，我们这里就用右边的边注来代表。在这里的例子中，我们和正文一样设定边注的排版：字体12px，行距18px。正是由于我们前面的努力，我们可以看到，边注的基线和正文的基线是对齐的。关闭网格可以看到，由于基线的对齐，整个排版有条不紊，十分美观。</p>
</div>
<div>
<div>
<div><a href="http://www.om19.cn/images/IncLeading/demo-4.html" target="_blank"><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/215039csZ.jpg" alt="" /></a></div>
</div>
</div>
<div><a href="http://www.om19.cn/images/IncLeading/demo-4.html">(demo-4.html)</a> </div>
<h3>添加边框</h3>
<p>添加边框道理相同，无非要的就是最后要求基线与网格对齐。这里的例子中，我们来给边注加个边框吧。给他加上1px边框(css border)后，还要再加上8px的补白(css padding).细心的同学们一定发现了，为什么补白是8px呢？其实很简单，这就是保证垂直方向上的补白和边框之和，是我们的基础行高18px的倍数：垂直方向上两个补白两个边框，那么1 + 8 + 8 + 1 = 18.</p>
<div><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/215041H4r.jpg" alt="" /></div>
<p>加上去后，我们发现，恩？怎么没有右边文字没有对齐到网格上呢？原来加上了补白和边框后，边注下移了9px，所以网格就没有对齐啦。那么，我们就要把边注上移9px。现在，我们可以看到右边的文字已经对齐到网格。是不是感觉不错？</p>
</div>
<div>
<div><a href="http://www.om19.cn/images/IncLeading/demo-5.html" target="_blank"><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/215045V5m.jpg" alt="" /></a></div>
</div>
<div><a href="http://www.om19.cn/images/IncLeading/demo-5.html">(demo-5.html)</a></div>
<h2>不同字体大小的正文</h2>
<p>如果有一天，老板告诉你，正文的字体太小啦，他看得眼花。你因此不得不将左边的正文设置成14px大小的字体，右边的边注保持12px。由于正文字体变大，我们也同时加大行距。根据我们前面学到的知识，我重新设计了间距：</p>
</div>
<div>
<ul>
<li>正文：字体大小14px，行距24px，段后距24px</li>
<li>h1：字体大小24px，行距24px，段前距24px，段后距24px</li>
<li>h2：字体大小：18px，行距24px，段前距12px，段后距12px</li>
<li>边注正文：字体大小12px，行距24px，段后距24px</li>
<li>边注边框：边框粗1px，内补白11px——别忘了还要把它上移12px</li>
</ul>
<div>效果见:</div>
<div>
<div><a href="http://www.om19.cn/images/IncLeading/demo-6.html" target="_blank"><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/215046Gw0.jpg" alt="" /></a></div>
</div>
<div><a href="http://www.om19.cn/images/IncLeading/demo-6.html">(demo-6.html)</a>。</div>
<h2>完工</h2>
<p>OK，最后，我们来做个使用前使用后的对比，来张合照吧：</p>
</div>
<div>使用前：</div>
<div>
<div><a href="http://www.om19.cn/images/IncLeading/demo-7.html" target="_blank"><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/215048a3Z.jpg" alt="" /></a></div>
</div>
<div>使用后：</div>
<div>
<div>
<div><a href="http://www.om19.cn/images/IncLeading/demo-6.html" target="_blank"><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/215054rfy.jpg" alt="" /></a></div>
</div>
<h2>附录 基本垂直韵律对行距、间距的要求的推导</h2>
<p>根据之前的经验,不难得出：</p>
<div>设行距为 d<span>l</span> px ,设垂直方向上的间距和为 ∑d<span>s</span> = d<span>st</span> (段前距) + d<span>sb</span> (段后距) (px) ①,假设基础行距为k px,则</div>
<div>n*k = d<span>l</span> + ∑d<span>s</span> (n为自然数) 即行距和间距之和应当是基础行距的倍数 ②</div>
<div>由方程①、② 得出：</div>
<div>
<div>
<ul>
<li>行距和全部垂直间距之和为基础行距的倍数。</li>
</ul>
</div>
</div>
</div>
<div>
<div>文章转自：taobaoUED</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/design/661.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>网页栅格系统研究（4）：技术实现</title>
		<link>http://www.iamued.com/design/657.html</link>
		<comments>http://www.iamued.com/design/657.html#comments</comments>
		<pubDate>Mon, 07 Dec 2009 13:18:35 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[视觉设计]]></category>
		<category><![CDATA[页面实现]]></category>
		<category><![CDATA[960px]]></category>
		<category><![CDATA[交互]]></category>
		<category><![CDATA[栅格系统]]></category>
		<category><![CDATA[网页栅格]]></category>
		<category><![CDATA[视觉]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=657</guid>
		<description><![CDATA[前三篇文章中，明确了栅格系统的设计细节和适用范围。这一篇将集中讨论960栅格系统的技术实现。 Blueprint的实现 Blueprint是一个完整的CSS框架，栅格系统是它的一部分功能。我们来看demo页面： 以上三栏布局的代码为： &#60;style type="text/css"&#62; .container { margin: 0 auto; width: 950px } .span-8 { float: left; margin-right: 10px } div.last { margin-right: 0 } hr { clear: both; height: 0; border: none } &#60;/style&#62; &#60;div&#62; &#60;div&#62;&#60;/div&#62; &#60;div&#62;&#60;/div&#62; &#60;div&#62;&#60;/div&#62; &#60;hr /&#62; &#60;/div&#62; 上面是基本功能，Blueprint还支持append-n, prepend-m, border等“高级”功能，这些就不细说了。Blueprint的特点简单总结如下： 采用浮动来实现布局，简单明了 950两侧没有margin, 最后一列的class需要加上last 采用额外标签来清除浮动 960.gs的实现 谈到960栅格系统，不得不提960.gs. Nathan Smith在这篇文章中，详细阐述了他的想法和设计思路。这里有个demo页面，核心代码很简单： &#60;style [...]]]></description>
			<content:encoded><![CDATA[<p>前三篇文章中，明确了栅格系统的设计细节和适用范围。这一篇将集中讨论960栅格系统的技术实现。</p>
<h4>Blueprint的实现</h4>
<p><a href="http://blueprintcss.org/">Blueprint</a>是一个完整的CSS框架，栅格系统是它的一部分功能。我们来看<a href="http://www.blueprintcss.org/grid.html">demo页面</a>：<br />
<img title="blueprint_3cols" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/214827qjt.png" alt="" width="493" height="67" /><span id="more-657"></span><br />
以上三栏布局的代码为：</p>
<pre><code>&lt;style type="text/css"&gt;
    .container { margin: 0 auto; width: 950px }
    .span-8 { float: left; margin-right: 10px }
    div.last { margin-right: 0 }
    hr { clear: both; height: 0; border: none }
&lt;/style&gt;
&lt;div&gt;
    &lt;div&gt;&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
    &lt;hr /&gt;
&lt;/div&gt;</code></pre>
<p>上面是基本功能，Blueprint还支持append-n, prepend-m, border等“高级”功能，这些就不细说了。Blueprint的特点简单总结如下：</p>
<ol>
<li>采用浮动来实现布局，简单明了</li>
<li>950两侧没有margin, 最后一列的class需要加上last</li>
<li>采用额外标签来清除浮动</li>
</ol>
<h4>960.gs的实现</h4>
<p>谈到960栅格系统，不得不提<a href="http://960.gs/">960.gs</a>. Nathan Smith在<a href="http://sonspring.com/journal/960-grid-system">这篇文章</a>中，详细阐述了他的想法和设计思路。这里有个<a href="http://960.gs/demo.html">demo页面</a>，核心代码很简单：</p>
<pre><code>&lt;style type="text/css"&gt;
    .container_12 { margin: 0 auto; width: 960px }
    .grid_4 { float: left; margin: 0 10px }
&lt;/style&gt;
&lt;div&gt;
    &lt;div&gt;&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
    &lt;div&gt;&lt;/div&gt;
&lt;/div&gt;</code></pre>
<p>上面就构建了三栏布局：<br />
<img title="960gs_3cols" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/214828tcV.png" alt="" width="590" height="59" /><br />
有意思的几点：</p>
<ol>
<li>margin是均匀放在950两侧的</li>
<li>所有grid除了宽度不同，左右边距都一致margin: 0 10px;</li>
<li>代码简单清晰，起始和结束列不需要添加额外class</li>
</ol>
<p>很明显，Blueprint和960.gs都是采用浮动来实现布局的，主容器需要添加额外标签来清除浮动（<a href="http://sonspring.com/journal/clearing-floats">可以参考这里</a>）。当然，这也不是什么大问题，请看<a href="http://lifesinger.org/blog/?p=614">这篇文章的总结</a>，不添加额外标签也可以清除浮动。</p>
<h4>YUI的实现</h4>
<p>接着来看大名鼎鼎的<a href="http://developer.yahoo.com/yui/grids/">YUI Grids CSS</a>. YUI的CSS框架由三个文件组成：</p>
<pre><code>reset.css - 样式重置
fonts.css - 版式字体控制
grids.css - 栅格系统</code></pre>
<p>我们从<a href="http://developer.yahoo.com/yui/examples/grids/grids-gb_source.html">demo</a>开始：<br />
<img title="yui_950_3cols" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/2148291T0.png" alt="" width="492" height="140" /><br />
注意，demo链接中的宽度是750的，但我们只要将&lt;div id=”doc”&gt;&lt;/div&gt;中的id改为doc2, 页面宽度就自动变为950宽了（YUI非常强大^o^）。来看下dom结构：<br />
<img title="yui_950_3cols_dom" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/214830ckX.png" alt="" width="283" height="240" /><br />
采用的也是浮动布局，简化后的CSS代码为：</p>
<pre><code>&lt;style type="text/css"&gt;
    .doc2 { margin: auto; width: 73.076em }
    .yui-u { float: left; margin-left: 1.99%; width: 32% }
    div.first { margin-left: 0 }
    #ft { clear: both }
&lt;/style&gt;</code></pre>
<p>YUI的特点是：</p>
<ol>
<li>依旧是采用浮动布局，槽（Gutter）宽通过margin-left来控制（Blueprint采用右边距，960.gs采用均分，这三个框架对槽的处理实在有意思）</li>
<li>总宽度采用em, 这样可以用在弹性布局上</li>
<li>栏的布局用的是百分比，采用了流体布局</li>
</ol>
<p>YUI的好处是能用来做自适应布局，在这前面两个框架里是没有的。但普通的定宽布局，YUI则显得有点麻烦，比如我们要实现四栏布局，dom得这样写：<br />
<img title="yui_950_4cols_dom" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/2148309sE.png" alt="" width="308" height="352" /><br />
先来两个两栏布局，再细分为四栏布局，清晰度上欠佳。</p>
<h4>更多栅格实现</h4>
<p>栅格化更多是一种布局思想，实现技术可以千差万别。比如今年冒出来的<a href="http://www.alistapart.com/articles/fauxabsolutepositioning">伪绝对定位</a>，立刻就可以用来实现栅格系统。明城兄弟<a href="http://lab.gracecode.com/demo/grid.html">就尝试了一把</a>。</p>
<p>肯定还有非常多的栅格化实现方案，这里就不一一挖掘了。</p>
<h4>双飞翼栅格系统</h4>
<p>挺奇怪这个名字？请先阅读这篇文章：<a href="http://lifesinger.org/blog/?p=659">渐进增强式布局探讨</a>. 简单说，双飞翼布局是一种布局实现技术，可以利用它来实现一整套栅格系统。</p>
<p>先看test页面：<a href="http://lifesinger.org/lab/grids_test1.html">Grids Layout Test</a>.</p>
<p>具体技术细节在<a href="http://lifesinger.org/blog/?p=659">渐进增强式布局探讨</a>一文中已经阐述，这里不再重复。有几点需要说明：</p>
<ol>
<li>这套栅格系统并不能实现所有布局。这和YUI Grids类似，只能实现预定的一些布局。比如三栏布局，目前只加入了5 : 13 : 6, 5 : 12 : 7, 9 : 9 : 6, 8 : 8 : 8四种情况，这是从淘宝的现有页面中分析总结出来的。对于同一个站点来说，太多不同的三栏比例不是好事（淘宝目前都有点多，以后可能还会进一步统一）。因此如果采用这套栅格系统的话，需要先分析站点，定义出一套合适的比例。这里有个所有比例的自动生成工具：<a href="http://lifesinger.org/lab/grids_css_generator.html">grids_css_generator.html</a>.</li>
<li>关于命名：.grid-c2-s6表示两栏（c2: column 2）布局，sub栏的宽度是4列（s4: sub width is 4 * 40 -10）. 而.grid-c2-s6f, 最后的f表示两栏布局的第二种情况，即sub和main互换。类似地，.grid-c3-s5e6d表示三栏布局，其中sub栏的宽度是5, extra栏的宽度是6, 最后的d表示是s5e6三栏布局中的第四种情况。</li>
<li>为了方便使用，将最常用的两栏布局.grid-c2-s5用.grid-c2直接表示。同样的，.grid-c3表示.grid-c3-s5e6. 这是淘宝的默认值，其他站点可以根据实际情况修改。</li>
<li>这套布局符合渐进增强式工作流程。细心的你可能已经发现，所有两栏布局和三栏布局，HTML中的DOM结构是完全一样的，只有最外层div的class不同。如果要交换左右栏，只要非常简单的修改下class就可以。</li>
<li>实际使用时，两栏布局和三栏布局已经够用。其实有了两栏，其它布局就都可以组合出来。这里有一个尝试性页面：<a href="http://lifesinger.org/lab/grids_test4_v0.1.html">grids_test4_v0.1.html</a>. 组合布局看起来很强大，但实际使用时会把问题搞复杂，不推荐使用，干脆忘掉吧。</li>
</ol>
<p>最后来看下两个测试页面：<a href="http://lifesinger.org/lab/grid-c2_test.html">两栏布局grid-c2_test.html</a> 和 <a href="http://lifesinger.org/lab/grid-c3_test.html">三栏布局grid-c3_test.html</a>.</p>
<p>目前除了发现在ie6下有个bug（超大图片等会撑乱布局，其实可以用overflow: hidden来解决，但考虑overflow的<a href="http://lifesinger.org/blog/?p=614">负面影响</a>，最后还是由布局内部的模块来自主控制的好），尚未发现其他问题。</p>
<h4>小结</h4>
<p>栅格系统更多的是一种布局思想，在实际使用时，根据具体需求选用合适的技术来实现即可。需要注意的是，对于栅格的技术实现来说，太灵活未必是件好事，适度灵活最难得。怎么才能适度呢？这需要疯狂实践 + 不断的反思 + 持续的重构 + 悟…</p>
<p>栅格搭好了页面框架，接下来很重要的一件事情就是往里面添加内容模块。让内容模块规范化，让页面生成工业化，对大型站点来说，这是栅格系统最有商业价值的地方。下一篇也是本系列最后一篇将展示栅格系统中的模块化应用。</p>
<div>文章转自：taobaoUED</div>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/design/657.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>网页栅格系统研究（3）：粒度问题</title>
		<link>http://www.iamued.com/design/655.html</link>
		<comments>http://www.iamued.com/design/655.html#comments</comments>
		<pubDate>Mon, 07 Dec 2009 13:07:34 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[视觉设计]]></category>
		<category><![CDATA[页面实现]]></category>
		<category><![CDATA[960px]]></category>
		<category><![CDATA[交互设计]]></category>
		<category><![CDATA[产品设计]]></category>
		<category><![CDATA[栅格系统]]></category>
		<category><![CDATA[网页栅格]]></category>
		<category><![CDATA[视觉]]></category>
		<category><![CDATA[设计]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=655</guid>
		<description><![CDATA[研究（2）中讨论了栅格系统的基础知识。这一篇将集中探讨栅格系统的粒度问题。（注：如非特别指明，栅格系统均指24列960栅格系统） 淘宝的首页（截图）目前尚未严格遵守栅格系统，如果重构的话，宽度方向可以考虑采用下面的栅格布局（只考虑页面主体部分，忽略高度的比例）： （图1） 纷乱的高度世界 我们来看下图1左上角。左上角部分目前的宽度为256px, 重构的话可以将宽度缩小到230px以符合栅格（不可避免的要调整内容，比如人气宝贝中将只能放下3张图片）。来仔细看下高度方向： （图2） 高度方向的布局是：90 : 117 : 100, 第一个间隔是8, 总高度为325. 很明显，高度方向没有任何栅格化的迹象。实际上， 即便是严格遵守栅格系统的Yahoo!首页，高度方向上也没有严格栅格化。 这究竟是为何？ 一切皆有可能 我们缩小关注点： （图3） 上图中，图像的大小是70 x 70, 刚好是24列960栅格系统两列的宽度。对于右边的文字，采取了如下样式： font-size: 12px; line-height: 150%; /* 12 x 150% = 18px */ 中文字体是宋体，line-height的计算值是18px. 注意图3中文字部分可视区域的高度为65, 上下各有4px和1px的间隙。为什么会产生这么奇怪的间隙呢？我们来看下图： （图4） 从上图中我们可以得知，12px的宋体中文字，实际高度只有11px. line-height减去11多出来的高度，则“均匀”分布在上下间隙中（如果多出来的高度为偶数，则上下均分；为奇数时，上面比下面多1px）。这样，对于70px的高度来说，要布局4行文字时，假设行高多出来的上半部分为x, 下半部分为y, 在最理想的情况下，应该满足以下公式： 11 * 4 + 4 * x + 3 * y = [...]]]></description>
			<content:encoded><![CDATA[<div>
<p><a href="http://www.iamued.com/design/652.html">研究（2）</a>中讨论了栅格系统的基础知识。这一篇将集中探讨栅格系统的粒度问题。（注：如非特别指明，栅格系统均指24列960栅格系统）</p>
<p><a href="http://www.taobao.com/">淘宝的首页</a>（<a href="http://lifesinger.org/blog/wp-content/uploads/2008/10/taobao_snapshot_20081026.png" rel="lightbox[655]">截图</a>）目前尚未严格遵守栅格系统，如果重构的话，宽度方向可以考虑采用下面的栅格布局（只考虑页面主体部分，忽略高度的比例）：<br />
<a href="http://lifesinger.org/blog/wp-content/uploads/2008/10/taobao_grid_cols.png" rel="lightbox[655]"><img title="taobao_grid_cols" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/214435Mku.png" alt="" width="600" height="272" /></a><br />
（图1）<span id="more-655"></span></p>
<h4>纷乱的高度世界</h4>
<p>我们来看下图1左上角。左上角部分目前的宽度为256px, 重构的话可以将宽度缩小到230px以符合栅格（不可避免的要调整内容，比如人气宝贝中将只能放下3张图片）。来仔细看下高度方向：<br />
<img title="taobao_grid_lt" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/214441BKe.png" alt="" width="600" height="335" /><br />
（图2）<br />
高度方向的布局是：90 : 117 : 100, 第一个间隔是8, 总高度为325. 很明显，高度方向没有任何栅格化的迹象。实际上，</p>
<p>即便是严格遵守栅格系统的Yahoo!首页，高度方向上也没有严格栅格化。</p>
<p>这究竟是为何？</p>
<h4>一切皆有可能</h4>
<p>我们缩小关注点：<br />
<img title="grid_70_h" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/214442BuJ.png" alt="" width="500" height="120" /><br />
（图3）<br />
上图中，图像的大小是70 x 70, 刚好是24列960栅格系统两列的宽度。对于右边的文字，采取了如下样式：</p>
<pre><code>font-size: 12px;
line-height: 150%; /* 12 x 150% = 18px </code>*/</pre>
<p>中文字体是宋体，<code>line-height</code>的计算值是18px. 注意图3中文字部分可视区域的高度为65, 上下各有4px和1px的间隙。为什么会产生这么奇怪的间隙呢？我们来看下图：<br />
<img title="font_12px_line" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/214442BaX.png" alt="" width="420" height="48" /><br />
（图4）<br />
从上图中我们可以得知，12px的宋体中文字，实际高度只有11px. <code>line-height</code>减去11多出来的高度，则“均匀”分布在上下间隙中（如果多出来的高度为偶数，则上下均分；为奇数时，上面比下面多1px）。这样，对于70px的高度来说，要布局4行文字时，假设行高多出来的上半部分为<code>x</code>, 下半部分为<code>y</code>, 在最理想的情况下，应该满足以下公式：</p>
<pre><code>11 * 4 + 4 * x + 3 * y = 70
x = y 或 x = y + 1</code></pre>
<p>不难推出，<code>x</code>最理想的整数解为4. 从而<code>line-height</code>为 4 + 11 + 3 = 18. 因此：</p>
<p>对于24列960栅格系统来说，如果要在高度方向上实现栅格，<code>font-size</code>为12px时，<code>line-height</code>的最佳取值是18px(150%).</p>
<p>追求完美点话，还可以将文字部分<code>margin-top: -1px</code>, 使得65上下的间隙为3和2.</p>
<p>至此，我们可以初步判断：</p>
<p>高度方向上是有可能严格栅格化的。一切皆有可能！</p>
<h4>然而，现实总那么残酷</h4>
<p><img title="announce" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/214444oVq.png" alt="" width="360" height="117" /><br />
（图5）<br />
上图中的标题高度为22, 这在24列960栅格系统中是无法对齐的。而且总高度为100, 在24列960栅格系统中也不存在（110才可以）。或许高度方向上我们可以细化行宽为20, 但依旧没法解决上面两个问题（22是明显不能解决的，而对于100px的高度，也无法通过细化行宽来解决。可选高度永远是10的奇数倍，如果进一步细化，小于10后，会变得非常繁琐，没什么实际应用价值）</p>
<h4>宽度世界里会好些吗</h4>
<p><img title="yahoo_w" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/214453tZ7.png" alt="" width="500" height="139" /><br />
（图6）<br />
上面是Yahoo!首页上的两个小模块，我都不想去标注模块里面的布局宽度了（因为一点都不符合24列960栅格系统）。宽度世界里，和高度世界一样充满希望但现实却残酷无比。</p>
<h4>银弹是不存在的</h4>
<p>栅格系统是美好的。但如果我们一味地追求将所有设计都栅格化（必须承认我曾有这个幻想），则立刻会陷入地狱一般的黑暗中。这篇文章中的艰难尝试（我分析了20多个小模块），让我突然醒悟到一个粒度问题：任何设计都有适用范围，超出最佳适用范围，强行使用只会带来无尽的烦恼。对于栅格系统（这里指所有栅格系统，包括多种栅格系统混合使用的情景）来说，我觉得以下场景非常适合：</p>
<ol>
<li>页面的总体宽度布局，比如两栏、三栏等布局</li>
<li>一些固定区块的尺寸，比如广告图片的尺寸</li>
<li>区块之间的间距，可以参考栅格系统的槽宽（Gutter）</li>
<li>一些可以栅格化的小区域，比如图3中的例子，暗合栅格往往能简化布局上的考虑</li>
</ol>
<p>除了上面这些应用场景，强行使用栅格系统，往往会束手束脚，适得其反。这篇文章的目的，就是尝试用最啰嗦最费神貌似很科学实际很无聊的分析来指出栅格系统应用时的粒度问题。在粒度问题上达成一致后，下一篇中我们将讨论栅格系统的技术实现，最后一篇则讨论栅格系统的压轴好戏：模块化开发。</p>
</div>
<div>文章转自：taobaoUED<!-- .entry-content --></div>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/design/655.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>网页栅格系统研究（2）：蛋糕的切法</title>
		<link>http://www.iamued.com/design/652.html</link>
		<comments>http://www.iamued.com/design/652.html#comments</comments>
		<pubDate>Mon, 07 Dec 2009 13:05:21 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[视觉设计]]></category>
		<category><![CDATA[页面实现]]></category>
		<category><![CDATA[960px]]></category>
		<category><![CDATA[交互设计]]></category>
		<category><![CDATA[前端]]></category>
		<category><![CDATA[栅格系统]]></category>
		<category><![CDATA[网页栅格]]></category>
		<category><![CDATA[视觉]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=652</guid>
		<description><![CDATA[首先澄清一个应用场景问题。研究（1）中指出，对于结构复杂的网站，不少设计师们喜欢采用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 [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>首先澄清一个应用场景问题。<a href="http://www.iamued.com/design/648.html">研究（1）</a>中指出，对于结构复杂的网站，不少设计师们喜欢采用960固定宽度布局。但要注意的是，960并不是万能钥匙，大部分网站没有也不需要栅格系统。<a href="http://amazon.com/">Amazon</a>采用的是宽度自适应布局，最大限度的呈现信息。<a href="http://google.com/">Google</a>更是简简单单，主题部分就一个列表。<a href="http://ebay.com/">eBay</a>的页面非常简洁，商品页面宽度自适应，信息自然流畅，噪音少，购物很踏实。类似的站点还有很多，对于这些站点来说，宽度自适应布局更受青睐。</p>
<p><span id="more-652"></span>有个很有意思的网站是<a href="http://yahoo.com/">Yahoo!</a>, 看起来是固定宽度布局，实际上在CSS中只要去掉一行，就能摇身一变自适应宽度了：</p>
<pre>#page {
    <del>width: 70em;</del>
}</pre>
<p>为什么Yahoo!最后选择了定宽布局呢？这很可能是因为定宽布局比宽度自适应布局更容易控制。对于结构复杂的网站来说，可维护性和可扩展性非常重要。Yahoo!是以信息展示为主的门户型网站，960的宽度对于信息的阅读比较友善（Joe Clark写了一篇<a href="http://blog.fawny.org/2005/09/21/measures/">屏幕阅读时有关行长的有趣文章</a>）。种种因素使得Yahoo!最后采用了定宽布局（Tommy Olsson总结了<a href="http://www.autisticcuckoo.net/archive.php?id=2004/07/21/fixed-liquid-elastic">每种布局设计的优缺点</a>）。</p>
<p>这里将只关注定宽布局，适用的场景是搭建复杂的门户型网站。对于宽度自适应布局和相应的栅格系统，暂不讨论（根据实现的技术手段不同，宽度自适应布局又分为流体布局和弹性布局。我个人蛮喜欢弹性布局，以后有时间再研究）。</p>
<p>好了，已经将范围缩小到定宽布局的网页栅格系统，那我们开始吧。</p>
<h4>并不遥远的750</h4>
<p>还记得800×600的显示器不？虽然才时隔几年，感觉却好像是上个世纪的事了。Mark Boulton做了<a href="http://www.markboulton.co.uk/journal/comments/five_simple_steps_to_designing_grid_systems_part_4/">最早的探索</a>：<br />
<a href="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/213651sZq.gif" rel="lightbox[652]"><img title="grids_4_1" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/213651sZq.gif" alt="" width="490" height="368" /></a><br />
将750分割成均等的6份，这就形成了栅格系统，稍加组合划分就形成了两栏布局和三栏布局。Mark Boulton还研究了Gutter（垂直栏之间的间隙）对栅格的影响，有兴趣的可以阅读原文，或者跟着我往下看吧，下面将详细阐述。</p>
<h4>几个术语和一个公式</h4>
<p>一个标准的栅格系统，包括以下部分：<br />
<img title="grid_vocabulary" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/213653PIv.png" alt="" width="646" height="384" /><br />
将Flowline的总宽度标记为W, Column的宽度标记为c, Gutter宽度标记为g, Margin的宽度标记为m, Column的个数标记为N, 我们可以得到以下公式：</p>
<pre><code>W = c * N + g * (N - 1) + 2 * m</code></pre>
<p>一般来说，Gutter的宽度是Margin的两倍，上面的公式可以简化为：</p>
<pre><code>W = c * N + g * (N - 1) + g = (c + g) * N</code></pre>
<p>将c+g标记为C, 公式变得非常简单：</p>
<pre><code>W = C * N</code></pre>
<p>上面的公式就是栅格系统的基础，很简单吧。</p>
<h4>950的来历</h4>
<p>具体应用时，Margin其实是一个空白边，从视觉上看并不属于总宽度。不少栅格设计里习惯性地设定Gutter为10px, 这样Margin就是5px. 当W为960，分割成6列时，栅格如下图：<br />
<a href="http://lifesinger.org/blog/wp-content/uploads/2008/10/grid_960_6a.png" rel="lightbox[652]"><img title="grid_960_6a" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/213654oqC.png" alt="" width="300" height="119" /></a><br />
上图的处理是左右Margin各为5px. 也可以将Margin集中放在一边，比如右边：<br />
<a href="http://lifesinger.org/blog/wp-content/uploads/2008/10/grid_960_6b.png" rel="lightbox[652]"><img title="grid_960_6b" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/213657iiG.png" alt="" width="300" height="120" /></a><br />
无论Margin放在何处（这只影响技术实现，不影响设计），我们真正要关注的是去除Margin之后的部分：<br />
<a href="http://lifesinger.org/blog/wp-content/uploads/2008/10/grid_960_6.png" rel="lightbox[652]"><img title="grid_960_6" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/213658Vc1.png" alt="" width="300" height="120" /></a><br />
这就是我们要真正关注的950！将W的含义变为去除Margin的总宽度，公式变化为：</p>
<pre><code>W = N * C - g</code></pre>
<p>将上面的公式实例化一下：</p>
<pre><code>950 = 12 * 80 - 10
950 = 16 * 60 - 10
950 = 24 * 40 - 10</code></pre>
<p>这就形成了960蛋糕的三种常见切法。</p>
<p><strong>12 x 80</strong><br />
<a href="http://lifesinger.org/blog/wp-content/uploads/2008/10/grid_960_12.png" rel="lightbox[652]"><img title="grid_960_12" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/213659sgD.png" alt="" width="300" height="165" /></a></p>
<p><strong>16 x 60 </strong><br />
<a href="http://lifesinger.org/blog/wp-content/uploads/2008/10/grid_960_16.png" rel="lightbox[652]"><img title="grid_960_16" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/213701Q2D.png" alt="" width="300" height="189" /></a></p>
<p><strong>24 x 40</strong><br />
<a href="http://lifesinger.org/blog/wp-content/uploads/2008/10/grid_960_24.png" rel="lightbox[652]"><img title="grid_960_24" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/2137027im.png" alt="" width="300" height="236" /></a></p>
<p>上面三种切法，N越大，灵活度越高。可以根据网页的实际复杂度来选用对应的切法。在<a href="http://960.gs/">960 Grid System</a>首页中，展示了12 x 80的应用：<br />
<a href="http://lifesinger.org/blog/wp-content/uploads/2008/10/grid_960_12_example.png" rel="lightbox[652]"><img title="grid_960_12_example" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/213705unC.png" alt="" width="300" height="290" /></a></p>
<p>我们来看下 <a href="http://lifesinger.org/blog/?p=375">研究（1）</a>中开头列举的网站的栅格应用情况。</p>
<p>Yahoo!是很标准的 24 x 40 栅格：<br />
<a href="http://lifesinger.org/blog/wp-content/uploads/2008/10/yahoo_24.png" rel="lightbox[652]"><img title="yahoo_24" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/213712bnQ.png" alt="" width="300" height="269" /></a></p>
<p>淘宝网目前只有商城上部分使用了栅格系统（大的两栏布局遵守了 24 x 40 的栅格化，主体部分使用的另一套740的栅格划分）：<br />
<a href="http://lifesinger.org/blog/wp-content/uploads/2008/10/taobao_mall_24.png" rel="lightbox[652]"><img title="taobao_mall_24" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/213715Y4f.png" alt="" width="300" height="268" /></a></p>
<p>网易很不错，采用的是 16 x 60 的栅格系统：<br />
<a href="http://lifesinger.org/blog/wp-content/uploads/2008/10/nerease_16.png" rel="lightbox[652]"><img title="nerease_16" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/213718AG7.png" alt="" width="300" height="265" /></a></p>
<p>研究（1）中的其它站点都没有真正严格地采用栅格系统。</p>
<h4>栅格系统的优势</h4>
<p>上面的“发现”是让人有点沮丧的。目前严格采用栅格系统的站点非常少，为什么我们还要努力的让网页栅格化呢？</p>
<p>栅格系统具有以下优势：</p>
<ol>
<li>能大大提高网页的规范性。在栅格系统下，页面中所有组件的尺寸都是有规律的。这对于大型网站的开发和维护来说，能节约不少成本。</li>
<li>基于栅格进行设计，可以让整个网站各个页面的布局保持一致。这能增加页面的相似度，提升用户体验。</li>
<li>对于设计师们来说，灵活地运用栅格系统，能做出很多优秀和独特的设计。（详见《超越CSS》一书）</li>
</ol>
<p>对于大型网站来说，我相信栅格化将是一种潮流和趋势。</p>
<p>下面讨论栅格系统中的黄金分割。</p>
<h4>黄金分割</h4>
<p>黄金分割可以归结为数学问题：对于长度为1的线段，将其分成两部分 x 和 1 – x, 使得：</p>
<pre><code>x / 1 = (1 - x) / x</code></pre>
<p>化为简单的二次方程：</p>
<pre><code>x^2 + x - 1 = 0</code></pre>
<p>正数解为：</p>
<pre><code>x = (sqrt(5) - 1) / 2 ~= 0.618</code></pre>
<p>这就是黄金分割。这个比例不仅仅出现在诸如绘画、雕塑、音乐、建筑等艺术领域，在管理、工程设计等方面也有着不可忽视的作用。 （这是个自然界的魔数，类似的还有真空光速、普朗克常数、精细结构等等，感兴趣的Google吧）</p>
<p>在平面设计领域，黄金分割点被广泛采用。比如下面这种图：<br />
<a href="http://lifesinger.org/blog/wp-content/uploads/2008/10/gold.png" rel="lightbox[652]"><img title="gold" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/213718fah.png" alt="" width="300" height="176" /></a><br />
数一数上面有多少黄金分割？</p>
<p>对于960栅格，实际宽度是950. 两栏布局时，黄金分割为：<br />
<a href="http://lifesinger.org/blog/wp-content/uploads/2008/10/gold_2_col.png" rel="lightbox[652]"><img title="gold_2_col" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/213720yBF.png" alt="" width="300" height="106" /></a></p>
<p>对于 24 x 40 的情景，最接近黄金分割的两栏布局是 350 : 590, 栏数比例为 9 : 15. 但实际使用时，因为窄栏经常用来做导航或放辅助信息，并不需要350px这么宽。因此实际情况下经常被采用的布局是：<br />
<a href="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/213721s7u.png" rel="lightbox[652]"><img title="950_cols" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/213721s7u.png" alt="" width="410" height="186" /></a></p>
<p>上面讲的都是宽度方向上的栅格化，下面我们看看高度方向上如何应用。</p>
<h4>高度方向上的栅格</h4>
<p>还记得研究（1）中那张红红的很刺眼的图吗？注意高度值560也是很神奇的。</p>
<pre><code>N(560) = N(2^4 * 5 * 7) = 18
560 / 960 ~= 0.583</code></pre>
<p>N(560)比较大，同时可以让高宽比接近黄金分割。针对560, 我们采用 14 x 40 栅格：<br />
<a href="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/213725Pv6.png" rel="lightbox[652]"><img title="560_cols" src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/12/213725Pv6.png" alt="" width="410" height="284" /></a><br />
这样，我们就在宽度和高度两个方向上都实现了栅格化。</p>
<p>下一篇将详细阐述960栅格系统的模块化应用。</p>
</div>
<div>文章转自：taobaoUED<!-- .entry-content --></div>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/design/652.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

