<?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/web/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>[转]让Web开发者事半功倍的8个网站</title>
		<link>http://www.iamued.com/qianduan/1890.html</link>
		<comments>http://www.iamued.com/qianduan/1890.html#comments</comments>
		<pubDate>Mon, 20 Jun 2011 01:19:41 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[事半功倍]]></category>
		<category><![CDATA[开发]]></category>
		<category><![CDATA[页面实现]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=1890</guid>
		<description><![CDATA[1. Min.us: 上传图片的最简单方式 任何开发人员、设计师、网络管理员都必须跟客户和同事在线分享图片。Min.us的全部服务就是让你极度简单地上传图片：只需把图片拖拽到Min.us的网页里，图片就会保存在服务器上。并且自动生成短网址，这样你就可以通过这个网站分享图片了。 访问 Min.us 2. Wirify: 把任何网页转换成线框图 设计网站时线框图非常有用。Wirify是一个可以把任何网页立刻转换成线框图的书签工具，这样你就可以学习或应用到自己的工作中。 访问 Wirify 3. CSS Resetr: 查看和比较CSS resets CSS resets是所有样式表的必需品，以在不同的浏览器之间渲染。2004年以来，已经发布了许多不同的CSS resets。那么，哪个才是最适合你的项目的呢?CSS Resetr可以让你比较最流行的resets对同一个网页的渲染效果。 访问 CSS Resetr 4. Head JS: 用2.30 kb的Javascript代码来提速你的网站 Head JS是一段简单、轻量的脚本代码，通过像加载图片一样加载其他脚本，让你的网站更快。Head JS能做许多工作使你的网站变得现代化：支持CSS3、动态CSS等等。 访问 Head js 5. Copy Paste Character: 轻松使用特殊字符 特殊字符处理起来很麻烦，因为键盘上没有，而且你不知道对应的ASCII码。当然，你可以找一份ASCII码表放在桌面上，或者使用一个叫做Copy Paste Character的服务：只需点击所选字符，就可以复制到你的剪贴板。 访问 Copy Paste Character 6. DB Designr: 在线生成数据库模式 这是一个非常棒的简单在线生成数据库模式的工具。无需创建账户，你可以用你的Google账户登入。(我觉得我们伯乐在线网站的读者都有Google账户!说不定你就是通过Google阅读器在阅读此文。) 访问 DB Designr (得翻墙) 7. Web 2 pdf convert: [...]]]></description>
			<content:encoded><![CDATA[<p><!-- p.p1 {margin: 0.0px 0.0px 5.0px 0.0px; line-height: 21.0px; font: 14.0px Verdana} p.p2 {margin: 0.0px 0.0px 5.0px 0.0px; line-height: 21.0px; font: 14.0px Verdana; min-height: 17.0px} span.s1 {text-decoration: underline} --><strong> </strong></p>
<div id="_mcePaste"><strong></p>
<div id="_mcePaste"><span style="font-family: verdana, 'ms song', 宋体, Arial, 微软雅黑, Helvetica, sans-serif; line-height: 21px; font-weight: normal;"></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;"><strong style="padding: 0px; margin: 0px;">1. Min.us: 上传图片的最简单方式</strong></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;"><a style="color: black; text-decoration: underline; padding: 0px; margin: 0px;" href="http://images.51cto.com/files/uploadimg/20110421/1325120.jpg" target="_blank" rel="lightbox[1890]"><img style="width: 444px; height: 313px; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://images.51cto.com/files/uploadimg/20110421/1325120.jpg" border="0" alt="对Web开发人员有用的8个网站" width="594" height="397" /></a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;">任何开发人员、设计师、网络管理员都必须跟客户和同事在线分享图片。Min.us的全部服务就是让你极度简单地上传图片：只需把图片拖拽到Min.us的网页里，图片就会保存在服务器上。并且自动生成短网址，这样你就可以通过这个网站分享图片了。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;">访问 <a style="color: black; text-decoration: underline; padding: 0px; margin: 0px;" rel="”external" href="http://min.us/" target="_blank">Min.us</a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;"><strong style="padding: 0px; margin: 0px;">2. Wirify: 把任何网页转换成线框图</strong></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;">设计网站时线框图非常有用。Wirify是一个可以把任何网页立刻转换成线框图的书签工具，这样你就可以学习或应用到自己的工作中。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;">访问 <a style="color: black; text-decoration: underline; padding: 0px; margin: 0px;" rel="”external" href="http://www.volkside.com/2010/12/introducing-wirify-the-web-as-wireframes/" target="_blank">Wirify</a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;"><strong style="padding: 0px; margin: 0px;">3. CSS Resetr: 查看和比较CSS resets</strong></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;">CSS resets是所有样式表的必需品，以在不同的浏览器之间渲染。2004年以来，已经发布了许多不同的CSS resets。那么，哪个才是最适合你的项目的呢?CSS Resetr可以让你比较最流行的resets对同一个网页的渲染效果。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;">访问 <a style="color: black; text-decoration: underline; padding: 0px; margin: 0px;" rel="”external" href="http://cssresetr.com/" target="_blank">CSS Resetr</a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;"><strong style="padding: 0px; margin: 0px;">4. Head JS: 用2.30 kb的Javascript代码来提速你的网站</strong></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;">Head JS是一段简单、轻量的脚本代码，通过像加载图片一样加载其他脚本，让你的网站更快。Head JS能做许多工作使你的网站变得现代化：支持CSS3、动态CSS等等。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;">访问 <a style="color: black; text-decoration: underline; padding: 0px; margin: 0px;" rel="”external" href="http://headjs.com/" target="_blank">Head js</a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;"><strong style="padding: 0px; margin: 0px;">5. Copy Paste Character: 轻松使用特殊字符</strong></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;"><a style="color: black; text-decoration: underline; padding: 0px; margin: 0px;" href="http://images.51cto.com/files/uploadimg/20110421/1325121.jpg" target="_blank" rel="lightbox[1890]"><img style="width: 462px; height: 346px; padding: 0px; margin: 0px; border: 0px initial initial;" src="http://images.51cto.com/files/uploadimg/20110421/1325121.jpg" border="0" alt="对Web开发人员有用的8个网站" width="594" height="397" /></a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;">特殊字符处理起来很麻烦，因为键盘上没有，而且你不知道对应的ASCII码。当然，你可以找一份ASCII码表放在桌面上，或者使用一个叫做Copy Paste Character的服务：只需点击所选字符，就可以复制到你的剪贴板。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;">访问 <a style="color: black; text-decoration: underline; padding: 0px; margin: 0px;" rel="”external" href="http://www.copypastecharacter.com/" target="_blank">Copy Paste Character</a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;"><strong style="padding: 0px; margin: 0px;">6. DB Designr: 在线生成数据库模式</strong></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;">这是一个非常棒的简单在线生成数据库模式的工具。无需创建账户，你可以用你的Google账户登入。(我觉得我们伯乐在线网站的读者都有Google账户!说不定你就是通过Google阅读器在阅读此文。)</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;">访问 <a style="color: black; text-decoration: underline; padding: 0px; margin: 0px;" rel="”external" href="http://dbdsgnr.appspot.com/" target="_blank">DB Designr</a> (得翻墙)</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;"><strong style="padding: 0px; margin: 0px;">7. Web 2 pdf convert: 把转换任意网页为PDF</strong></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;">Web2PDF Converter是一个很有用的工具，能把转换任意网页为PDF文件。非常好用：我已经转换了5个页面，所有地方都跟html上的版本完全一样。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;">访问<a style="color: black; text-decoration: underline; padding: 0px; margin: 0px;" rel="”external" href="http://www.web2pdfconvert.com/" target="_blank">web 2 pdf convert</a></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;"><strong style="padding: 0px; margin: 0px;">8. ScriptSrc：轻轻松松地把html页面连接到JS库中</strong></p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;">你是否已经厌倦了在网上寻觅最新的Javascript库标签?ScriptSrc.net收录了jQuery、 Mootools、 Prototype等所有最新的标签，只需单击就可以把它复制到你的浏览器剪贴板。</p>
<p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; padding: 0px;">访问 <a style="color: black; text-decoration: underline; padding: 0px; margin: 0px;" rel="”external" href="http://scriptsrc.net/" target="_blank">ScriptSrc</a></p>
<div></div>
<p></span></div>
<p></strong></div>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/1890.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>再谈float菜单局中</title>
		<link>http://www.iamued.com/qianduan/825.html</link>
		<comments>http://www.iamued.com/qianduan/825.html#comments</comments>
		<pubDate>Mon, 21 Dec 2009 05:18:10 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[页面实现]]></category>
		<category><![CDATA[div+css]]></category>
		<category><![CDATA[Web标准]]></category>
		<category><![CDATA[前端]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=825</guid>
		<description><![CDATA[昨天用ucweb看到了goos发的一篇帖子：谁说Float菜单不可以水平居中，进去看了看，觉得方法有点繁琐了，用到了负边距，position:relativel; 和很少的一点hack。 我这里还有更简单的办法，先展示： 其实我外面应该再套一个div，但为了减少碳排放，舍弃。 DEMO1 DEMO2 其中最为关键的是这一句： 为了照顾较低版本IE，这里使用了条件注释，感觉在IE7以下中，display:inline;的作用就相当于inline-block;。   根据上面代码进化而来的滑动门导航：DEMO演示 其中，这两句有必要说明一下，以免被认为是多余的：   #navigation li a{overflow:hidden;} /* 隐藏掉IE5.5、6多掉的那3px，不是3px bug哈！因为height:30px;line-height:33px; 在IE5.5、6中高度就是33px了。 */ #navigation li a span{cursor:hand;}/* 照顾IE 5.5、6、7鼠标放在span上面不呈手型的bug。此外，IE5.5不支持cursor:pointer;但IE全版本都认识cursor:hand;*/ 完工了，缺点就是，写那一行条件注释，对于有xhtml洁癖的人来说，就像眼里的沙子，想除掉，那就使用hack也无妨！呵呵！ 在safari4，chorme，opera10，ie5.5、5、6、7,ff3中均暂未发现问题。 原文：http://www.blueidea.com/tech/web/2009/7281.asp]]></description>
			<content:encoded><![CDATA[<p>昨天用ucweb看到了goos发的一篇帖子：<a href="http://bbs.blueidea.com/thread-2933719-1-1.html" target="_blank">谁说Float菜单不可以水平居中</a>，进去看了看，觉得方法有点繁琐了，用到了负边距，position:relativel; 和很少的一点hack。</p>
<p>我这里还有更简单的办法，先展示：<br />
其实我外面应该再套一个div，但为了减少碳排放，舍弃。<br />
<a href="http://www.iamued.com/demo/menu-float/menu-float-demo1.html" target="_blank">DEMO1</a> <a href="http://www.iamued.com/demo/menu-float/menu-float-demo2.html" target="_blank">DEMO2</a><br />
<span id="more-825"></span>
<pre class="brush: xml; title: ; notranslate">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;style type=&quot;text/css&quot;&gt;
body{font-family:Verdana,Arial,sans-serif;font-size:12px;margin:120px auto;text-align:center;}
ul{margin:0;padding:0;list-style:none;}
#navigation{display:inline-block;border:solid 1px red;padding:20px;}
 #navigation li{height:30px;float:left;}
  #navigation li a{float:left;height:30px;line-height:30px;padding:0 23px;background:#97C099;}
  #navigation li a:hover{background:#59c099;color:#fff;}
&lt;/style&gt;
&lt;!--[if lte IE 7]&gt;&lt;style type=&quot;text/css&quot;&gt;#navigation{display:inline;}&lt;/style&gt;&lt;![endif]--&gt;
&lt;title&gt;float菜单局中一法&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;ul id=&quot;navigation&quot;&gt;
 &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Home&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href=&quot;#&quot;&gt;News&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Store&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Group&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Community&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href=&quot;#&quot;&gt;Help&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p> 其中最为关键的是这一句：
<pre class="brush: xml; title: ; notranslate">
&lt;!--[if lte IE 7]&gt;&lt;style type=&quot;text/css&quot;&gt;#navigation{display:inline;}&lt;/style&gt;&lt;![endif]--&gt;
</pre>
<p> 为了照顾较低版本IE，这里使用了条件注释，感觉在IE7以下中，display:inline;的作用就相当于inline-block;。     根据上面代码进化而来的滑动门导航：<a href="http://www.iamued.com/demo/menu-float/menu-float-demo2.html" target="_blank">DEMO</a>演示
<pre class="brush: xml; title: ; notranslate">
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot;&gt;
&lt;head&gt;
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
&lt;style type=&quot;text/css&quot;&gt;
body{font-family:Verdana,Arial,sans-serif;font-size:12px;margin:120px auto;text-align:center;}
ul{margin:0;padding:0;list-style:none;}
#navigation{display:inline-block;padding:20px;border:solid 1px red;}
 #navigation li{height:30px;float:left;}
  #navigation li a{float:left;background:#97C099 url(http://home.blueidea.com/attachment/200903/13/381636_1236958262fsCk.gif) left top no-repeat;padding-left:27px;height:30px;overflow:hidden;}
  #navigation li a span{height:30px;float:left;background:url(http://home.blueidea.com/attachment/200903/13/381636_1236958262fsCk.gif) right -352px no-repeat;padding-right:27px;line-height:33px;cursor:hand;}
  #navigation li a:hover,#navigation li.current a{background-position:left -176px;color:#009;background-color:#8597B5;}
  #navigation li a:hover span,#navigation li.current a span{background-position:right -528px;}
  #navigation li.current a{font-weight:bold;}
&lt;/style&gt;
&lt;!--[if lte IE 7]&gt;&lt;style type=&quot;text/css&quot;&gt;#navigation{display:inline;}&lt;/style&gt;&lt;![endif]--&gt;
&lt;title&gt;根据上面代码升级为滑动门样式&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;ul id=&quot;navigation&quot;&gt;
 &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;Home&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;News&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
 &lt;li class=&quot;current&quot;&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;Store&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;Group&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;Community&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
 &lt;li&gt;&lt;a href=&quot;#&quot;&gt;&lt;span&gt;Help&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/body&gt;
&lt;/html&gt;
</pre>
<p> <span>其中，这两句有必要说明一下，以免被认为是多余的：</span>  </p>
<blockquote><p>#navigation li a{overflow:hidden;} /* 隐藏掉IE5.5、6多掉的那3px，不是3px bug哈！因为height:30px;line-height:33px; 在IE5.5、6中高度就是33px了。 */  #navigation li a span{cursor:hand;}/* 照顾IE 5.5、6、7鼠标放在span上面不呈手型的bug。此外，IE5.5不支持cursor:pointer;但IE全版本都认识cursor:hand;*/</p></blockquote>
<p>完工了，缺点就是，写那一行条件注释，对于有xhtml洁癖的人来说，就像眼里的沙子，想除掉，那就使用hack也无妨！呵呵！  在safari4，chorme，opera10，ie5.5、5、6、7,ff3中均暂未发现问题。  原文：<a href="http://www.blueidea.com/tech/web/2009/7281.asp">http://www.blueidea.com/tech/web/2009/7281.asp</a></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/825.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>默认Web字体样式</title>
		<link>http://www.iamued.com/design/789.html</link>
		<comments>http://www.iamued.com/design/789.html#comments</comments>
		<pubDate>Thu, 17 Dec 2009 13:29:27 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[视觉设计]]></category>
		<category><![CDATA[页面实现]]></category>
		<category><![CDATA[字体]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=789</guid>
		<description><![CDATA[通常用户看到的页面的样式会受到三层控制，第一层是浏览器的默认样式，第二层是网页定义样式，第三层是用户自定义样式。和CSS一样，后面的优先级高于前面的，也就是说网页定义样式可以覆盖浏览器的默认样式，而用户自定义样式优先级最高。实际情况是虽然浏览器都或多或少提供了用户自定义样式的功能，但是极少数会有用户去自定义，一般用也是高级用户。而浏览器默认的样式往往在不同的浏览器、不同的语言版本甚至不同的系统版本都有不同的设置，这就导致如果直接利用默认样式的页面在各个浏览器下显示非常不一致，于是就有了类似YUI的reset之类用来尽量重写浏览器的默认设置保证各个浏览器样式一致性的做法。 拿字体来说，各个浏览器默认的字体种类、字体大小和字体行高都不一样，比如IE8的中文版在Windows XP下显示网页时默认字体是宋体，而英文版肯定不会如此。所以我们需要统一设置默认的字体样式，以便实现一致的显示效果来保证设计的一致性和提高开发效率。 以后准备使用如下默认字体样式： body{ font: 12px/1.5 arial; }   字体：arial 我们页面的绝大部分内容字符都是中文，毫无疑问目前为止在网页上最常用也是最通用的显示中文的字体是宋体，但是宋体在显示英文、数字和英文符号时过于糟糕，比如©字符，所以我们一般期望通过CSS来实现用更好的字体样式来显示它们，然后用宋体来显示中文和中文符号。之所以选择arial是因为： Windows和Mac都预装了这款字体，应该是使用最广泛的网页字体了。它的潜在对手tahoma和helvetica就没有这么幸运了。 视觉设计的专业人士可能会认为在Windows中使用tahoma、在Mac中使用helvetica更好，比如淘宝的默认字体样式是font: 12px/1 Tahoma, Helvetica, Arial, "\5b8b\4f53", sans-serif; 这是一个很不错的选择，但是你也会发现Google、YAHOO、Youtube、Bing甚至MSN的新版都使用arial作为第一默认字体。所以从美观和可读性上来讲arial应该是完全可以接受的。 一般情况下设置font-family都会在最后设置通用字体族以保证其安全性，比如Google的设置为font-family:arial,sans-serif;，但是至少在非中文版的Win7下当编码是GBK时，IE8会因sans-serif来渲染宋体，导致字体出现变形，这就是为什么淘宝需要在sans-serif前加上宋体而Google无需这样做的原因。 因为中文字体的选择非常有限，所以目前所有的主流浏览器都设置使用宋体来显示中文。Baidu的首页和搜索结果页使用font-family:arial;可以从侧面说明这样做的安全性。可能有人注意到Firefox中国版默认显示的中文字体是微软雅黑，这是因为谋智网络擅自修改了用户自定义样式，不允许网页的样式覆盖浏览器设置的样式。也是由于类似的情况，我们要弹性设计网页非常重要。 使用英文字体作为第一默认字体会导致的问题之一就是中英文以及符号混排时的对齐问题、通过设置行高和hasLayout能解决绝大部分情况，但是都不会很完美，如果把字体改成“宋体”能彻底的解决问题。很明显，这个问题只出现在IE上。所以，如果你的网站很少使用英文、数字和英文符号，那么直接设置{font-family:\5b8b\4f53;}也是很合理的选择。 大小：12px 12px是宋体能显示的极限，虽然微软雅黑能显示更小的字体，但目前的应用环境尚未成熟。由于宋体基本上是目前显示中文唯一的通用Web字体，所以12px成为最常用的字体大小。我们当然可以依据产品的需要来修改这个默认值。 不用考虑基于字体大小（em）的设计。 在Chrome3.0之后的中文版中，字体大小最小值是12px，比如你设置最小字体为10px，最后也变成12px。 行高：1.5倍 这是一个经验值，不同的产品对这个值要求可能不同，但我们一般会设置最常用的为默认值。比如YUI的font中是font:13px/1.231 arial,helvetica,clean,sans-serif;即字体大小默认值是13px，行高是13*1.231=16.003px，默认的行高是默认字体的1.231倍。对于中文来说，常用的字体大小12px、14px、16px、18px等偶数大小，在IE6和IE7设置其行高也为偶数能解决一些特殊情况下的字体对其问题。 在IE6和IE7中，行高值必须大于字体的2px才能保证字体的完整显示或当其作为链接时能有效显示下划线。 设置line-height时，注意不要使用单位（包括%在内），因为子节点会继承经过运算后的line-height值，所以当使用单位后浏览器会把line-height计算成第一次定义的绝对值，而不会随着字体大小的变化而变化，而无单位的数值表示是所在容器的font-size的倍数，所以设置为无单位的数值是最佳选择。 深入CSS 行高非常有利于理解line-height，值得一读。 性能和效率 大部分平台都有arial，减少浏览器的查找时间。 代码最少，书写方便。arial基本上是名字最短的字体了，可以节约CSS的大小。 所有的字母都小写，目前Google就是这样做的，好处是既可以编写更快也能提升Gzip压缩的效率。 中文最好用unicode表示，比如使用宋体是{font-family:\5b8b\4f53;}，使用微软雅黑是{font-family:\5fae\8f6f\96c5\9ed1;}，这样的好处是避免编码问题，同时能得到所有的主流浏览器的支持。 使用正确的字体种类写法，避免使用引号，这样可以缩小CSS的大小。中文字体可以按上一条方式来编写。 未来 通过对中英文及符号混排的测试，我发现微软雅黑其实表现相当不错，包括英文数字和英文字符以及在IE6和IE7的显示效果上，但唯一的遗憾是在XP下如果安装了微软雅黑字体的用户没有打开“使用屏幕字体的边缘平滑”选项的话，在Firefox、Safari和Opera、特别是IE6下会非常模糊难以辨认。针对这个问题目前并没有很好的解决方案，所以只有等到IE6使用比率非常小的时候才可能正式的使用它。或许需要到2014年，XP死掉的时候。 虽然很早就有了@font-face，但是浏览器的支持、网速和商业问题，导致它很少被应用。最近关于字体的好消息是Firefox3.6将支持Web Open Font Forma。关于Web字体未来的相关信息可以看Web 字体的未来、关于 Web 字体：现状与未来和再谈 Web 字体的现状与未来。 最后推荐一下玉伯的《再谈 Web 默认字体》 [...]]]></description>
			<content:encoded><![CDATA[<p>通常用户看到的页面的样式会受到三层控制，第一层是浏览器的默认样式，第二层是网页定义样式，第三层是用户自定义样式。和CSS一样，后面的优先级高于前面的，也就是说网页定义样式可以覆盖浏览器的默认样式，而用户自定义样式优先级最高。实际情况是虽然浏览器都或多或少提供了用户自定义样式的功能，但是极少数会有用户去自定义，一般用也是高级用户。而浏览器默认的样式往往在不同的浏览器、不同的语言版本甚至不同的系统版本都有不同的设置，这就导致如果直接利用默认样式的页面在各个浏览器下显示非常不一致，于是就有了类似<a href="http://developer.yahoo.com/yui/3/cssreset/" target="_blank">YUI的reset</a>之类用来尽量重写浏览器的默认设置保证各个浏览器样式一致性的做法。</p>
<p>拿字体来说，各个浏览器默认的字体种类、字体大小和字体行高都不一样，比如IE8的中文版在Windows XP下显示网页时默认字体是宋体，而英文版肯定不会如此。所以我们需要统一设置默认的字体样式，以便实现一致的显示效果来保证设计的一致性和提高开发效率。<br />
<span id="more-789"></span><br />
以后准备使用如下默认字体样式：</p>
<pre><code>body{
  font: 12px/1.5 arial;
}</code></pre>
<p><span id="more-1491"> </span></p>
<h3>字体：<a href="http://www.designworkplan.com/typography-fonts/arial-is-everywhere.htm" target="_blank">arial</a></h3>
<p>我们页面的绝大部分内容字符都是中文，毫无疑问目前为止在网页上最常用也是最通用的显示中文的字体是宋体，但是<a href="http://dancewithnet.com/lab/2009/web-font/" target="_blank">宋体在显示英文、数字和英文符号时过于糟糕</a>，比如©字符，所以我们一般期望通过CSS来实现用更好的字体样式来显示它们，然后用宋体来显示中文和中文符号。之所以选择arial是因为：</p>
<ol>
<li>Windows和Mac都预装了这款字体，应该是使用最广泛的网页字体了。它的潜在对手<code>tahoma</code>和<code>helvetica</code>就没有这么幸运了。</li>
<li>视觉设计的专业人士可能会认为<a href="http://www.cnblogs.com/ruxpinsp1/archive/2008/05/11/font-in-front-end-development-4.html" target="_blank">在Windows中使用tahoma、在Mac中使用helvetica</a>更好，比如<a href="http://lifesinger.org/blog/2009/08/font-family-in-css/">淘宝的默认字体样式</a>是<code>font: 12px/1 Tahoma, Helvetica, Arial, "\5b8b\4f53", sans-serif;<br />
</code>这是一个很不错的选择，但是你也会发现Google、YAHOO、Youtube、Bing甚至<a href="http://www.msn.com/preview.aspx" target="_blank">MSN的新版</a>都使用<code>arial</code>作为第一默认字体。所以从美观和可读性上来讲<code>arial</code>应该是完全可以接受的。</li>
<li>一般情况下设置font-family都会在最后设置<a href="http://www.cnblogs.com/ruxpinsp1/archive/2008/04/29/font-in-front-end-development-1.html" target="_blank">通用字体族</a>以保证其安全性，比如Google的设置为<code>font-family:arial,sans-serif;</code>，但是至少在非中文版的Win7下当编码是GBK时，IE8会因<code>sans-serif</code>来渲染宋体，导致字体出现变形，这就是为什么淘宝需要在<code>sans-serif</code>前加上宋体而Google无需这样做的原因。</li>
<li>因为中文字体的选择非常有限，所以目前所有的主流浏览器都设置使用宋体来显示中文。Baidu的首页和搜索结果页使用<code>font-family:arial;</code>可以从侧面说明这样做的安全性。可能有人注意到<a href="http://g-fox.cn/" target="_blank">Firefox中国版</a>默认显示的中文字体是微软雅黑，这是因为谋智网络擅自修改了用户自定义样式，不允许网页的样式覆盖浏览器设置的样式。也是由于类似的情况，我们要弹性设计网页非常重要。</li>
</ol>
<p>使用英文字体作为第一默认字体会导致的问题之一就是<a href="http://dancewithnet.com/lab/2009/web-font/" target="_blank">中英文以及符号混排时的对齐问题</a>、通过设置行高和hasLayout能解决绝大部分情况，但是都不会很完美，如果把字体改成“宋体”能彻底的解决问题。很明显，这个问题只出现在IE上。所以，如果你的网站很少使用英文、数字和英文符号，那么直接设置<code>{font-family:\5b8b\4f53;}</code>也是很合理的选择。</p>
<h3>大小：12px</h3>
<ol>
<li>12px是宋体能显示的极限，<a href="http://www.docin.com/p-2647154.html" target="_blank">虽然微软雅黑能显示更小的字体</a>，但目前的应用环境尚未成熟。由于宋体基本上是目前显示中文唯一的通用Web字体，所以12px成为最常用的字体大小。我们当然可以依据产品的需要来修改这个默认值。</li>
<li><a href="http://dancewithnet.com/2008/06/17/it-is-time-to-discard-font-size-adjustments/" target="_blank">不用考虑基于字体大小（em）的设计</a>。</li>
<li>在Chrome3.0之后的中文版中，字体大小最小值是12px，比如你设置最小字体为10px，最后也变成12px。</li>
</ol>
<h3>行高：1.5倍</h3>
<ol>
<li>这是一个经验值，不同的产品对这个值要求可能不同，但我们一般会设置最常用的为默认值。比如<a href="http://developer.yahoo.com/yui/3/cssfonts/" target="_blank">YUI的font</a>中是<code>font:13px/1.231 arial,helvetica,clean,sans-serif;</code>即字体大小默认值是13px，行高是13*1.231=16.003px，默认的行高是默认字体的1.231倍。对于中文来说，常用的字体大小12px、14px、16px、18px等偶数大小，在IE6和IE7设置其行高也为偶数能解决一些特殊情况下的字体对其问题。</li>
<li>在IE6和IE7中，行高值必须大于字体的2px才能保证字体的完整显示或当其作为链接时能有效显示下划线。</li>
<li>设置<code>line-height</code>时，<a href="http://meyerweb.com/eric/thoughts/2006/02/08/unitless-line-heights/" target="_blank">注意不要使用单位（包括%在内）</a>，因为子节点会继承经过运算后的line-height值，所以当使用单位后浏览器会把<code>line-height</code>计算成第一次定义的绝对值，而不会随着字体大小的变化而变化，而无单位的数值表示是所在容器的<code>font-size</code>的倍数，所以设置为无单位的数值是最佳选择。</li>
<li><a href="http://webteam.tencent.com/?p=1503" target="_blank">深入CSS 行高</a>非常有利于理解<code>line-height</code>，值得一读。</li>
</ol>
<h3>性能和效率</h3>
<ol>
<li>大部分平台都有<code>arial</code>，减少浏览器的查找时间。</li>
<li>代码最少，书写方便。<code>arial</code>基本上是名字最短的字体了，可以节约CSS的大小。</li>
<li>所有的字母都小写，目前Google就是这样做的，好处是既可以编写更快也能<a href="http://code.google.com/speed/page-speed/docs/payload.html#GzipCompression" target="_blank">提升Gzip压缩的效率</a>。</li>
<li><a href="http://lifesinger.org/blog/2009/08/font-family-in-css/" target="_blank">中文最好用unicode表示</a>，比如使用宋体是<code>{font-family:\5b8b\4f53;}</code>，使用微软雅黑是<code>{font-family:\5fae\8f6f\96c5\9ed1;}</code>，这样的好处是避免编码问题，同时能得到所有的主流浏览器的支持。</li>
<li><a href="http://www.cnblogs.com/ruxpinsp1/archive/2008/05/11/font-in-front-end-development-4.html" target="_blank">使用正确的字体种类写法，避免使用引号</a>，这样可以缩小CSS的大小。中文字体可以按上一条方式来编写。</li>
</ol>
<h3>未来</h3>
<ol>
<li>通过对<a href="http://dancewithnet.com/lab/2009/web-font/" target="_blank">中英文及符号混排的测试</a>，我发现微软雅黑其实表现相当不错，包括英文数字和英文字符以及在IE6和IE7的显示效果上，但唯一的遗憾是在XP下如果安装了微软雅黑字体的用户没有打开“使用屏幕字体的边缘平滑”选项的话，在Firefox、Safari和Opera、特别是IE6下会非常模糊难以辨认。针对这个问题目前并没有很好的解决方案，所以只有等到IE6使用比率非常小的时候才可能正式的使用它。或许需要到2014年，XP死掉的时候。</li>
<li>虽然很早就有了@font-face，但是浏览器的支持、网速和商业问题，导致它很少被应用。最近关于字体的好消息是<a href="http://internet.solidot.org/internet/09/11/03/0646210.shtml" target="_blank">Firefox3.6将支持Web Open Font Forma</a>。关于Web字体未来的相关信息可以看<a href="http://www.comsharp.com/GetKnowledge/zh-CN/CMS_K441.aspx" target="_blank">Web 字体的未来</a>、<a href="http://www.comsharp.com/GetKnowledge/zh-CN/It_News_K830.aspx" target="_blank">关于 Web 字体：现状与未来</a>和<a href="http://www.comsharp.com/GetKnowledge/zh-CN/It_News_K832.aspx" target="_blank">再谈 Web 字体的现状与未来</a>。</li>
</ol>
<p>最后推荐一下玉伯的<a href="http://lifesinger.org/blog/2009/11/web-default-font/" target="_blank">《再谈 Web 默认字体》</a></p>
<p>原文：<a href="http://dancewithnet.com/2009/11/22/default-web-font-style/" target="_blank">http://dancewithnet.com/2009/11/22/default-web-font-style/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/design/789.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<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>
		<item>
		<title>由黄钻等级图标处理引发的思考</title>
		<link>http://www.iamued.com/qianduan/554.html</link>
		<comments>http://www.iamued.com/qianduan/554.html#comments</comments>
		<pubDate>Thu, 19 Nov 2009 12:58:34 +0000</pubDate>
		<dc:creator>RichieLiu</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[页面实现]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[前端]]></category>

		<guid isPermaLink="false">http://www.iamued.com/?p=554</guid>
		<description><![CDATA[最近在处理Qzone黄钻图标更新时，想起近期对业务图标进行优化所遇到的一些问题，把思绪收拾起来和大家一共探讨，欢迎多方声音。 在实际工作中，图标类的应用非常广泛，如同数组般的等级图标更显其特殊性。下面要共同探讨的两个方向，以什么方式实现及怎么更好在贴近项目实际更好地实现并供应用。 假设：业务的用户等级共有10个，加上大小2种视觉尺寸的图标，还有“过期未续费用户”的表现，共有38个图标需要入库供调用（如下图）。 在项目的CSS框架研发中，会有几个key作为考虑：请求数、代码量、兼容性、图片文件大小、是否可并为组件模块且方便逻辑性实现。 众多不同等级的图标在不同方式的广泛应用时，是否会产生过多的文件请求； 等级图标的代码在实现上是否会使用过多的代码，且页面上真实应用的只是少量代码，从而造成代码臃肿； (x)html+css输出的图标应用到页面中，是否和页面上其它元素兼容，否则将为达到兼容目标而增加一系列代码； 如果各图标合并后，权衡项目应用的实际情况，图象文件是否会过大而消耗带宽； 图标的HTML固定，className命名中的某个数字命为作为变量，通过修改变量来达到表现效果。 回顾之前的出现的处理方式，可以归总为三种： 前景图的插入 这应是最原始的处理方式了，将众多单个等级的图片有序命名存放到一个目录，由前端页面应用，通过修改文件名的方式更换不同的等级显示。在实际的用户列表页面中，因为不同的用户通属不同的等级，那么，就会显示不贩等级图标，如上面假设，就会同时产生38个请求。且在项目的维护上，极易存在瓶颈。假设根据需目需要对图标文件更换存放目录或更改其尺寸大小，那么需要大面积对所有应用过的开发 template文件排查处理（更改URL，宽高定义，文件名等），很多情况难以维系在可控范围。 透明图+背景的实现 这是Qzone项目中使用最多的一种方式，在项目的访问速度体验优化及图标实际应用中起到不可磨灭的作用，该方式后期也陆续为国内外其它网站使用。其具体实现方式是，保存一张1*1像素的透明图片，并将其设置长时间cache，因其display属性的特殊性，图片在页面布局上得心应手，且解决了多请求的问题，同时解决图片合并区域扩展维护的问题。但是，一旦在客户端cache文件队列中被挤掉，cache失败，该方式容易让这张透明的前景替位图产生洪水式的请求， 造成服务器压力和大流量。且&#60;img /&#62;容易继承项目中其它定义。在图标与文字的垂直对齐上各浏览器的渲染解析不一样，从而增加一些兼容代码。 也有衍生出来空src的处理方式，如&#60;img src=”” class=”app_icon” alt=”icon” /&#62;，表面上看，可以节省文件的请求，但事实上，它除了会导致大量的无效请求外，还会向日给apache不断写入错误的log，造成过大的服务端压力，同时，在非IE浏览器（如firefox)也会表现出缺省图象的红叉。 内容标签+背景 这里说的是带文字等内容的标签加入黄钻等级图标背景来实现，如&#60;span&#62;我是黄钻7级用户&#60;/span&#62;，给span的左边定义一个图标，把文字向右移动一定的位置。大伙在实践中验证，这种在语义上和实现上，可以说是完美的了。但是，不方便项目代码的规划和管理，特别像等级图片这类的可以归入库的代码及应用方式。同时，标题的大小区域为不可控，在后续的维护中，更会不定期更改其区域大小，那么，就在图片的合并上存在瓶颈，难以确定一个图片该预留多大的透明区域，使之不影响到其它场景的图片应用，也可能会因为后期的维护处理不当，影响到其它标签区域的背景显示异常，造成不良的用户体验。 标签载体+背景 结合前几点所述，用一个标签作为图片的载体，再给它定义背景等属性，显示出相应的图标。它既可以免除用图片处理产生的流量和请求及服务器压力，又减去合并图片时所考虑的预留空间尺寸。一般标签不具img的特殊属性，既能成块状显示出图标，又能和文字等共处一行内，那么在选取的这个标签要在样式上定义得较少，不易继承样式影响表现，破坏页面的兼容和库文件的管理维护。 在实际项目中，选用了strong作为图标的替代标签： 回顾完各种处理方式后，一起来了解一下实现上的细节，分析一下文章第一张图所示，共有38个图标，且都是图形化，原始想法是，把38个图合并成一个文件。但细心看，这38个图片，有好多的相同的图形，经过整理后，得到下面这张图： 除四个图标载体外，数字都是相同的，因为这里使用的是第四种处理方式，那么在图标的合并上，不用给各小图片块预留过多的透明区域。 雪碧图处理好以后，就可以着手写代码来实现效果了。 &#60;strong&#62;&#60;span&#62;&#60;span&#62;lv1&#60;/span&#62;&#60;/span&#62;&#60;/strong&#62; &#60;strong&#62;&#60;span&#62;&#60;span&#62;lv2&#60;/span&#62;&#60;/span&#62;&#60;/strong&#62; 为了让标签具有img的特有属性，给strong定义display:-moz-inline-stack;display:inline-block; 因各浏览器兼容性的原因，需要定义了两个属性，这里不禁一定要问了，为什么不选用-moz-inline-box呢？这里选用-moz-inline-stack而非-moz-inline-box的原因是： 使用-moz-inline-stack可以解决Firefox2不支持inline-block的问题，但是所有的Firefox版本对于属性为-moz-inline-stack的Element，它的First child element会继承该Element的宽度和高度，但是再下一级的Element不会再继承该属性。 这里说说一下与本图标应用无关的话题，在实际应用中-moz-inline-box会存在元素间的对齐等问题，在处理自适应宽的&#60;button&#62;就能遇到。虽然Firefox有一个私有属性-moz-box-align来帮助解决Element水平对齐问题，但未能预见的问题依旧不少，而相对来说-moz-inline-stack的表现更像inline-block，这点可以在Firefox3中验证出来。仅管如此，-moz-inline-stack使用时也会有一个bug，如果一个moz-inline-stack的Element外层Element是inline属性就会使Firefox中其包含的链接不可点(和IE6的filter+position:absolute出现的BUG一样），这个可以借助position:relative;来解决。 设置完display属性后，我们就给图标定义宽高。实际的图标处理中，完成这两步基本就OK了。但是这个图标应用较为特殊，因为它是两个背景合成一个图标的（载体+等级数），如下图： 下面是两个载体的拼合示意： 所以在结构上加多了两个span，一个是给等级数字的背景载体，另一个是隐藏图标替换文字。 代码写完后，发现代码量相当的惊人，因为只在最外层定义不同的className，那么，就意味着，我们要对众多个类及其里面的标题定义： .gb_vip_1 span, .gb_vip_2 span, .gb_vip_3 span, .gb_vip_4 span, .gb_vip_5 span, .gb_vip_6 span, .gb_vip_7 [...]]]></description>
			<content:encoded><![CDATA[<p align="center"><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/11/205835dcX.jpg" border="0" alt="" width="510" height="171" /></p>
<p>最近在处理Qzone<strong>黄钻图标</strong>更新时，想起近期对业务图标进行优化所遇到的一些问题，把思绪收拾起来和大家一共探讨，欢迎多方声音。</p>
<p>在实际工作中，图标类的应用非常广泛，如同数组般的等级图标更显其特殊性。下面要共同探讨的两个方向，以什么方式实现及怎么更好在贴近项目实际更好地实现并供应用。</p>
<p><span id="more-554"></span></p>
<p>假设：业务的用户等级共有10个，加上大小2种视觉尺寸的图标，还有“过期未续费用户”的表现，共有38个图标需要入库供调用（如下图）。</p>
<p align="center"><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/11/205838yxD.png" border="0" alt="" width="417" height="249" /></p>
<p>在项目的CSS框架研发中，会有几个key作为考虑：请求数、代码量、兼容性、图片文件大小、是否可并为组件模块且方便逻辑性实现。</p>
<ol>
<li>众多不同等级的图标在不同方式的广泛应用时，是否会产生过多的文件请求；</li>
<li>等级图标的代码在实现上是否会使用过多的代码，且页面上真实应用的只是少量代码，从而造成代码臃肿；</li>
<li>(x)html+css输出的图标应用到页面中，是否和页面上其它元素兼容，否则将为达到兼容目标而增加一系列代码；</li>
<li>如果各图标合并后，权衡项目应用的实际情况，图象文件是否会过大而消耗带宽；</li>
<li>图标的HTML固定，className命名中的某个数字命为作为变量，通过修改变量来达到表现效果。</li>
</ol>
<p>回顾之前的出现的处理方式，可以归总为三种：</p>
<ol>
<li><strong>前景图的插入</strong><br />
这应是最原始的处理方式了，将众多单个等级的图片有序命名存放到一个目录，由前端页面应用，通过修改文件名的方式更换不同的等级显示。在实际的用户列表页面中，因为不同的用户通属不同的等级，那么，就会显示不贩等级图标，如上面假设，就会同时产生38个请求。且在项目的维护上，极易存在瓶颈。假设根据需目需要对图标文件更换存放目录或更改其尺寸大小，那么需要大面积对所有应用过的开发 template文件排查处理（更改URL，宽高定义，文件名等），很多情况难以维系在可控范围。</li>
<li><strong>透明图+背景的实现</strong><br />
这是Qzone项目中使用最多的一种方式，在项目的访问速度体验优化及图标实际应用中起到不可磨灭的作用，该方式后期也陆续为国内外其它网站使用。其具体实现方式是，保存一张1*1像素的透明图片，并将其设置长时间cache，因其display属性的特殊性，图片在页面布局上得心应手，且解决了多请求的问题，同时解决图片合并区域扩展维护的问题。但是，一旦在客户端cache文件队列中被挤掉，cache失败，该方式容易让这张透明的前景替位图产生洪水式的请求， 造成服务器压力和大流量。且&lt;img /&gt;容易继承项目中其它定义。在图标与文字的垂直对齐上各浏览器的渲染解析不一样，从而增加一些兼容代码。<br />
也有衍生出来空src的处理方式，如&lt;img src=”” class=”app_icon” alt=”icon” /&gt;，表面上看，可以节省文件的请求，但事实上，它除了会导致大量的无效请求外，还会向日给apache不断写入错误的log，造成过大的服务端压力，同时，在非IE浏览器（如firefox)也会表现出缺省图象的红叉。<br />
<img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/11/205838Euh.png" border="0" alt="" width="463" height="197" /></li>
<li><strong>内容标签+背景</strong><br />
这里说的是带文字等内容的标签加入黄钻等级图标背景来实现，如&lt;span&gt;我是黄钻7级用户&lt;/span&gt;，给span的左边定义一个图标，把文字向右移动一定的位置。大伙在实践中验证，这种在语义上和实现上，可以说是完美的了。但是，不方便项目代码的规划和管理，特别像等级图片这类的可以归入库的代码及应用方式。同时，标题的大小区域为不可控，在后续的维护中，更会不定期更改其区域大小，那么，就在图片的合并上存在瓶颈，难以确定一个图片该预留多大的透明区域，使之不影响到其它场景的图片应用，也可能会因为后期的维护处理不当，影响到其它标签区域的背景显示异常，造成不良的用户体验。<img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/11/205839tdb.png" border="0" alt="" width="306" height="269" /></li>
<li><strong>标签载体+背景<br />
</strong>结合前几点所述，用一个标签作为图片的载体，再给它定义背景等属性，显示出相应的图标。它既可以免除用图片处理产生的流量和请求及服务器压力，又减去合并图片时所考虑的预留空间尺寸。一般标签不具img的特殊属性，既能成块状显示出图标，又能和文字等共处一行内，那么在选取的这个标签要在样式上定义得较少，不易继承样式影响表现，破坏页面的兼容和库文件的管理维护。<br />
在实际项目中，选用了strong作为图标的替代标签：<img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/11/205839f5w.png" border="0" alt="" width="393" height="405" /></li>
</ol>
<p>回顾完各种处理方式后，一起来了解一下实现上的细节，分析一下文章第一张图所示，共有38个图标，且都是图形化，原始想法是，把38个图合并成一个文件。但细心看，这38个图片，有好多的相同的图形，经过整理后，得到下面这张图：</p>
<p align="center"><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/11/205839jek.png" border="0" alt="" width="492" height="72" /></p>
<p>除四个图标载体外，数字都是相同的，因为这里使用的是第四种处理方式，那么在图标的合并上，不用给各小图片块预留过多的透明区域。<br />
雪碧图处理好以后，就可以着手写代码来实现效果了。</p>
<p><span>&lt;strong&gt;&lt;span&gt;&lt;span&gt;lv1&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;<br />
&lt;strong&gt;&lt;span&gt;&lt;span&gt;lv2&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;</span></p>
<p>为了让标签具有img的特有属性，给strong定义display:-moz-inline-stack;display:inline-block;<br />
因各浏览器兼容性的原因，需要定义了两个属性，这里不禁一定要问了，为什么不选用-moz-inline-box呢？这里选用-moz-inline-stack而非-moz-inline-box的原因是：</p>
<ol>
<li>使用-moz-inline-stack可以解决Firefox2不支持inline-block的问题，但是所有的Firefox版本对于属性为-moz-inline-stack的Element，它的First child element会继承该Element的宽度和高度，但是再下一级的Element不会再继承该属性。</li>
<li>这里说说一下与本图标应用无关的话题，在实际应用中-moz-inline-box会存在元素间的对齐等问题，在处理自适应宽的&lt;button&gt;就能遇到。虽然Firefox有一个私有属性-moz-box-align来帮助解决Element水平对齐问题，但未能预见的问题依旧不少，而相对来说-moz-inline-stack的表现更像inline-block，这点可以在Firefox3中验证出来。仅管如此，-moz-inline-stack使用时也会有一个bug，如果一个moz-inline-stack的Element外层Element是inline属性就会使Firefox中其包含的链接不可点(和IE6的filter+position:absolute出现的BUG一样），这个可以借助position:relative;来解决。</li>
</ol>
<p>设置完display属性后，我们就给图标定义宽高。实际的图标处理中，完成这两步基本就OK了。但是这个图标应用较为特殊，因为它是两个背景合成一个图标的（载体+等级数），如下图：</p>
<p align="center"><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/11/2058391wP.png" border="0" alt="" width="115" height="33" /></p>
<p>下面是两个载体的拼合示意：</p>
<p align="center"><img src="http://iamued-wordpress.stor.sinaapp.com/uploads/auto_save_image/2009/11/205839wuk.png" border="0" alt="" width="68" height="48" /></p>
<p>所以在结构上加多了两个span，一个是给等级数字的背景载体，另一个是隐藏图标替换文字。</p>
<p>代码写完后，发现代码量相当的惊人，因为只在最外层定义不同的className，那么，就意味着，我们要对众多个类及其里面的标题定义：<br />
<code>.gb_vip_1 span,<br />
.gb_vip_2 span,<br />
.gb_vip_3 span,<br />
.gb_vip_4 span,<br />
.gb_vip_5 span,<br />
.gb_vip_6 span,<br />
.gb_vip_7 span</code><br />
这样代码就相当臃肿，于是，改变className的定义方式，给各个等级图标最外层容器定义相同的命名，给里面数字的载体定义区别显示的命名(带数字的命名是方便逻辑实现)：<br />
<code><strong class="gb_vip_icon"><span class="lv1"><span class="gb_vip_none">lv1</span></span></strong><br />
<strong class="gb_vip_icon"><span class="lv2"><span class="gb_vip_none">lv2</span></span></strong></code><br />
以上所述的供讨论和参考，期盼大伙一些其它的想法和分享。</p>
<p>原文：http://webteam.tencent.com/?p=1330</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iamued.com/qianduan/554.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

