<?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>第8音 PD  ID  UE &#187; 产品编码</title>
	<atom:link href="http://blog.d8in.com/posts/category/develop/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.d8in.com</link>
	<description>Design is a  Life Style</description>
	<lastBuildDate>Wed, 10 Mar 2010 12:44:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>一个简单的标签云图算法（Tag Clouds ）</title>
		<link>http://blog.d8in.com/posts/493.html</link>
		<comments>http://blog.d8in.com/posts/493.html#comments</comments>
		<pubDate>Wed, 15 Jul 2009 01:43:18 +0000</pubDate>
		<dc:creator>xw</dc:creator>
				<category><![CDATA[产品编码]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tag]]></category>

		<guid isPermaLink="false">http://blog.d8in.com/?p=493</guid>
		<description><![CDATA[这是一个很简单的tag云图算法，也是偶然间在网上找到的，一直都在用 ，算法十分简单和实用。虽然代码是用PHP的，但是很容易移至到其它程序语言asp.net,java等。
&#60;?php
function&#160;tag_cloud($tags) {
&#160; &#160; $maxsize = 38;
&#160; &#160; $minsize = 12;
&#160;
&#160; &#160; $maxval = max(array_values($tags));
&#160; &#160; $minval = min(array_values($tags));
&#160;
&#160; &#160; $spread = $maxval - $minval;
&#160;
&#160; &#160; $step = ($maxsize - $minsize) / ($spread);
&#160;
&#160; &#160; foreach&#160;($tags as $key =&#62; $value) {
&#160; &#160; &#160; &#160; $size = round($minsize + (($value - $minval) * $step));
&#160; &#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p>这是一个很简单的tag云图算法，也是偶然间在网上找到的，一直都在用 ，算法十分简单和实用。虽然代码是用PHP的，但是很容易移至到其它程序语言asp.net,java等。</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">&lt;?php</span></li>
<li><span style="color: Green;">function</span><span style="color: Gray;">&nbsp;</span><span style="color: Blue;">tag_cloud</span><span style="color: Olive;">(</span><span style="color: #00008b;">$tags</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$maxsize</span><span style="color: Gray;"> = </span><span style="color: Maroon;">38</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$minsize</span><span style="color: Gray;"> = </span><span style="color: Maroon;">12</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$maxval</span><span style="color: Gray;"> = </span><span style="color: Blue;">max</span><span style="color: Olive;">(</span><span style="color: Blue;">array_values</span><span style="color: Olive;">(</span><span style="color: #00008b;">$tags</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$minval</span><span style="color: Gray;"> = </span><span style="color: Blue;">min</span><span style="color: Olive;">(</span><span style="color: Blue;">array_values</span><span style="color: Olive;">(</span><span style="color: #00008b;">$tags</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$spread</span><span style="color: Gray;"> = </span><span style="color: #00008b;">$maxval</span><span style="color: Gray;"> - </span><span style="color: #00008b;">$minval</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: #00008b;">$step</span><span style="color: Gray;"> = </span><span style="color: Olive;">(</span><span style="color: #00008b;">$maxsize</span><span style="color: Gray;"> - </span><span style="color: #00008b;">$minsize</span><span style="color: Olive;">)</span><span style="color: Gray;"> / </span><span style="color: Olive;">(</span><span style="color: #00008b;">$spread</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Green;">foreach</span><span style="color: Gray;">&nbsp;</span><span style="color: Olive;">(</span><span style="color: #00008b;">$tags</span><span style="color: Gray;"> </span><span style="color: Green;">as</span><span style="color: Gray;"> </span><span style="color: #00008b;">$key</span><span style="color: Gray;"> =&gt; </span><span style="color: #00008b;">$value</span><span style="color: Olive;">)</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: #00008b;">$size</span><span style="color: Gray;"> = </span><span style="color: Blue;">round</span><span style="color: Olive;">(</span><span style="color: #00008b;">$minsize</span><span style="color: Gray;"> + </span><span style="color: Olive;">((</span><span style="color: #00008b;">$value</span><span style="color: Gray;"> - </span><span style="color: #00008b;">$minval</span><span style="color: Olive;">)</span><span style="color: Gray;"> * </span><span style="color: #00008b;">$step</span><span style="color: Olive;">))</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; </span><span style="color: Green;">echo</span><span style="color: Gray;">&nbsp;</span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;a href=&quot;#&quot; style=&quot;font-size: </span><span style="color: #8b0000;">'</span><span style="color: Gray;">.</span><span style="color: #00008b;">$size</span><span style="color: Gray;">.</span><span style="color: #8b0000;">'</span><span style="color: Red;">px&quot;&gt;</span><span style="color: #8b0000;">'</span><span style="color: Gray;">.</span><span style="color: #00008b;">$key</span><span style="color: Gray;">.</span><span style="color: #8b0000;">'</span><span style="color: Red;">&lt;/a&gt; </span><span style="color: #8b0000;">'</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span><span style="color: Olive;">}</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: #00008b;">$tags</span><span style="color: Gray;"> = </span><span style="color: Green;">array</span><span style="color: Olive;">(</span><span style="color: #8b0000;">'</span><span style="color: Red;">php</span><span style="color: #8b0000;">'</span><span style="color: Gray;">=&gt;</span><span style="color: Maroon;">30</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">javascript</span><span style="color: #8b0000;">'</span><span style="color: Gray;">=&gt;</span><span style="color: Maroon;">24</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">java</span><span style="color: #8b0000;">'</span><span style="color: Gray;">=&gt;</span><span style="color: Maroon;">17</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">python</span><span style="color: #8b0000;">'</span><span style="color: Gray;">=&gt;</span><span style="color: Maroon;">26</span><span style="color: Gray;">, </span><span style="color: #8b0000;">'</span><span style="color: Red;">ruby</span><span style="color: #8b0000;">'</span><span style="color: Gray;">=&gt;</span><span style="color: Maroon;">17</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">tag_cloud</span><span style="color: Olive;">(</span><span style="color: #00008b;">$tags</span><span style="color: Olive;">)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">?&gt;</span></li></ol></div>
]]></content:encoded>
			<wfw:commentRss>http://blog.d8in.com/posts/493.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>为什么jquery如此简单易学</title>
		<link>http://blog.d8in.com/posts/284.html</link>
		<comments>http://blog.d8in.com/posts/284.html#comments</comments>
		<pubDate>Fri, 17 Apr 2009 02:15:01 +0000</pubDate>
		<dc:creator>xw</dc:creator>
				<category><![CDATA[产品编码]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[jquery]]></category>

		<guid isPermaLink="false">http://blog.d8in.com/posts/284.html</guid>
		<description><![CDATA[
前段时间研究了一下jquery,发现jquery要其他类型的库要容易学习的多，而且比较实用。有一天和一个朋友聊天，他也在学jquery，学习的感受也是和我一样。然后我就仔细的比较了一下jquery和其它的库，发现jquery在实用和易学使用上确实有自己的特点。
一、封装的恰到好处 封装一个库最难的就是一个尺度问题，就是说封装的层次过于底的话，那么应用到项目的时候就会发现很多东西需要自己再写，还是很麻烦。但是封装的过于高层，做项目的时候又不是很灵活。而jquery正好是取得了一个中间点，把一般项目中最最常用的函数封装进去，同时不是过于底层，也不是过于高层。正合适的位置上。所以一般用jquery有一种特别舒服的感觉。 看过《精通javascript》书的人可能会发现，其实那本书就是写jquery是怎么构建起来的。我们通过那本书可以发现，作者完全就是从实际工作中总结经验，最终慢慢形成了一个jquery。
 
二、像写css一样写javascript  我一直都有做页面重构工作，当我开始学习jquery的时候有种倍感亲切的感觉，写着写着突然发现，jquery的书写方式和css的书写方式十分类似，有些时候就有一种写css的感觉。再看看yui的的书写方式，十分的java，命名空间，声明变量~~~这些在jquery里面通通部不用。你只需要告诉一个dom对象该做什么即可，就和css告诉一个dom对象该怎么显示一样。 三、天生就是为设计师设计的 web设计师对于javascript一直都是比较头痛的，但是有些时候又不得不做javascript的工作，那么赶快去学jquery吧，jquery貌似就是为web设计师设计的，不需要懂什么循环，什么变量，只需要简单的写几行类似于css的代码，酷炫的效果马上就会展现在眼前，我相信你之需要花几个小时仔细研究研究jquery就会有意想不到的收获。甚至大呼我也会javascript了。
说了这么多，虽然jquery很容易学，但是如果想彻底的精通也不是一件容易的事情，而且虽然jquery的书写方式很简单，但是javascript毕竟还是一门程序语言，所以要想用好还是要学习一些基础的javascript语法和规范，但是jquery起码它会给你一个好的开始，所以为了这个好的开始，那些依然困惑于javascript的设计师们赶快行动吧。 
]]></description>
			<content:encoded><![CDATA[<p><img src="http://farm4.static.flickr.com/3412/3437956368_bcee42b4c8.jpg" style="DISPLAY: inline" height="276" width="500"/></p>
<p>前段时间研究了一下jquery,发现jquery要其他类型的库要容易学习的多，而且比较实用。有一天和一个朋友聊天，他也在学jquery，学习的感受也是和我一样。然后我就仔细的比较了一下jquery和其它的库，发现jquery在实用和易学使用上确实有自己的特点。</p>
<p><strong>一、封装的恰到好处</strong> <br/>封装一个库最难的就是一个尺度问题，就是说封装的层次过于底的话，那么应用到项目的时候就会发现很多东西需要自己再写，还是很麻烦。但是封装的过于高层，做项目的时候又不是很灵活。而jquery正好是取得了一个中间点，把一般项目中最最常用的函数封装进去，同时不是过于底层，也不是过于高层。正合适的位置上。所以一般用jquery有一种特别舒服的感觉。 <br/>看过《精通javascript》书的人可能会发现，其实那本书就是写jquery是怎么构建起来的。我们通过那本书可以发现，作者完全就是从实际工作中总结经验，最终慢慢形成了一个jquery。</p>
<p> <span id="more-284"></span>
<p><strong>二、像写css一样写javascript <br/></strong> 我一直都有做页面重构工作，当我开始学习jquery的时候有种倍感亲切的感觉，写着写着突然发现，jquery的书写方式和css的书写方式十分类似，有些时候就有一种写css的感觉。再看看yui的的书写方式，十分的java，命名空间，声明变量~~~这些在jquery里面通通部不用。你只需要告诉一个dom对象该做什么即可，就和css告诉一个dom对象该怎么显示一样。 <br/><br/><strong>三、天生就是为设计师设计的</strong> <br/>web设计师对于javascript一直都是比较头痛的，但是有些时候又不得不做javascript的工作，那么赶快去学jquery吧，jquery貌似就是为web设计师设计的，不需要懂什么循环，什么变量，只需要简单的写几行类似于css的代码，酷炫的效果马上就会展现在眼前，我相信你之需要花几个小时仔细研究研究jquery就会有意想不到的收获。甚至大呼我也会javascript了。</p>
<p>说了这么多，虽然jquery很容易学，但是如果想彻底的精通也不是一件容易的事情，而且虽然jquery的书写方式很简单，但是javascript毕竟还是一门程序语言，所以要想用好还是要学习一些基础的javascript语法和规范，但是jquery起码它会给你一个好的开始，所以为了这个好的开始，那些依然困惑于javascript的设计师们赶快行动吧。 <br/></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.d8in.com/posts/284.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>谈谈栅格设计</title>
		<link>http://blog.d8in.com/posts/221.html</link>
		<comments>http://blog.d8in.com/posts/221.html#comments</comments>
		<pubDate>Tue, 02 Dec 2008 09:19:07 +0000</pubDate>
		<dc:creator>xw</dc:creator>
				<category><![CDATA[产品编码]]></category>
		<category><![CDATA[栅格]]></category>

		<guid isPermaLink="false">http://blog.d8in.com/posts/221.html</guid>
		<description><![CDATA[
最近突然发现在网页设计中&#8221;栅格&#8221;或者说&#8221;网格&#8221;这个词特别火。原因我分析主要是源自淘宝ued团队的4片文章。同时呢还有腾讯的前端开发部门也发出了声音。
栅格还是网格？
对于这个问题是在腾讯那篇文章中作者特别强调是网格不是栅格，甚至还把《超越css》和《平面设计导论》拿出来说，还说如果说成是栅格不尊重作者等等啦。其实首先一点是，无论是栅格或者是网格，英文都是grid，这和作者的并没有太大关系和核心思想也没有太大关系，把这个东西拿出来说事我猜可能是因为，文章开头写了一段为和老大要福利啥的后来被老大说了，就是因为这个栅格系统。所以特别拿出来这个说事，还因为是可能他们老大是看了淘宝的文章才提到这个事等等啦。
其实归根到底就是grid应该翻译成什么，有些地方翻译成栅格，有些地方翻译成网格。其实这和设计没啥关系，就是一个语文问题而已。
网格很容易理解，就是网络组成的格子。那栅格呢？我么来查一些字典关于栅的解释：栅其实是一个多音字，读shan 四声或者读栅zha四声。都zha四声的时候，一般的词就是栅栏，用竹木铁条等做成的阻碍物。读shan四声的时候，就是栅极，由金属丝组成的筛装网状或螺旋状电极。其实从解释上就可以看出栅格和网格根本就是一个意思，只不过栅格更加正式一些，而网格更加口语化一些仅此而已。

960，950，黄金比例？
淘宝的文章大篇幅的介绍了960，950网格系统，解释的也很写详细，而腾讯的那篇文章却很痛的抨击YUI抨击淘宝UED那种方式的问题，并且给出了自认为很NB的&#8221;新&#8221;理论。其实首先淘宝UED说的介绍的一点问题没有，只不过因为大篇幅介绍了960，950所以可能让很多人误解只有这种才叫栅格设计，至于腾讯的哥们说的也没有啥问题，只不过太针对淘宝而且也过于片面了。 为了让大家更清新的理解一下我这里做一些基本的澄清和补充。
什么是栅格系统？
栅格系统是一种框架（Framework），是一种可以被用来搭建&#8221;组合（Compositions）&#8221;的系统。栅格系统无处不在：城市布局、杂志、报纸和大网格厦的外观等等。栅格系统可以用&#8221;黄金分割（Golden Section）&#8221;，一种几个世纪以来一直被认为是具有美感的&#8221;比率&#8221;，来设计。
栅格的历史：
二战以前的栅格系统是非常简单和公式化的构建在基准（诸如Villard图表）中的，各个区域四周的矩形结构。他们一般受限与制作他们的技术，也包括偶尔点缀一张图片的文字纵栏。那一时期的栅格系统很少使用空白（whitespace）作为设计装饰。这种状态一直持续到几位著名的设计师（包括Josef Muller-Brockmann）打破了当时的设计习惯。他们提议了一个新的系统，一个更灵活的，能给予设计师更多开发工具的系统：模块栅格（modular grid）
其实我们可以看出，栅格设计只是一种设计方式，分为黄金比例和等比例两种方式，至于960，950只是一种等比例法的实现框架而已。其实我们大多数设计的时候已经有这种栅格的概念在设计中了，只不过没有把这种思想提炼出来变成一种规范框架而已。
我们真的需要栅格设计吗？
初看栅格设计被很多设计师认为是锁死的，没有可发挥空间等等。其实不然，首先大家要明确一点，设计和艺术是有区别的，其中最大的区别就是设计是为了满足某种具体需求，而艺术是源于艺术家对于某种事物的理解而创作。就拿最早的工业设计来说，是建立在工业产品基础之上的。同样网页设计也是如此，对于网页设计来说，艺术只是其中的一个部分而已，流程标准化生产也是其中重要的一个部分，满足用户实际需求也是重要的一个部分，而流程标准化生产比较重要的一点就是参数化和模块化，栅格设计就是流程标准化一种手段。
我们真的需要栅格设计吗？其实这一点在淘宝UED的第一篇已经做了简单的描述：当搭建页面结构复杂的门户型网站时。我来补充一下，当你要设计多页面并且信息结构复杂的站点时候就需要一套栅格系统来规范、统一、美观的输出（这一点和css framework一样），而当你设计但或者少页，信息结构简单的时候则无所谓。
为什么栅格设计在前几年在网页设计中没有被十分的重视?但是在其他行业譬如说报纸，书刊等都已经广泛应用呢？我猜原因可能是第一网页设计对于其他行业还是属于崭新的，第二互联网的普及程度和广大用户的接受程度相对来说还不是很高。但是随之最近互联网的普及加强，用户需求的增多，网页设计也将要进入到一个全新的工业化时代。
相关链接：
TaobaoUED
网页栅格系统研究（1）：960的秘密
网页栅格系统研究（2）：蛋糕的切法
网页栅格系统研究（3）：粒度问题
网页栅格系统研究（4）：技术实现
腾讯
网格(UED所谓栅格化)方案生成器
]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://farm4.static.flickr.com/3567/3358320657_2f5fd8f24c_m.jpg" alt="" width="240" height="161" /></p>
<p>最近突然发现在网页设计中&#8221;栅格&#8221;或者说&#8221;网格&#8221;这个词特别火。原因我分析主要是源自淘宝ued团队的4片文章。同时呢还有腾讯的前端开发部门也发出了声音。</p>
<p><strong>栅格还是网格</strong>？<br />
对于这个问题是在腾讯那篇文章中作者特别强调是网格不是栅格，甚至还把《超越css》和《平面设计导论》拿出来说，还说如果说成是栅格不尊重作者等等啦。其实首先一点是，无论是栅格或者是网格，英文都是grid，这和作者的并没有太大关系和核心思想也没有太大关系，把这个东西拿出来说事我猜可能是因为，文章开头写了一段为和老大要福利啥的后来被老大说了，就是因为这个栅格系统。所以特别拿出来这个说事，还因为是可能他们老大是看了淘宝的文章才提到这个事等等啦。</p>
<p>其实归根到底就是grid应该翻译成什么，有些地方翻译成栅格，有些地方翻译成网格。其实这和设计没啥关系，就是一个语文问题而已。</p>
<p>网格很容易理解，就是网络组成的格子。那栅格呢？我么来查一些字典关于栅的解释：栅其实是一个多音字，读shan 四声或者读栅zha四声。都zha四声的时候，一般的词就是栅栏，用竹木铁条等做成的阻碍物。读shan四声的时候，就是栅极，由金属丝组成的筛装网状或螺旋状电极。其实从解释上就可以看出栅格和网格根本就是一个意思，只不过栅格更加正式一些，而网格更加口语化一些仅此而已。</p>
<p><span id="more-221"></span></p>
<p><strong>960，950，黄金比例？</strong><br />
淘宝的文章大篇幅的介绍了960，950网格系统，解释的也很写详细，而腾讯的那篇文章却很痛的抨击YUI抨击淘宝UED那种方式的问题，并且给出了自认为很NB的&#8221;新&#8221;理论。其实首先淘宝UED说的介绍的一点问题没有，只不过因为大篇幅介绍了960，950所以可能让很多人误解只有这种才叫栅格设计，至于腾讯的哥们说的也没有啥问题，只不过太针对淘宝而且也过于片面了。 为了让大家更清新的理解一下我这里做一些基本的澄清和补充。</p>
<blockquote><p>什么是栅格系统？<br />
栅格系统是一种框架（Framework），是一种可以被用来搭建&#8221;组合（Compositions）&#8221;的系统。栅格系统无处不在：城市布局、杂志、报纸和大网格厦的外观等等。栅格系统可以用&#8221;黄金分割（Golden Section）&#8221;，一种几个世纪以来一直被认为是具有美感的&#8221;比率&#8221;，来设计。</p>
<p>栅格的历史：<br />
二战以前的栅格系统是非常简单和公式化的构建在基准（诸如Villard图表）中的，各个区域四周的矩形结构。他们一般受限与制作他们的技术，也包括偶尔点缀一张图片的文字纵栏。那一时期的栅格系统很少使用空白（whitespace）作为设计装饰。这种状态一直持续到几位著名的设计师（包括Josef Muller-Brockmann）打破了当时的设计习惯。他们提议了一个新的系统，一个更灵活的，能给予设计师更多开发工具的系统：模块栅格（modular grid）</p></blockquote>
<p>其实我们可以看出，栅格设计只是一种设计方式，分为黄金比例和等比例两种方式，至于960，950只是一种等比例法的实现框架而已。其实我们大多数设计的时候已经有这种栅格的概念在设计中了，只不过没有把这种思想提炼出来变成一种规范框架而已。</p>
<p><strong>我们真的需要栅格设计吗？</strong><br />
初看栅格设计被很多设计师认为是锁死的，没有可发挥空间等等。其实不然，首先大家要明确一点，设计和艺术是有区别的，其中最大的区别就是设计是为了满足某种具体需求，而艺术是源于艺术家对于某种事物的理解而创作。就拿最早的工业设计来说，是建立在工业产品基础之上的。同样网页设计也是如此，对于网页设计来说，艺术只是其中的一个部分而已，流程标准化生产也是其中重要的一个部分，满足用户实际需求也是重要的一个部分，而流程标准化生产比较重要的一点就是参数化和模块化，栅格设计就是流程标准化一种手段。<br />
我们真的需要栅格设计吗？其实这一点在淘宝UED的第一篇已经做了简单的描述：当搭建页面结构复杂的门户型网站时。我来补充一下，当你要设计多页面并且信息结构复杂的站点时候就需要一套栅格系统来规范、统一、美观的输出（这一点和css framework一样），而当你设计但或者少页，信息结构简单的时候则无所谓。</p>
<p>为什么栅格设计在前几年在网页设计中没有被十分的重视?但是在其他行业譬如说报纸，书刊等都已经广泛应用呢？我猜原因可能是第一网页设计对于其他行业还是属于崭新的，第二互联网的普及程度和广大用户的接受程度相对来说还不是很高。但是随之最近互联网的普及加强，用户需求的增多，网页设计也将要进入到一个全新的工业化时代。</p>
<p><strong>相关链接：</strong></p>
<p>TaobaoUED<br />
<a href="http://ued.taobao.com/blog/2008/10/22/grid_system_research_1/" target="_blank">网页栅格系统研究（1）：960的秘密</a><br />
<a href="http://ued.taobao.com/blog/2008/10/22/grid_system_research_2/" target="_blank">网页栅格系统研究（2）：蛋糕的切法</a><br />
<a href="http://ued.taobao.com/blog/2008/10/28/grid_system_research_3/" target="_blank">网页栅格系统研究（3）：粒度问题</a><br />
<a href="http://ued.taobao.com/blog/2008/11/05/grid_system_research_4/" target="_blank">网页栅格系统研究（4）：技术实现</a></p>
<p>腾讯<br />
<a href="http://www.twinsenliang.net/skill/20081109.html" target="_blank">网格(UED所谓栅格化)方案生成器</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.d8in.com/posts/221.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Aptana Jaxer</title>
		<link>http://blog.d8in.com/posts/181.html</link>
		<comments>http://blog.d8in.com/posts/181.html#comments</comments>
		<pubDate>Thu, 24 Jan 2008 09:43:37 +0000</pubDate>
		<dc:creator>xw</dc:creator>
				<category><![CDATA[产品编码]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[Aptana]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Jaxer]]></category>

		<guid isPermaLink="false">http://blog.d8in.com/posts/181.html</guid>
		<description><![CDATA[
今天用Aptana 有了新的更新，软件版本更新到了1.1同时推出一个重要的功能就是Aptana自创的Jaxer，号称是世界上第一个Ajax服务端，虽然是1.0版本，但是发现网站上的资料库已经相当健全，而且还有不少的视频演示。
引用一段官方的对Jaxer的说明翻译：
Jaxer改变了这一切，它是世界上第一个真正的Ajax服务器。在Jaxer里面, HMTL, CSS,Javascript都是它的其中一个对象，就象XMLHttpRequests, JSON, DOM一样。并且作为服务器，它提供了进入数据库、档案和网站建设，以及服务器日志、进程管理、安全性、可扩展性和整合了API。
其实javascript本身是具有服务端运行的属性的，譬如下面这段代码：
客户端运行
&#60;script type=&#34;text/javascript&#34;&#62;
&#160; &#160; document.write(&#34;hello word&#34;);
&#60;/script&#62;
服务端运行
&#60;script type=&#34;text/javascript&#34; runat=&#34;server&#34;&#62;
&#160; &#160; document.write(&#34;hello word&#34;);
&#60;/script&#62;

只要 script声明的时候是runat=&#8221;server&#8221;，就表示在服务端运行，这样的写法其实稍微喝.net类似。而且javascript本身也是可以调用数据库做一些稍微复杂的操作的。但是代码十分繁琐，Jaxer通过再次封装同时加入一些新的功能在里面，就是javascript语言在服务端的功能大大增强。
看下面一段示例代码:
Enter and number between 5 and 50:&#60;input id=&#34;number&#34; size=&#34;10&#34; type=&#34;text&#34; /&#62;
&#60;input&#160;type=&#34;button&#34; value=&#34;submit&#34; onclick=&#34;SubmitNumber()&#34; /&#62;
&#160;
&#60;script&#160;type=&#34;text/javascript&#34; runat=&#34;server&#34;&#62;
&#160; &#160; var count =Jaxer.File.read(&#34;count.txt&#34;);
&#160; &#160; document.getElementById(&#34;number&#34;).value=count;
&#160; &#160; 
&#160; &#160; function saveNumber(number){
&#160; &#160; &#160; &#160; if (validateNumber(parseInt(number))) {
&#160; &#160; &#160; &#160; &#160; &#160; Jaxer.File.write(&#34;count.txt&#34;,number);
&#160; &#160; &#160; [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/xwxw/2215682109/" title="jaxer by xwgemini, on Flickr"><img src="http://farm3.static.flickr.com/2350/2215682109_91df01d3bc_o.jpg" width="380" height="90" alt="jaxer" /></a></p>
<p>今天用Aptana 有了新的更新，软件版本更新到了1.1同时推出一个重要的功能就是Aptana自创的Jaxer，号称是世界上第一个Ajax服务端，虽然是1.0版本，但是发现网站上的资料库已经相当健全，而且还有不少的视频演示。<br />
引用一段官方的对Jaxer的说明翻译：</p>
<blockquote><p>Jaxer改变了这一切，它是世界上第一个真正的Ajax服务器。在Jaxer里面, HMTL, CSS,Javascript都是它的其中一个对象，就象XMLHttpRequests, JSON, DOM一样。并且作为服务器，它提供了进入数据库、档案和网站建设，以及服务器日志、进程管理、安全性、可扩展性和整合了API。</p></blockquote>
<p>其实javascript本身是具有服务端运行的属性的，譬如下面这段代码：<br />
<strong>客户端运行</strong></p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; document.write(&quot;hello word&quot;);</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p><strong>服务端运行</strong></p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">runat</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">server</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; document.write(&quot;hello word&quot;);</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p><span id="more-181"></span><br />
只要 script声明的时候是runat=&#8221;server&#8221;，就表示在服务端运行，这样的写法其实稍微喝.net类似。而且javascript本身也是可以调用数据库做一些稍微复杂的操作的。但是代码十分繁琐，Jaxer通过再次封装同时加入一些新的功能在里面，就是javascript语言在服务端的功能大大增强。</p>
<p>看下面一段示例代码:</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Gray;">Enter and number between 5 and 50:</span><span style="color: Olive;">&lt;</span><span style="color: Green;">input</span><span style="color: Gray;"> </span><span style="color: #00008b;">id</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">number</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">size</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">10</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">input</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">button</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">value</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">submit</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">onclick</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">SubmitNumber()</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: Olive;">/&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Gray;"> </span><span style="color: #00008b;">runat</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">server</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; var count =Jaxer.File.read(&quot;count.txt&quot;);</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; document.getElementById(&quot;number&quot;).value=count;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; function saveNumber(number){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; if (validateNumber(parseInt(number))) {</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Jaxer.File.write(&quot;count.txt&quot;,number);</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; saveNumber.proxy=true;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">type</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">text/javascript</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; function SubmitNumber(){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; var currentValue=document.getElementById(&quot;number&quot;).value;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; if(validateNumber(parseInt(currentValue))){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; saveNumber(currentValue);</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alert(&quot;Your number is save&quot;)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; else{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; alert(&quot;Your number is out of range&quot;)</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; </span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">script</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">runat</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">both</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; function validateNumber(number){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; if(number</span><span style="color: Olive;">&lt;</span><span style="color: Green;">5</span><span style="color: Gray;">||</span><span style="color: #00008b;">number</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">50){</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return false;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; else{</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return true;</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; &nbsp; &nbsp; }</span></li>
<li><span style="color: Gray;">&nbsp; &nbsp; }</span></li>
<li><span style="color: Olive;">&lt;/</span><span style="color: Green;">script</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>从代码中可以看出，客户端和服务端的数据通信无阻隔，想必是最大的优势。用一门语言可以写服务端也写客户端，可以随意设定语句是在服务端运行还是客户端运行，还是服务和客户端都运行。虽然现在Jaxer刚刚发布，功能还不是很强大，不过确实试验一下还是蛮有意思的东西。</p>
<p><a href="http://www.flickr.com/photos/xwxw/2216450522/" title="page_flow_diagram by xwgemini, on Flickr"><img src="http://farm3.static.flickr.com/2102/2216450522_ee519caa86_o.png" width="380" alt="page_flow_diagram" /></a></p>
<ul>
<li>Write entire applications or presentation layers in Ajax </li>
<li>Full DOM and JavaScript on the server</li>
<li>Seamless communications between browser and server</li>
<li>Access existing pages written in other languages like PHP, Java, or Ruby on Rails</li>
<li>Share validation code on the browser and server</li>
<li>Database, file, and socket access from JavaScript</li>
<li>Open-source, standards-based, and uses the APIs you already know</li>
</ul>
<p><strong>相关资料：</strong><br />
<a href="http://aptana.com/jaxer/">Jaxer 官方网站</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.d8in.com/posts/181.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>xStyle alpha 1.0 发布</title>
		<link>http://blog.d8in.com/posts/178.html</link>
		<comments>http://blog.d8in.com/posts/178.html#comments</comments>
		<pubDate>Sun, 30 Dec 2007 11:43:04 +0000</pubDate>
		<dc:creator>xw</dc:creator>
				<category><![CDATA[产品编码]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[framework]]></category>

		<guid isPermaLink="false">http://blog.d8in.com/posts/178.html</guid>
		<description><![CDATA[
  xStyle 是一个非常简单的 css framwork,如果您是一名css老手那么简单看一下代码就可以立即用用到您的项目开发中去，即使是新手也只需要话5分钟看一下cheat sheet 即可使用，如果看了cheat sheet您都不会用的话,哪您最好找一本css入门教程看一下了。 
   xStyle的特点：
   1、页面松耦合：xStyle 和其它css framework的最大的最大区别就是，完全和页面的结构没有关系，或者说是特别轻的相关性，大多数的属性都是一次性定义一个html元素即可。
   2、从新定义和封装：xStyle中封装了许多css现有的属性，譬如margin padding font 这些，从表面上来说是降低了灵活性，但是在实际项目开发中却提高了代码重用度和统一性，而且当程序员问你这里的要用什么字体颜色，什么样的边距的时候，你只需要告诉他加上一个xxxclass就行啦。
   3、快速部署：xStyle中包含了css项目开发中最常用的定义方法和一些小工具，您只需要稍微修改一下就可以快速的应用到你的项目开发中去。
   4、良好的扩展性：xStyle不仅仅是一个css framework，更是一种高效快速css开发方式，里面的代码您可以按照里面的方式自己进行随意更改和补充，然后修改成你公司或你自己的css framework。
 
   xStyle现在还是一个很简单的版本，由于时间仓促还有很多不足，如果有什么bug和意见希望大家通过 xwxwxw[at]gmail.com 与我联系。
下载地址：http://xstyle.d8in.com
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/xwxw/2150271727/" title="xstyle by xwgemini, on Flickr"><img src="http://farm3.static.flickr.com/2090/2150271727_7e30e2bd51_o.jpg" width="380" height="90" alt="xstyle" /></a></p>
<p>  xStyle 是一个非常简单的 css framwork,如果您是一名css老手那么简单看一下代码就可以立即用用到您的项目开发中去，即使是新手也只需要话5分钟看一下cheat sheet 即可使用，如果看了cheat sheet您都不会用的话,哪您最好找一本css入门教程看一下了。 </p>
<p>   <strong>xStyle的特点：</strong><br />
   1、页面松耦合：xStyle 和其它css framework的最大的最大区别就是，完全和页面的结构没有关系，或者说是特别轻的相关性，大多数的属性都是一次性定义一个html元素即可。</p>
<p>   2、从新定义和封装：xStyle中封装了许多css现有的属性，譬如margin padding font 这些，从表面上来说是降低了灵活性，但是在实际项目开发中却提高了代码重用度和统一性，而且当程序员问你这里的要用什么字体颜色，什么样的边距的时候，你只需要告诉他加上一个xxxclass就行啦。</p>
<p>   3、快速部署：xStyle中包含了css项目开发中最常用的定义方法和一些小工具，您只需要稍微修改一下就可以快速的应用到你的项目开发中去。</p>
<p>   4、良好的扩展性：xStyle不仅仅是一个css framework，更是一种高效快速css开发方式，里面的代码您可以按照里面的方式自己进行随意更改和补充，然后修改成你公司或你自己的css framework。<br />
 <br />
   xStyle现在还是一个很简单的版本，由于时间仓促还有很多不足，如果有什么bug和意见希望大家通过 xwxwxw[at]gmail.com 与我联系。</p>
<p>下载地址：<a href="http://xstyle.d8in.com">http://xstyle.d8in.com</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.d8in.com/posts/178.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>收集的一些css framework</title>
		<link>http://blog.d8in.com/posts/177.html</link>
		<comments>http://blog.d8in.com/posts/177.html#comments</comments>
		<pubDate>Tue, 25 Dec 2007 10:35:54 +0000</pubDate>
		<dc:creator>xw</dc:creator>
				<category><![CDATA[产品编码]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[framework]]></category>

		<guid isPermaLink="false">http://blog.d8in.com/posts/177.html</guid>
		<description><![CDATA[
YUI CSS库
http://developer.yahoo.com/yui/
YAML（Yet Another Multicolumn Layout）
http://www.yaml.de/en/ 
Content with Style: A CSS Framework
http://www.contentwithstyle.co.uk/Articles/17/
Blueprint
http://code.google.com/p/blueprintcss/
tripoli
http://monc.se/tripoli/
Elements
http://elements.projectdesigns.org/index.html
WYMstyle: a CSS framework
http://www.wymstyle.org/en/
taffy-css-framework
http://code.google.com/p/taffy-css-framework/
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/xwxw/2137215264/" title="css Framework by xwgemini, on Flickr"><img src="http://farm3.static.flickr.com/2163/2137215264_9d719d9f9a_m.jpg" width="240" height="160" alt="css Framework" /></a></p>
<p><strong>YUI CSS库</strong><br />
<a href="http://developer.yahoo.com/yui/">http://developer.yahoo.com/yui/</a></p>
<p><strong>YAML（Yet Another Multicolumn Layout）</strong><br />
<a href="http://www.yaml.de/en/ ">http://www.yaml.de/en/ </a></p>
<p><strong>Content with Style: A CSS Framework</strong><br />
<a href="http://www.contentwithstyle.co.uk/Articles/17/ ">http://www.contentwithstyle.co.uk/Articles/17/</a></p>
<p><strong>Blueprint</strong><br />
<a href="http://code.google.com/p/blueprintcss/">http://code.google.com/p/blueprintcss/</a></p>
<p><strong>tripoli</strong><br />
<a href="http://monc.se/tripoli/">http://monc.se/tripoli/</a></p>
<p><strong>Elements</strong><br />
<a href="http://elements.projectdesigns.org/index.html">http://elements.projectdesigns.org/index.html</a></p>
<p><strong>WYMstyle: a CSS framework</strong><br />
<a href="http://www.wymstyle.org/en/">http://www.wymstyle.org/en/</a></p>
<p><strong>taffy-css-framework</strong><br />
<a href="http://code.google.com/p/taffy-css-framework/">http://code.google.com/p/taffy-css-framework/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.d8in.com/posts/177.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>理解Web框架，和如何构建一个CSS框架[转][译]</title>
		<link>http://blog.d8in.com/posts/176.html</link>
		<comments>http://blog.d8in.com/posts/176.html#comments</comments>
		<pubDate>Mon, 24 Dec 2007 09:54:26 +0000</pubDate>
		<dc:creator>xw</dc:creator>
				<category><![CDATA[产品编码]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[framework]]></category>

		<guid isPermaLink="false">http://blog.d8in.com/posts/176.html</guid>
		<description><![CDATA[

去年在网上看了这篇文章是英文的，最近找一些资料发现有人已经翻译成中文了，特此拿来给大家分享

近来，在Web开发中”框架”是一个相当时髦的词。比如JavaScript 框架 YUI、 JQuery和Prototype 都引起广泛的关注， Web应用框架Rails and Dojo 更是引人瞩目，仿佛所有人都使用某种框架来开发自己的网站。但究竟什么是框架?是不是框架仅仅是对程序员有用，设计师是否可以从中收益？
什么是框架?
为了便于沟通，我们给“框架”统一一个定义（至少在本篇文章中是统一的）：一套包含工具、函数库、约定，以及尝试从常用任务中抽象出可以复用的通用模块，目标是使设计师和开发人员把重点放在任务项目所特有的方面，避免重复开发。通常的讲，框架就是上面提到的JavaScript框架和Web应用框架。
需要强调说明的是，我们不必讨论构造、打包发布，相反，一个框架只为你或你的团队使用即可。

CSS框架
有些时候，你可能尝到了抽象类似的CSS代码的甜头，在那些同时设计几个类似网站的设计师身上表现最为明显。此外，团队中的设计师们从框架的方法上有很多的获益。比如，我在一家报馆工作，所有的20多个网站保持着很多的共同点，基于新闻网站的特点，它们趋向于更加相似，而不是差异。但是，即使单独一个设计师，设计一个从表面上看有差异很大的项目，也可以为CSS框架抽象出一些通用的小碎片。
劳伦斯日报（Lawrence Journal-World），我在那里工作，我们最近建立了一个CSS框架，并发现它是一个巨大的效率倍增。当然，我们花了数天时间自己创建了一个 CSS框架，但一旦框架完工，开发高质量网页的速度是极快的。更何况，既然团队每一个设计师现在都使用这个框架，当一个设计师修改另一个团队成员网页时，他们不再需要花20分钟理解别人的构建思路，可以马上上手。
有那些可以忽略?
当投入到一个整体性很强的CSS框架，你想寻找的东西，是每个项目都做了一遍又一遍的重复通用的代码，目标是巩固这些代码核心地位，遵循“不重复自己（Don’t Repeat Yourself）”编码方法。这使得维护工作容易了许多，还可以帮访问者节省带宽开销。
几乎每个我参与的项目中，我必须声明的几个CSS问题：
“大量重置”浏览器默认风格，比如，设置所有元素的margin和padding为0，去掉框架（framesets）和图片（images）的border，等等。
以基线对齐。这包括诸如设定块级元素的margins相同的(或多个)基准行高，如段落（paragraph）、头（header）、以及列表（list）。
创建表单（Form）的基本样式。
创建几个常用的CSS 类，例如，.hide(把display置为none，即隐藏元素)、.mute(设定为一个较小的字体和较亮的颜色)。
还有更有趣的事情，许多网站设计师发现自己不断重复使用着相同的基本结构，为什么不动它整理成自己的，在某种程度上可以非常灵活的用于多个网站? Yahoo这样做了，这就是YUI。当我们为的劳伦斯日报网站（the Journal-World）建立CSS框架的时候，我先看看Yahoo是怎么做的。我们很肯定那不是我们想要的，但作为一个很好的例子，给我们提供了很多思考和如何建构自己框架的想法。我们解决了16个单元格的问题，它具有足够的灵活性使我们的每一个网站都可以应用，即使每个网站看上去与下一个版本有些差异。另外大多数网站共用widgets ，象下拉菜单、导航菜单、按钮等，这些也是主要的需要抽象提取的对象。除此之外,你可能有共同的内容名称，如图片列表的缩略图，你可以规范对CSS命名，如“thumbnail-list”，让所有显示缩略图的都使用这个CSS类。
另外要做的可能是抽取hack（如兼容那些旧浏览器)加入自己的扩展的样式模块。我自己尝试过，但发现hack过于专有而不能抽取到通用框架里。
什么是真正的益处?
框架的真正好处是能够快速启动工作，你可以创建一个新的(X)HMTL文件，引入你框架，你不用再处理重置padding 和 margins的事情，漂亮的排版，干净的表单，整齐的布局，有效的widgets，等等。很明显，很明显，虽然，你一定要来定制外观和感觉为每个站点。为实现这一目标,所有你需要做的是复写,并添加到默认的风格是必要的。
很显然，尽管你必须为每个网站定制外观，为了完成这一任务，你所需要做的就是在默认的样式上加几行代码。举个例子，如果在你的框架里，为所有的 class属性为“tabs”的UL标签设置了基本的水平导航样式，并且有一个灰色的边框，你只需要几行CSS代码，就可以定制成你的网站所符合的外观样式。
Example Source Code
ul.tabs li {
border:&#160;none;
background-image: url(’/images/tabs/site-specific-tab-look.jpg’);
}
列表左浮动，并且将链接以块的形式置于列表当中，链接也左浮动，字体居中，象烦人的广告一样的这些工作，框架以帮你完成，在你的网站设计工作中，只需集中精力处理特别的、有趣的网站细节，而不是写已经写过百万次的CSS代码。
如何构建一个CSS框架?
构建一个框架有几种可能的方式，但最常见，可以说是最有用的，抽象通用的CSS放到一个独立样式表文件，该样式表文件只包含整体的一个特有部分。例如,你可以，一个样式处理排版，另一个处理大量重置。这种好的方法能使你选择性引入你需要的样式，在你框架里可能有六七个不同的样式文件，但不需要其中的一两个，只要不引入即可。我们团队创建的框架包含5个样式文件：
reset.css —处理重置
type.css —处理排版
grid.css —处理布局
widgets.css —处理小零件（widgets），如tab菜单、下拉菜单、以及“更多”按钮
base.css —包含所有的其他样式表文件，以便我们只需要在(X)HTML引用base.css即可使用整个CSS框架
然后，我们把框架存放在一个单独的地方，使每一个站点都引入这个框架。当然，每一个网站也需要有特有样式表，特有样式对框架进行了必要的补充。
忠告
这种方法不错,但也带来新的问题：增加了每一个页面的http链接数。对于大流量和中等流量的网站，每个页面增加5个以上HTTP连接数，系统管理员可能就麻烦大了。两个可能解决办法：
把所有样式都放到一个文件里，而不是分成多个模块。这里的问题是，失去了框架只包含特定文件的灵活性，而且维护也变得麻烦。
有一个服务器端程序,动态把多个单个文件处理成一个响应。我还没看到这种做法，但如果做好了应该是很有效率的。以我上面框架为例，当请求（Request）base.css时候，而不是请求（Request）type.css , grids.css 等的时候，这一动态处理过程触发。这样一来,单个文件仍然可用，而在平台版本上整个框架也有效的。
总之，我们目标不是尽可能的抽象，这点非常重要。相反,其目标是提供了一个快速启动和更有效率的设计过程，这是绝对有可能去做过的。如果你过于的抽象，事情会变得混乱，太多的HTTP链接数会影响你网站的性能。记住：一个好的框架不是把事情搞更难更复杂，而是一个简单的从零的开始。
总结
我们web设计师往往经常重复自己，就像我程序世界里的那些朋友，我们重置浏览器默认样式、设计布局和导航菜单写了一遍又一遍——几乎每个项目。花一点时间整理CSS 框架，可以使你快速的启动每一个网站项目，更轻松的维护网站，并帮助团队里其他的设计师理解你作品。要注意的一点，这些益处的获得必须以不影响网站的性能为前提。 
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/xwxw/2134644808/" title="framework by xwgemini, on Flickr"><img src="http://farm3.static.flickr.com/2141/2134644808_994781ce6f_m.jpg" width="240" height="98" alt="framework" /></a></p>
<blockquote><p>
去年在网上看了这篇文章是英文的，最近找一些资料发现有人已经翻译成中文了，特此拿来给大家分享
</p></blockquote>
<p>近来，在Web开发中”框架”是一个相当时髦的词。比如JavaScript 框架 YUI、 JQuery和Prototype 都引起广泛的关注， Web应用框架Rails and Dojo 更是引人瞩目，仿佛所有人都使用某种框架来开发自己的网站。但究竟什么是框架?是不是框架仅仅是对程序员有用，设计师是否可以从中收益？</p>
<p><strong>什么是框架?</strong></p>
<p>为了便于沟通，我们给“框架”统一一个定义（至少在本篇文章中是统一的）：一套包含工具、函数库、约定，以及尝试从常用任务中抽象出可以复用的通用模块，目标是使设计师和开发人员把重点放在任务项目所特有的方面，避免重复开发。通常的讲，框架就是上面提到的JavaScript框架和Web应用框架。</p>
<p>需要强调说明的是，我们不必讨论构造、打包发布，相反，一个框架只为你或你的团队使用即可。<br />
<span id="more-176"></span><br />
<strong>CSS框架</strong></p>
<p>有些时候，你可能尝到了抽象类似的CSS代码的甜头，在那些同时设计几个类似网站的设计师身上表现最为明显。此外，团队中的设计师们从框架的方法上有很多的获益。比如，我在一家报馆工作，所有的20多个网站保持着很多的共同点，基于新闻网站的特点，它们趋向于更加相似，而不是差异。但是，即使单独一个设计师，设计一个从表面上看有差异很大的项目，也可以为CSS框架抽象出一些通用的小碎片。</p>
<p>劳伦斯日报（Lawrence Journal-World），我在那里工作，我们最近建立了一个CSS框架，并发现它是一个巨大的效率倍增。当然，我们花了数天时间自己创建了一个 CSS框架，但一旦框架完工，开发高质量网页的速度是极快的。更何况，既然团队每一个设计师现在都使用这个框架，当一个设计师修改另一个团队成员网页时，他们不再需要花20分钟理解别人的构建思路，可以马上上手。</p>
<p><strong>有那些可以忽略?</strong></p>
<p>当投入到一个整体性很强的CSS框架，你想寻找的东西，是每个项目都做了一遍又一遍的重复通用的代码，目标是巩固这些代码核心地位，遵循“不重复自己（Don’t Repeat Yourself）”编码方法。这使得维护工作容易了许多，还可以帮访问者节省带宽开销。</p>
<p><strong>几乎每个我参与的项目中，我必须声明的几个CSS问题：</strong></p>
<p>“大量重置”浏览器默认风格，比如，设置所有元素的margin和padding为0，去掉框架（framesets）和图片（images）的border，等等。<br />
以基线对齐。这包括诸如设定块级元素的margins相同的(或多个)基准行高，如段落（paragraph）、头（header）、以及列表（list）。<br />
创建表单（Form）的基本样式。<br />
创建几个常用的CSS 类，例如，.hide(把display置为none，即隐藏元素)、.mute(设定为一个较小的字体和较亮的颜色)。<br />
还有更有趣的事情，许多网站设计师发现自己不断重复使用着相同的基本结构，为什么不动它整理成自己的，在某种程度上可以非常灵活的用于多个网站? Yahoo这样做了，这就是YUI。当我们为的劳伦斯日报网站（the Journal-World）建立CSS框架的时候，我先看看Yahoo是怎么做的。我们很肯定那不是我们想要的，但作为一个很好的例子，给我们提供了很多思考和如何建构自己框架的想法。我们解决了16个单元格的问题，它具有足够的灵活性使我们的每一个网站都可以应用，即使每个网站看上去与下一个版本有些差异。另外大多数网站共用widgets ，象下拉菜单、导航菜单、按钮等，这些也是主要的需要抽象提取的对象。除此之外,你可能有共同的内容名称，如图片列表的缩略图，你可以规范对CSS命名，如“thumbnail-list”，让所有显示缩略图的都使用这个CSS类。</p>
<p>另外要做的可能是抽取hack（如兼容那些旧浏览器)加入自己的扩展的样式模块。我自己尝试过，但发现hack过于专有而不能抽取到通用框架里。</p>
<p><strong>什么是真正的益处?</strong></p>
<p>框架的真正好处是能够快速启动工作，你可以创建一个新的(X)HMTL文件，引入你框架，你不用再处理重置padding 和 margins的事情，漂亮的排版，干净的表单，整齐的布局，有效的widgets，等等。很明显，很明显，虽然，你一定要来定制外观和感觉为每个站点。为实现这一目标,所有你需要做的是复写,并添加到默认的风格是必要的。</p>
<p>很显然，尽管你必须为每个网站定制外观，为了完成这一任务，你所需要做的就是在默认的样式上加几行代码。举个例子，如果在你的框架里，为所有的 class属性为“tabs”的UL标签设置了基本的水平导航样式，并且有一个灰色的边框，你只需要几行CSS代码，就可以定制成你的网站所符合的外观样式。</p>
<p>Example Source Code</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">ul.tabs</span><span style="color: Gray;"> </span><span style="color: Blue;">li</span><span style="color: Gray;"> </span><span style="color: Olive;">{</span></li>
<li><span style="color: Green;">border:</span><span style="color: Gray;">&nbsp;</span><span style="color: Red;">none</span><span style="color: Gray;">;</span></li>
<li><span style="color: Green;">background-image:</span><span style="color: Gray;"> url(’/images/tabs/site-specific-tab-look.jpg’)</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>列表左浮动，并且将链接以块的形式置于列表当中，链接也左浮动，字体居中，象烦人的广告一样的这些工作，框架以帮你完成，在你的网站设计工作中，只需集中精力处理特别的、有趣的网站细节，而不是写已经写过百万次的CSS代码。</p>
<p><strong>如何构建一个CSS框架?</strong></p>
<p>构建一个框架有几种可能的方式，但最常见，可以说是最有用的，抽象通用的CSS放到一个独立样式表文件，该样式表文件只包含整体的一个特有部分。例如,你可以，一个样式处理排版，另一个处理大量重置。这种好的方法能使你选择性引入你需要的样式，在你框架里可能有六七个不同的样式文件，但不需要其中的一两个，只要不引入即可。我们团队创建的框架包含5个样式文件：</p>
<p>reset.css —处理重置<br />
type.css —处理排版<br />
grid.css —处理布局<br />
widgets.css —处理小零件（widgets），如tab菜单、下拉菜单、以及“更多”按钮<br />
base.css —包含所有的其他样式表文件，以便我们只需要在(X)HTML引用base.css即可使用整个CSS框架<br />
然后，我们把框架存放在一个单独的地方，使每一个站点都引入这个框架。当然，每一个网站也需要有特有样式表，特有样式对框架进行了必要的补充。</p>
<p><strong>忠告</strong></p>
<p>这种方法不错,但也带来新的问题：增加了每一个页面的http链接数。对于大流量和中等流量的网站，每个页面增加5个以上HTTP连接数，系统管理员可能就麻烦大了。两个可能解决办法：</p>
<p>把所有样式都放到一个文件里，而不是分成多个模块。这里的问题是，失去了框架只包含特定文件的灵活性，而且维护也变得麻烦。<br />
有一个服务器端程序,动态把多个单个文件处理成一个响应。我还没看到这种做法，但如果做好了应该是很有效率的。以我上面框架为例，当请求（Request）base.css时候，而不是请求（Request）type.css , grids.css 等的时候，这一动态处理过程触发。这样一来,单个文件仍然可用，而在平台版本上整个框架也有效的。<br />
总之，我们目标不是尽可能的抽象，这点非常重要。相反,其目标是提供了一个快速启动和更有效率的设计过程，这是绝对有可能去做过的。如果你过于的抽象，事情会变得混乱，太多的HTTP链接数会影响你网站的性能。记住：一个好的框架不是把事情搞更难更复杂，而是一个简单的从零的开始。</p>
<p><strong>总结</strong></p>
<p>我们web设计师往往经常重复自己，就像我程序世界里的那些朋友，我们重置浏览器默认样式、设计布局和导航菜单写了一遍又一遍——几乎每个项目。花一点时间整理CSS 框架，可以使你快速的启动每一个网站项目，更轻松的维护网站，并帮助团队里其他的设计师理解你作品。要注意的一点，这些益处的获得必须以不影响网站的性能为前提。 </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.d8in.com/posts/176.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>“少用继承，多用组合”之CSS篇</title>
		<link>http://blog.d8in.com/posts/171.html</link>
		<comments>http://blog.d8in.com/posts/171.html#comments</comments>
		<pubDate>Mon, 05 Nov 2007 22:43:52 +0000</pubDate>
		<dc:creator>xw</dc:creator>
				<category><![CDATA[产品编码]]></category>
		<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://blog.d8in.com/posts/171.html</guid>
		<description><![CDATA[
继承是 css中经常要用到的技术，好处是可以尽量让页面的代码减少重复利用，但是随时项目越来越大，需求的不断变化，css代码就会变得越来越臃肿，后期难以控制和维护。其实，css代码和普通程序代码在编写的时候有很多的相似之处，下面我们就用试试用组合的方式是不是能更好的解决这个问题。
下面是一段普通的代码:
css:
.box{
&#160; border:1px&#160;solid #ccc;
&#160; font-size:12px;
&#160; background:#f1f1f1;
&#160; padding:10px;
}
html：
&#60;div class=&#34;box&#34;&#62;this is&#160; a gray box&#60;/div&#62;

但是这个时候需求增加了，在页面中不仅要有一个灰色的盒子可能还有蓝色的盒子，可能还有绿色，通常我们会说用集成嘛，好我们就做如下更改
css:
.box-gray,
.box-green{
&#160; border:1px&#160;solid #ccc;
&#160; font-size:12px;
&#160; padding:10px;
}
.box-gray{background:#f1f1f1}
.box-green{background:#66ff66}
Html:
&#60;div class=&#34;box-gray&#34;&#62;this is&#160; a gray box&#60;/div&#62;
&#60;div&#160;class=&#34;box-green&#34;&#62;this is a green box&#60;/div&#62;
但是这个时候需求又有变化了，根与应用的不同，盒子中有些要用到12号字，有些要用到14号字，有些要变局10px有些要20px，估计这个时候你就要头大了，如果要用用继承css代码就会变得异常的复杂，那我们就来试验一下用组合的方式看能不能解决。
css:
.fs-12{font-size:12px}
.fs-14{font-size:14px}
.pd-10{padding:10px}
.pd-20{padding:20px}
&#160;
.box{
&#160; border:1px&#160;solid #ccc;
}
.box.gray{background:#f1f1f1}
.box.green{background:#66ff66}
Html
&#60;div class=&#34;box gray fs-12 pd-20&#34;&#62;this a gray fontsize12px padding20px box&#60;/div&#62;
&#60;div&#160;class=&#34;box green fs-14 pd-10&#34;&#62;this a gray fontsize14px padding10px box&#60;/div&#62;
….
我们看一些虽然 在class上引用了几个，但是代码和逻辑都非常清晰，而且非常容易维护，随意组合随意扩展。从上面可以看到“组合”的方式是不言而喻的，但是也不是十全十美的，再拆分组合的时候一定不要过度，不然效果可能适得其反，只有把组合+继承运用的恰到好处才能让我们的代码更加优雅和艺术。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yupoo.com/photos/view?id=ff80808116131770011617f24e785283" title="来YUPOO看我的照片"><img src="http://photo5.yupoo.com/20071107/103103_148224484_fxfqbnwp.jpg" alt="“少用继承，多用组合”之CSS篇" width="380" height="90" border="0" /></a></p>
<p>继承是 css中经常要用到的技术，好处是可以尽量让页面的代码减少重复利用，但是随时项目越来越大，需求的不断变化，css代码就会变得越来越臃肿，后期难以控制和维护。其实，css代码和普通程序代码在编写的时候有很多的相似之处，下面我们就用试试用组合的方式是不是能更好的解决这个问题。</p>
<p>下面是一段普通的代码:<br />
css:</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">.box</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Green;">border:</span><span style="color: Maroon;">1</span><span style="color: Red;">px</span><span style="color: Gray;">&nbsp;</span><span style="color: Red;">solid</span><span style="color: Gray;"> </span><span style="color: #00008b;">#ccc</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Green;">font-size:</span><span style="color: Maroon;">12</span><span style="color: Red;">px</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Green;">background:</span><span style="color: #00008b;">#f1f1f1</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Green;">padding:</span><span style="color: Maroon;">10</span><span style="color: Red;">px</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li></ol></div>
<p>html：</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;"> </span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">box</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">this is&nbsp; a gray box</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p><span id="more-171"></span></p>
<p>但是这个时候需求增加了，在页面中不仅要有一个灰色的盒子可能还有蓝色的盒子，可能还有绿色，通常我们会说用集成嘛，好我们就做如下更改<br />
css:</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">.box-gray</span><span style="color: Gray;">,</span></li>
<li><span style="color: Blue;">.box-green</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Green;">border:</span><span style="color: Maroon;">1</span><span style="color: Red;">px</span><span style="color: Gray;">&nbsp;</span><span style="color: Red;">solid</span><span style="color: Gray;"> </span><span style="color: #00008b;">#ccc</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Green;">font-size:</span><span style="color: Maroon;">12</span><span style="color: Red;">px</span><span style="color: Gray;">;</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Green;">padding:</span><span style="color: Maroon;">10</span><span style="color: Red;">px</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">.box-gray</span><span style="color: Olive;">{</span><span style="color: Green;">background:</span><span style="color: #00008b;">#f1f1f1</span><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">.box-green</span><span style="color: Olive;">{</span><span style="color: Green;">background:</span><span style="color: #00008b;">#66ff66</span><span style="color: Olive;">}</span></li></ol></div>
<p>Html:</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;"> </span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">box-gray</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">this is&nbsp; a gray box</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">box-green</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">this is a green box</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li></ol></div>
<p>但是这个时候需求又有变化了，根与应用的不同，盒子中有些要用到12号字，有些要用到14号字，有些要变局10px有些要20px，估计这个时候你就要头大了，如果要用用继承css代码就会变得异常的复杂，那我们就来试验一下用组合的方式看能不能解决。<br />
css:</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Blue;">.fs-12</span><span style="color: Olive;">{</span><span style="color: Green;">font-size:</span><span style="color: Maroon;">12</span><span style="color: Red;">px</span><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">.fs-14</span><span style="color: Olive;">{</span><span style="color: Green;">font-size:</span><span style="color: Maroon;">14</span><span style="color: Red;">px</span><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">.pd-10</span><span style="color: Olive;">{</span><span style="color: Green;">padding:</span><span style="color: Maroon;">10</span><span style="color: Red;">px</span><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">.pd-20</span><span style="color: Olive;">{</span><span style="color: Green;">padding:</span><span style="color: Maroon;">20</span><span style="color: Red;">px</span><span style="color: Olive;">}</span></li>
<li><span style="color: Gray;">&nbsp;</span></li>
<li><span style="color: Blue;">.box</span><span style="color: Olive;">{</span></li>
<li><span style="color: Gray;">&nbsp; </span><span style="color: Green;">border:</span><span style="color: Maroon;">1</span><span style="color: Red;">px</span><span style="color: Gray;">&nbsp;</span><span style="color: Red;">solid</span><span style="color: Gray;"> </span><span style="color: #00008b;">#ccc</span><span style="color: Gray;">;</span></li>
<li><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">.box.gray</span><span style="color: Olive;">{</span><span style="color: Green;">background:</span><span style="color: #00008b;">#f1f1f1</span><span style="color: Olive;">}</span></li>
<li><span style="color: Blue;">.box.green</span><span style="color: Olive;">{</span><span style="color: Green;">background:</span><span style="color: #00008b;">#66ff66</span><span style="color: Olive;">}</span></li></ol></div>
<p>Html</p>
<div class="hl-surround"><ol class="hl-main ln-show" title="Double click to hide line number." ondblclick = "linenumber(this)"><li class="hl-firstline"><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;"> </span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">box gray fs-12 pd-20</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">this a gray fontsize12px padding20px box</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Olive;">&lt;</span><span style="color: Green;">div</span><span style="color: Gray;">&nbsp;</span><span style="color: #00008b;">class</span><span style="color: Gray;">=</span><span style="color: #8b0000;">&quot;</span><span style="color: Red;">box green fs-14 pd-10</span><span style="color: #8b0000;">&quot;</span><span style="color: Olive;">&gt;</span><span style="color: Gray;">this a gray fontsize14px padding10px box</span><span style="color: Olive;">&lt;/</span><span style="color: Green;">div</span><span style="color: Olive;">&gt;</span></li>
<li><span style="color: Gray;">….</span></li></ol></div>
<p>我们看一些虽然 在class上引用了几个，但是代码和逻辑都非常清晰，而且非常容易维护，随意组合随意扩展。从上面可以看到“组合”的方式是不言而喻的，但是也不是十全十美的，再拆分组合的时候一定不要过度，不然效果可能适得其反，只有把组合+继承运用的恰到好处才能让我们的代码更加优雅和艺术。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.d8in.com/posts/171.html/feed</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>W3C官方的开源编辑器 Amaya</title>
		<link>http://blog.d8in.com/posts/167.html</link>
		<comments>http://blog.d8in.com/posts/167.html#comments</comments>
		<pubDate>Tue, 30 Oct 2007 12:35:37 +0000</pubDate>
		<dc:creator>xw</dc:creator>
				<category><![CDATA[产品编码]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://blog.d8in.com/posts/167.html</guid>
		<description><![CDATA[
W3C出品的所见即所得的网页编辑/浏览器, 支持HTML 4.01, XHTML 1.0, XHTML Basic, XHTML 1.1, HTTP 1.1, MathML 2.0等格式,
支持包括Linux, Windows and MacOS X PowerPC and Intel在内的多种操作系统.
主要功能：
• Amaya lets users both browse and author Web pages
• Amaya maintains a consistent internal document model adhering to the DTD
• Amaya is able to work on several documents at a time
• Amaya helps authors create [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yupoo.com/photos/view?id=ff80808115ed701e0115f4548b872fe9" title="来YUPOO看我的照片"><img src="http://photo5.yupoo.com/20071031/123201_1049156823_m.jpg" alt="amaya" width="240" height="180" border="0" /></a></p>
<p>W3C出品的所见即所得的网页编辑/浏览器, 支持HTML 4.01, XHTML 1.0, XHTML Basic, XHTML 1.1, HTTP 1.1, MathML 2.0等格式,<br />
支持包括Linux, Windows and MacOS X PowerPC and Intel在内的多种操作系统.</p>
<p>主要功能：<br />
• Amaya lets users both browse and author Web pages<br />
• Amaya maintains a consistent internal document model adhering to the DTD<br />
• Amaya is able to work on several documents at a time<br />
• Amaya helps authors create hypertext links<br />
• Amaya includes a collaborative annotation application </p>
<p><span id="more-167"></span></p>
<p>增强支持：<br />
• Transport protocols<br />
• Support for CSS<br />
• Support for MathML<br />
• Support for SVG<br />
• Support for RDF and XPointer</p>
<blockquote><p>下载以后试用了一下，没有什么太多亮点，而且速度不是特别快，可能是由于刚刚开发软件不是很完善，另外在对vista支持不是很好总是闪屏，在xp下没有什么问题。喜欢尝鲜的朋友可以下载试用一下，有些地方设计还是蛮有意思的。</p></blockquote>
<p>截图：<a href="http://www.w3.org/Amaya/screenshots/Overview.html">http://www.w3.org/Amaya/screenshots/Overview.html</a><br />
更新：<a href="http://www.w3.org/Amaya/User/New.html">http://www.w3.org/Amaya/User/New.html</a><br />
官网：<a href="http://www.w3.org/Amaya ">http://www.w3.org/Amaya </a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.d8in.com/posts/167.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>代码设计原则</title>
		<link>http://blog.d8in.com/posts/164.html</link>
		<comments>http://blog.d8in.com/posts/164.html#comments</comments>
		<pubDate>Fri, 19 Oct 2007 17:55:18 +0000</pubDate>
		<dc:creator>xw</dc:creator>
				<category><![CDATA[产品编码]]></category>
		<category><![CDATA[book]]></category>

		<guid isPermaLink="false">http://blog.d8in.com/posts/164.html</guid>
		<description><![CDATA[
这些话是从《设计模式 head first》中摘录的，句句都是经典，细细体会就会有很大的收获，这些原则，不仅仅用于标准的程序开发，也适合css/html页面代码的设计和产品的需求设计
1、找出应用中可能需要变化之处，把他们独立出来，不要和那些不需要变化的代码混在一起。
2、针对接口编程，而不是针对实现编程。
3、多中组合，少用继承。
4、为了交互对象之间的松耦合设计而努力。
5、类应该对扩展开放，对修改关闭。
6、要依赖抽象，不要依赖具体类。
7、最少知识原则：只和你的密友谈话。
8、别调用（打电话给）我们，我们会调用（打电话给）你。
9、一个类应该只有一个引起变化的原因。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.yupoo.com/photos/view?id=ff80808115a315af0115c35125c83798" title="来YUPOO看我的照片"><img src="http://photo5.yupoo.com/20071022/000655_778306201_yqrbaluw.jpg" alt="head first 设计模式" width="172" height="200" border="0" /></a></p>
<blockquote><p>这些话是从《设计模式 head first》中摘录的，句句都是经典，细细体会就会有很大的收获，这些原则，不仅仅用于标准的程序开发，也适合css/html页面代码的设计和产品的需求设计</p></blockquote>
<p>1、找出应用中可能需要变化之处，把他们独立出来，不要和那些不需要变化的代码混在一起。<br />
2、针对接口编程，而不是针对实现编程。<br />
3、多中组合，少用继承。<br />
4、为了交互对象之间的松耦合设计而努力。<br />
5、类应该对扩展开放，对修改关闭。<br />
6、要依赖抽象，不要依赖具体类。<br />
7、最少知识原则：只和你的密友谈话。<br />
8、别调用（打电话给）我们，我们会调用（打电话给）你。<br />
9、一个类应该只有一个引起变化的原因。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.d8in.com/posts/164.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
