<?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>wlsy &#187; Web前端</title>
	<atom:link href="http://wlsy.me/category/xhtmlcssjs/feed/" rel="self" type="application/rss+xml" />
	<link>http://wlsy.me</link>
	<description>还活着呢</description>
	<lastBuildDate>Mon, 05 Jul 2010 16:24:48 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CSS Animation PPT Demo</title>
		<link>http://wlsy.me/1847/</link>
		<comments>http://wlsy.me/1847/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 16:10:36 +0000</pubDate>
		<dc:creator>wlsy</dc:creator>
				<category><![CDATA[Lab]]></category>
		<category><![CDATA[Web前端]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[demo]]></category>

		<guid isPermaLink="false">http://wlsy.me/?p=1847</guid>
		<description><![CDATA[在几天前的一次内部分享中，因为内容涉及到css3 Animation 。因此也用了些CSS3 Animation 搞了一个PPT。各位将就着看来着，装备webkit核心浏览器，然后猛击看这里看这里。

博客要长草了，PS：日和是部很好看的无码小短片。
]]></description>
			<content:encoded><![CDATA[<p>在几天前的一次内部分享中，因为内容涉及到css3 Animation 。因此也用了些CSS3 Animation 搞了一个PPT。各位将就着看来着，装备webkit核心浏览器，然后猛击<a href="http://wlsy.me/lab/css3ppt/" target="_blank">看这里看这里</a>。</p>
<p style="text-align: center;"><a target="_blank" href="http://wlsy.me/lab/css3ppt/index.html"><img class="aligncenter" title="css3 animation" src="http://wlsy.me/img/20100705/cssAnimation.png" alt="css3 animation" width="618" height="444" /></a></p>
<p>博客要长草了，PS：<a href="http://u.youku.com/user_show/id_UMTQxNDQxNzE2.html" target="_blank">日和</a>是部很好看的无码小短片。</p>
]]></content:encoded>
			<wfw:commentRss>http://wlsy.me/1847/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>使用CSS3 创建动画效果</title>
		<link>http://wlsy.me/1740/</link>
		<comments>http://wlsy.me/1740/#comments</comments>
		<pubDate>Sun, 06 Dec 2009 14:35:23 +0000</pubDate>
		<dc:creator>wlsy</dc:creator>
				<category><![CDATA[Web前端]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[transform]]></category>
		<category><![CDATA[transition]]></category>

		<guid isPermaLink="false">http://www.g9net.com/2009/12/06/css3-animation-transform-transition.html</guid>
		<description><![CDATA[概述
在CSS3中新增了几个很好玩的东东：CSS Animation，CSS Transition 和 CSS Transform，顾名思义就是通过CSS来实现动画，过渡和变形。
它们的出现足以让我很兴奋了，我不必要在去写那些复杂的JS代码，运用它们我能更简单的创建自己的想要的动画。
应用前景
伴随着CSS3的普及，这些特性被各大浏览器支持也只是时间上的问题。有消息称在Internet Explorer 9 中将更好的支持HTML5和CSS3 从IE9预览版上看已经支持了。所以各位围观群众不必担心这只是昙花一现。以下是我就目前的浏览器支持状态统计的一个表格：





IE8 -
chrome&#38;safair
firefox 3.5.5 *(3)
opera 10.10- *(4)


CSS Transiton
X
O
X
X


CSS Animation
X
O
X
X


2D Transform
*(1)
O
O
X


3D Transform
X
*(2)
X
X



备注

(1): IE可以通过滤镜来实现部分变形
(2): 目前Windows下的webkit因不能调用GPU而不能支持部分3D Transform。
(3): firefox3.7称将支持更多CSS3特性，不过最终是否支持Animation和3D Transform还不是很确定
(4): oprea已经在表示在Presto2.3(opera内核)中将支持Transtion。可查看wiki

接下来要开始了，各位看官准备好chrome或safair，演示和代码使用webkit的私有属性，let’s 干吧。
CSS Transition
这个能实现很舒服的过度效果，先看CSS代码片段：

    .box {
        width: 200px;
        height: 200px;
      [...]]]></description>
			<content:encoded><![CDATA[<h3>概述</h3>
<p>在CSS3中新增了几个很好玩的东东：CSS Animation，CSS Transition 和 CSS Transform，顾名思义就是通过CSS来实现动画，过渡和变形。</p>
<p>它们的出现足以让我很兴奋了，我不必要在去写那些复杂的JS代码，运用它们我能更简单的创建自己的想要的动画。</p>
<h3>应用前景</h3>
<p>伴随着CSS3的普及，这些特性被各大浏览器支持也只是时间上的问题。<span style="text-decoration: line-through;">有消息称在Internet Explorer 9 中将更好的支持HTML5和CSS3</span> 从IE9预览版上看已经支持了。所以各位围观群众不必担心这只是昙花一现。以下是我就目前的浏览器支持状态统计的一个表格：</p>
<p><span id="more-1740"></span></p>
<table border="0" cellspacing="0" cellpadding="2" width="685" align="center">
<tbody>
<tr>
<td width="124" valign="top"></td>
<td width="98" valign="top">IE8 -</td>
<td width="159" valign="top">chrome&amp;safair</td>
<td width="144" valign="top">firefox 3.5.5 *(3)</td>
<td width="158" valign="top">opera 10.10- *(4)</td>
</tr>
<tr>
<td width="124" valign="top">CSS Transiton</td>
<td width="98" valign="top">X</td>
<td width="159" valign="top">O</td>
<td width="144" valign="top">X</td>
<td width="158" valign="top">X</td>
</tr>
<tr>
<td width="124" valign="top">CSS Animation</td>
<td width="98" valign="top">X</td>
<td width="159" valign="top">O</td>
<td width="144" valign="top">X</td>
<td width="158" valign="top">X</td>
</tr>
<tr>
<td width="124" valign="top">2D Transform</td>
<td width="98" valign="top">*(1)</td>
<td width="159" valign="top">O</td>
<td width="144" valign="top">O</td>
<td width="158" valign="top">X</td>
</tr>
<tr>
<td width="124" valign="top">3D Transform</td>
<td width="98" valign="top">X</td>
<td width="159" valign="top">*(2)</td>
<td width="144" valign="top">X</td>
<td width="158" valign="top">X</td>
</tr>
</tbody>
</table>
<p><strong>备注</strong></p>
<ul>
<li>(1): IE可以通过滤镜来实现部分变形</li>
<li>(2): 目前Windows下的webkit因不能调用GPU而不能支持部分3D Transform。</li>
<li>(3): firefox3.7称将支持更多CSS3特性，不过最终是否支持Animation和3D Transform还不是很确定</li>
<li>(4): oprea已经在表示在Presto2.3(opera内核)中将支持Transtion。可查看<a href="http://en.wikipedia.org/wiki/Presto_(layout_engine)#History_and_development" target="_blank">wiki</a></li>
</ul>
<p>接下来要开始了，各位看官准备好chrome或safair，演示和代码使用webkit的私有属性，let’s 干吧。</p>
<h3>CSS Transition</h3>
<p><P>这个能实现很舒服的过度效果，先看CSS代码片段：</P><br />
<code><br />
    .box {<br />
        width: 200px;<br />
        height: 200px;<br />
        background: #ccc;<br />
        -webkit-transition: all 1s ease-in-out; /*实现hover状态是backround的过渡*/<br />
    }<br />
    .box:hover {<br />
        background: #333;<br />
    }<br />
</code></p>
<p>你可以在<a href="http://wlsy.googlecode.com/svn/trunk/demo/css-animation/ani1.html" target="_blank">这里</a>看到这个演示，务必请用基于webkit的chrome或safair（以下同）。看完演示是不是很有兴趣想去学如何去使用了？</p>
<p>transiton属性有这几个值：</p>
<ul>
<li>transition-property :* //指定过度的性质，比如transition-property：backgrond 就是只指定backgound参与这个过渡</li>
<li>transition-duration:*//指定这个过渡的持续时间</li>
<li>transition-delay:* //延迟过渡时间</li>
<li>transition-timing-function:*//指定过度类型，有ease | linear | ease-in | ease-out | ease-in-out | cubic-bezier</li>
</ul>
<blockquote><p>
    <strong>小贴士</strong></p>
<ul>
<li>linear   //线性过度</li>
<li>ease-in   //由慢到快</li>
<li>ease-out  //由快到慢</li>
<li>ease-in-out //由慢到快在到慢</li>
</ul>
<p>timing-funciton的几种过度类型都是基于cubic-bezier的某些特定数值。比如ease-in-out的类型它也可以写成cubic-bezier(0.42, 0, 0.58, 1.0)。你可以在<a href="http://www.w3.org/TR/css3-transitions/#transition-timing-function_tag" target="_blank">这里</a>看到 cubic-bezier曲线图</p>
<p>Transiton和下面的Animation都是支持CSS伪类</p>
</blockquote>
<p>同样的，这些我们可以简写，拿上面的代码  -webkit-transition: all 1s ease-in-out; 包含了property , duration ,timing-fuction。</p>
<p>
参考资料：<br />
<a href="http://www.w3.org/TR/css3-transitions/#transition-timing-function_tag" target="_blank">CSS Transitions Module Level 3</a> （这个是w3c的官方文档，英语好的可以详细看看）<br />
<a href="http://webkit.org/blog/138/css-animation/">http://webkit.org/blog/138/css-animation/</a> （这个webkit官方博客上的讲解，也有例子）</p>
<p>怎么样，赶紧打开编辑器自己写写吧
</p>
<h3>CSS Animation</h3>
<p>顾名思义，这个就能实现元素的动画效果，那时我就被震惊了，无数次那尼感叹。可以先看下<a href="http://wlsy.googlecode.com/svn/trunk/demo/css-animation/ani2.html" target="_blank">演示</a>，代码如下</p>
<p><code><br />
    @-webkit-keyframes title {<br />
    0% { text-shadow:0px 0px 15px #000; }<br />
    50% {<br />
        text-shadow: 0px 0px 30px #3995bd;<br />
        color: #aac7d4;<br />
        margin-top:200px;<br />
    }<br />
    100% { text-shadow: 0px 0px 15px #000; }<br />
    }<br />
    h1 { -webkit-animation: title infinite ease-in-out 3s; }<br />
</code></p>
<p>animation有这几个属性：</p>
<ul>
<li>animation-name//属性名，就是我们定义的keyframes</li>
<li>animation-duration //持续时间</li>
<li>animation-timing-function //同上面的transition-timing-function</li>
<li>animation-delay // 设置动画延迟</li>
<li>animation-iteration-count //定义循环次数，infinite为无限</li>
<li>animation-direction //定义动画方式</li>
</ul>
<p>这些同样是可以简写的。但真正让我觉的很爽的是keyframes 这个似乎有点象js里面的function，它能定义一个动画的转变过程供调用，过程为0%到100%或from(0%)到to(100%)，简单点说，只要你有想法，你想让元素在这个过程中以什么样的方式改变都是很简单的。</p>
<p>你是不是已经开始蠢蠢欲动了？</p>
<p>
参考资料：<a href="http://www.w3.org/TR/2009/WD-css3-animations-20090320/">http://www.w3.org/TR/2009/WD-css3-animations-20090320/</a>
</p>
<h3>Transform</h3>
<p>transform就是实现元素的变形，为什么放到最后？如果跟上面的CSS Animation结合起来是不是更酷呢？先看看这样一个<a href="http://wlsy.googlecode.com/svn/trunk/demo/css-animation/ani3.html" target="_blank">演示</a>，相信你不敢相信这只用CSS写出来的效果吧。</p>
<p>transform有几种类型：</p>
<ul>
<li>scale(num,num) //尺寸，scale(2,3)即x轴方向放大两倍，y轴方向放大3被，同样的可单独写scaleX(2),scaleY(3)</li>
<li>rotate(*deg) //旋转的角度<br />
<blockquote><p>在2d  transform中 旋转角度俺当前的平面顺时针或逆时针旋转 。在3d transform中新增了 rotateX 和rotateY它们分别以y轴或x轴为中心进行旋转，同样可以简写称rotate(*,*)。目前已被chrome和safair支持</p></blockquote>
</li>
<li>skew（*deg）//倾斜角度，同样的有skewX和skewY 可简写为skew（*,*）</li>
<li>translate //移动<br />
<blockquote><p>在2d transform中 分为translateX 和translateY 简而言之就是元素网x轴或y轴的移动距离，而在3dtransform中新增了一个translateZ 及实现Z轴的移动，实现透视效果。目前在Windows系统上还没有浏览器支持，同样的这些可以简写。</p></blockquote>
</li>
</ul>
<p>了解完这些用法后在去看看那个演示的源码，相信你肯定会惊叹transform和animation配合的动画效果了吧</p>
<p>
参考资料：</p>
<ul>
<li><a href="http://www.w3.org/TR/2009/WD-css3-2d-transforms-20090320/">http://www.w3.org/TR/2009/WD-css3-2d-transforms-20090320/</a> （w3c文档）</li>
<li><a href="http://webkit.org/blog/386/3d-transforms/">3D Transforms</a> （webkit博客上的文章，所以在Windows下没法看到，不过那里有截图过过瘾，并有一个很酷在Windows下打了折扣的<a href="http://webkit.org/blog-files/3d-transforms/morphing-cubes.html" target="_blank">demo</a>哦）</li>
<li><a href="http://www.zachstronaut.com/lab/isocube.html">http://www.zachstronaut.com/lab/isocube.html</a>(这个就是用transfrom实现的立方体)</li>
</ul>
<h3>结语</h3>
<p>看到这些，你是否跟我一样期待HTML5和CSS3的快点普及呢？在运用这些新特性能快速而简单的创建原本需要复杂js来实现的动画效果，这是多么让人兴奋的。</p>
<p>不过这些还是有那么些缺点的，CSS Animation的确很酷，但不得不提及它的资源占用问题，CSS transform的确很神奇，但不得不提及它的锯齿问题，当然了这些问题相信浏览器的开发者会逐渐改善的。</p>
]]></content:encoded>
			<wfw:commentRss>http://wlsy.me/1740/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>有关web前端中的语义化</title>
		<link>http://wlsy.me/1684/</link>
		<comments>http://wlsy.me/1684/#comments</comments>
		<pubDate>Sun, 28 Jun 2009 09:35:16 +0000</pubDate>
		<dc:creator>wlsy</dc:creator>
				<category><![CDATA[Web前端]]></category>
		<category><![CDATA[语义化]]></category>

		<guid isPermaLink="false">http://www.g9net.com/2009/06/28/related-to-the-semantic-web-front-end-of.html</guid>
		<description><![CDATA[作天在变卖大学书籍时也不晓得怎么的就想起语义化这个概念，于是乎也就花点时间搞搞它。语义化标记对于刚学web前端脚本语言的童鞋来说往往都没太在意，哇哈哈，其实我也就算只比较老的菜鸟而已，本文不是说教，只是分享有关语义化的一些东西。
 
那什么是语义化呢？
首先抽象的说下语义（Semantic）的概念：“语义可以简单地看作是数据所对应的现实世界中的事物所代表的概念的含义，以及这些含义之间的关系，是数据在某个领域上的解释和逻辑表示。”娘的，太抽象了。其实在那个用4000W打造的超级防猥琐的绿坝就有个叫语义分析的功能，如果发现不健康信息，立马对其进行关闭，哼哼。
通过强大的拆字我们可以简单的理解它为：用特定的语言来定义特定的事物。在web前端中语义化标记也可以这样理解。
 
绿坝它全家靓照
你是不是特别特别喜欢div标签？
在刚开始学习web前端时想必你肯定听说div+css布局，说的那是如此好如此妙如此呱呱叫，于是乎你就div+css了，div套div，div何其多，去w3c验证发现还能通过，仰天长呼，so easy，so easy。
然而堂堂的(X)HTML就一个div标签？答案肯定不是，那其他的标签是不是没有用？答案更不是。任何事物存在亦有它的价值所在滴。在初学XHTML时，我曾经犯了一个很傻的错误，在定义几个行列表项时我是这样写的：


&#60;div id=&#34;list&#34;&#62;
虫下米&#60;br /&#62;
wlsy&#60;br /&#62;
虫下米wlsy合体&#60;br /&#62;
&#60;/div&#62;


你别笑，我当时真的是这样写的，只不过其中的文字记不清了，写完后发现在浏览器中是我想要的结果也就认为代码是正确的。代码是正确的吗？代码当然是正确的但是不规范。在XHTML中有个专门定义列表的标签ul（无序列表），ol（有序列表），dl（定义列表）。所以更加规范，更加有语义的我们可以这样写：


&#60;ul id=&#34;list&#34;&#62;
&#60;li&#62;虫下米&#60;/li&#62;
&#60;li&#62;wlsy&#60;/li&#62;
&#60;li&#62;虫下米wlsy合体&#60;/li&#62;
&#60;/ul&#62;


在学习XHTML时，应尽量能够熟悉有定义到的标签，并在特定的内容加以应用，比如我们可以用strong(用strong来替代b)标签来强调内容，用Hx(h1,h2…..)来定义标题等等。我可以吐血奉献我搜刮到一些资源：XHTML Cheat Sheet（这是常用的XHTML标签表格，可以下下来看，不过是英文的），HTML 4.01 / XHTML 1.0 参考手册（这里面有标签的详细用而且还配有实例），在早些时候我有写过一篇：几个不太常见的(X)HTML标签。
另外关于语义化标签蓝色理想上有篇帖子很不错：http://bbs.blueidea.com/thread-2658231-1-1.html
所以呢相对于叫div+CSS布局，我更喜欢叫做(X)HTML+CSS布局。
结构命名中的语义化
这里说的结构就是就是我们平常编写的XHTML代码，而命名就是我们为id或class所取的名称。
有个例子是这样的，你是不是有时会类似这样来写代码（代码比较粗糙演示用）：


&#60;div id=&#34;left&#34;&#62;
&#60;p&#62;今天是个好天气呀&#60;/&#62;
&#60;/div&#62;
&#60;div id=&#34;right&#34;&#62;
&#60;p&#62;我的一些照片&#60;/p&#62;
&#60;/div&#62;


CSS代码：


#left{float:left;display:inline;width:50%;}
#right{float:right;display:inline;width:49%;}


但是某天我突然闲着没事想换个布局来增加新鲜感，比如对掉左右边的内容，那么我仅仅要在CSS里面这样改：


#left{float:right;display:inline;width:50%;}
#right{float:left;display:inline;width:49%;}


结果呈现的效果确实是你想要的，但是为其id命名是不是违背的你的原意？你原本命名id=“left”的div内容的意思就是要在左边显示，而现在却显示在右边了。虽然结果是你想要的，但是命名好像很别扭的跟你做对。所以如果要对其进行语义化的命名我们可以这样来：


&#60;div id=&#34;content&#34;&#62;
&#60;p&#62;今天是个好天气&#60;/p&#62;
&#60;/div&#62;
&#60;div id=&#34;sidebar&#34;&#62;
&#60;p&#62;我的一些照片&#60;/p&#62;
&#60;/div&#62;


这样命名为content就是内容，命名为sidebar就是边栏，管它上窜下跳，左躲右藏，命名内容块始终为包含内容，命名边栏块也始终包含边栏。这个例子就是语义化命名的实例，很好理解吧。
看看我是怎么给自己的网站结构命名的：&#160; 

结构命名为常用的英文单词，多词之前用-来分割。因为是个人博客所以命名也就没什么其他特殊要求了。如果想看看其他的网站的命名推荐各位用firebug，这是在Firefox的一个插件，能很方面的查看，修改和调试代码。
这里有一些有用的文章能够让你更加理解结构命名中的语义化：
CSS类命名的语义化VS结构化方式（这篇文章有很好的配图帮助你理解语义化命名）
语义化有什么优势吗？
当你写完代码后在浏览器调试，如果呈现的结果是你想要的，你是不是就不会再去检查你的代码了呢？访客能看到浏览器解析后的实际页面，但是你想过流量的另一个重要来源：搜索引擎吗？
语义化更有利于SEO
有个很常见的例子是这样的：在初学SEO的时候你是不是经常用h1来突出你的标题，用strong来突出你的关键字，或许你不太在意，但这确实是语义化的体现。就目前的搜索引擎来说并不能想访客那样很直观的去查看网页，它只有分析的你源码来体现或猜测网站要表达的内容。比如你想表达某篇文章的标题，你或许会这样写：


&#60;div id=&#34;title&#34;&#62;文章的标题&#60;/div&#62;


访客或许能理解你的意思，但搜索引擎就要反复揣摩了，更好的讨好搜索引擎我们可以这样来写：


&#60;h1&#62;这是标题&#60;/h1&#62;


小提示：h1拥有最高的权值，在一个页面中最好指使用1个h1来突出你的内容，太多的h1会分散其整个页面的权重，对搜索引擎也是非常的不友好。
当然语义化还有其他优势：
正如上面那个例子，语义化的代码更小，下载也就更快了。另外语义化代码也能够更加快速的帮助新的前端工程师理解你的代码。语义化代码也更能帮助视障的人通过设备来理解你的内容等等。当当然语义化代码也是你能力的体现。
一些资料：semantic code: what? why? how?，
4 Ways CSS Can Improve Your SEO
语义化的更高体现-微格式
什么是微格式呢？维基百科这样给它定义的：

微格式（Microformat），是通过语意相关让内容人机可读。网页上的允许的微格式数据包括事件、人物、地点等，它可以被其他的软件检测到，并提取出相应的信息，以及对信息进行索引、搜索、跨平台的参考，把这些信息以其他形式重复使用或组合。
从技术上来说，这些数据是一些语义标记，用标准的(X)HTML中的class名称设置。他是开放、可用、自由的，可以被任何人使用。

维基百科上还有一个实例我就不贴了，你可以到这里看到。
在往后，当搜索引擎越来越重视微格式，在你的网站上应用微格式肯定会为你加分不少。在应用和推广微格式上面，我觉得wordpress做的非常的好，在之前应用了诸如：rel=”tag”，rel=”nofollow”,rel=”license”后，在升级到wordpress2.8后我发现它在header处新增了这几个：
 
根据字面意就是帮助搜索引擎理解本页的主页，开始页，上一篇和下一篇。不过目前有些微格式还处于草案当中，并不能确保它在最后时还在。要想关注微格式你可以看看它的官方网站
微格式还有个很经典的例子就是名片的应用，它也就是通过一些很有语义的标记来描述个人信息，如果你想折腾微格式还是有得折腾的，为了避免篇幅过长下面给出写有用的了链接方便有兴趣的继续折腾。
微格式全功略Hcard、hCalendar、hReview、XFN 轻松掌握（这几个微格式也就是主要来体现个人信息，这篇来自ued163）。这里也还有一系列的翻译译文http://www.mijia.org/blog/?p=152能够帮助你很好的理解微格式。
end～
]]></description>
			<content:encoded><![CDATA[<p>作天在变卖大学书籍时也不晓得怎么的就想起语义化这个概念，于是乎也就花点时间搞搞它。语义化标记对于刚学web前端脚本语言的童鞋来说往往都没太在意，哇哈哈，其实我也就算只比较老的菜鸟而已，本文不是说教，只是分享有关语义化的一些东西。</p>
<p> <span id="more-1684"></span></p>
<h4>那什么是语义化呢？</h4>
<p>首先抽象的说下语义（Semantic）的概念：“语义可以简单地看作是数据所对应的现实世界中的事物所代表的概念的含义，以及这些含义之间的关系，是数据在某个领域上的解释和逻辑表示。”娘的，太抽象了。其实在那个用4000W打造的超级防猥琐的绿坝就有个叫语义分析的功能，如果发现不健康信息，立马对其进行关闭，哼哼。</p>
<p>通过强大的拆字我们可以简单的理解它为：用特定的语言来定义特定的事物。在web前端中语义化标记也可以这样理解。</p>
<p> <img src="http://lh5.ggpht.com/_cZCuU2AQABo/SkY-tKQ-BRI/AAAAAAAACuA/l5AfR1KITYA/sdfasgsdf.png?imgmax=800" /></p>
<p align="center">绿坝它全家靓照</p>
<h4>你是不是特别特别喜欢div标签？</h4>
<p>在刚开始学习web前端时想必你肯定听说div+css布局，说的那是如此好如此妙如此呱呱叫，于是乎你就div+css了，div套div，div何其多，去w3c验证发现还能通过，仰天长呼，so easy，so easy。</p>
<p>然而堂堂的(X)HTML就一个div标签？答案肯定不是，那其他的标签是不是没有用？答案更不是。任何事物存在亦有它的价值所在滴。在初学XHTML时，我曾经犯了一个很傻的错误，在定义几个行列表项时我是这样写的：</p>
<div>
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span> <span style="color: #ff0000">id</span><span style="color: #0000ff">=&quot;list&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">虫下米<span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span> <span style="color: #0000ff">/&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">wlsy<span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span> <span style="color: #0000ff">/&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">虫下米wlsy合体<span style="color: #0000ff">&lt;</span><span style="color: #800000">br</span> <span style="color: #0000ff">/&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span></pre>
</div>
</div>
<p>你别笑，我当时真的是这样写的，只不过其中的文字记不清了，写完后发现在浏览器中是我想要的结果也就认为代码是正确的。代码是正确的吗？代码当然是正确的但是不规范。在XHTML中有个专门定义列表的标签ul（无序列表），ol（有序列表），dl（定义列表）。所以更加规范，更加有语义的我们可以这样写：</p>
<div>
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">ul</span> <span style="color: #ff0000">id</span><span style="color: #0000ff">=&quot;list&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">li</span><span style="color: #0000ff">&gt;</span>虫下米<span style="color: #0000ff">&lt;/</span><span style="color: #800000">li</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">li</span><span style="color: #0000ff">&gt;</span>wlsy<span style="color: #0000ff">&lt;/</span><span style="color: #800000">li</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">li</span><span style="color: #0000ff">&gt;</span>虫下米wlsy合体<span style="color: #0000ff">&lt;/</span><span style="color: #800000">li</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">ul</span><span style="color: #0000ff">&gt;</span></pre>
</div>
</div>
<p>在学习XHTML时，应尽量能够熟悉有定义到的标签，并在特定的内容加以应用，比如我们可以用strong(用strong来替代b)标签来强调内容，用Hx(h1,h2…..)来定义标题等等。我可以吐血奉献我搜刮到一些资源：<a href="http://csstidy.sourceforge.net/xhtml.php" target="_blank">XHTML Cheat Sheet</a>（这是常用的XHTML标签表格，可以下下来看，不过是英文的），<a href="http://www.w3school.com.cn/tags/index.asp" target="_blank">HTML 4.01 / XHTML 1.0 参考手册</a>（这里面有标签的详细用而且还配有实例），在早些时候我有写过一篇：<a href="http://www.g9net.com/2009/03/07/several-less-common-x-html-tags.html" target="_blank">几个不太常见的(X)HTML标签</a>。</p>
<p>另外关于语义化标签蓝色理想上有篇帖子很不错：<a href="http://bbs.blueidea.com/thread-2658231-1-1.html">http://bbs.blueidea.com/thread-2658231-1-1.html</a></p>
<p>所以呢相对于叫div+CSS布局，我更喜欢叫做(X)HTML+CSS布局。</p>
<h4>结构命名中的语义化</h4>
<p>这里说的结构就是就是我们平常编写的XHTML代码，而命名就是我们为id或class所取的名称。</p>
<p>有个例子是这样的，你是不是有时会类似这样来写代码（代码比较粗糙演示用）：</p>
<div>
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span> <span style="color: #ff0000">id</span><span style="color: #0000ff">=&quot;left&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">p</span><span style="color: #0000ff">&gt;</span>今天是个好天气呀<span style="color: #0000ff">&lt;/&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span> <span style="color: #ff0000">id</span><span style="color: #0000ff">=&quot;right&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">p</span><span style="color: #0000ff">&gt;</span>我的一些照片<span style="color: #0000ff">&lt;/</span><span style="color: #800000">p</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span></pre>
</div>
</div>
<p>CSS代码：</p>
<div>
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">#<span style="color: #0000ff">left</span>{<span style="color: #0000ff">float</span>:<span style="color: #006080">left;</span><span style="color: #0000ff">display</span>:<span style="color: #006080">inline;</span><span style="color: #0000ff">width</span>:<span style="color: #006080">50%;</span>}</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">#<span style="color: #0000ff">right</span>{<span style="color: #0000ff">float</span>:<span style="color: #006080">right;</span><span style="color: #0000ff">display</span>:<span style="color: #006080">inline;</span><span style="color: #0000ff">width</span>:<span style="color: #006080">49%;</span>}</pre>
</div>
</div>
<div>但是某天我突然闲着没事想换个布局来增加新鲜感，比如对掉左右边的内容，那么我仅仅要在CSS里面这样改：</div>
<div>
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">#<span style="color: #0000ff">left</span>{<span style="color: #0000ff">float</span>:<span style="color: #006080">right;</span><span style="color: #0000ff">display</span>:<span style="color: #006080">inline;</span><span style="color: #0000ff">width</span>:<span style="color: #006080">50%;</span>}</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">#<span style="color: #0000ff">right</span>{<span style="color: #0000ff">float</span>:<span style="color: #006080">left;</span><span style="color: #0000ff">display</span>:<span style="color: #006080">inline;</span><span style="color: #0000ff">width</span>:<span style="color: #006080">49%;</span>}</pre>
</div>
</div>
<p>结果呈现的效果确实是你想要的，但是为其id命名是不是违背的你的原意？你原本命名id=“left”的div内容的意思就是要在左边显示，而现在却显示在右边了。虽然结果是你想要的，但是命名好像很别扭的跟你做对。所以如果要对其进行语义化的命名我们可以这样来：</p>
<div>
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span> <span style="color: #ff0000">id</span><span style="color: #0000ff">=&quot;content&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">p</span><span style="color: #0000ff">&gt;</span>今天是个好天气<span style="color: #0000ff">&lt;/</span><span style="color: #800000">p</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span> <span style="color: #ff0000">id</span><span style="color: #0000ff">=&quot;sidebar&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">p</span><span style="color: #0000ff">&gt;</span>我的一些照片<span style="color: #0000ff">&lt;/</span><span style="color: #800000">p</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span></pre>
</div>
</div>
<p>这样命名为content就是内容，命名为sidebar就是边栏，管它上窜下跳，左躲右藏，命名内容块始终为包含内容，命名边栏块也始终包含边栏。这个例子就是语义化命名的实例，很好理解吧。</p>
<p>看看我是怎么给自己的网站结构命名的：<img title="虫下米的命名" alt="虫下米的命名" src="http://lh4.ggpht.com/_cZCuU2AQABo/SkZaF2kyeVI/AAAAAAAACuI/gGFFdgRrbds/sdggfsdadsf.png?imgmax=800" />&#160; </p>
</p>
<p>结构命名为常用的英文单词，多词之前用-来分割。因为是个人博客所以命名也就没什么其他特殊要求了。如果想看看其他的网站的命名推荐各位用firebug，这是在Firefox的一个插件，能很方面的查看，修改和调试代码。</p>
<p>这里有一些有用的文章能够让你更加理解结构命名中的语义化：</p>
<p><a href="http://blog.bingo929.com/css-coding-semantic-naming.html" target="_blank">CSS类命名的语义化VS结构化方式</a>（这篇文章有很好的配图帮助你理解语义化命名）</p>
<h4>语义化有什么优势吗？</h4>
<p>当你写完代码后在浏览器调试，如果呈现的结果是你想要的，你是不是就不会再去检查你的代码了呢？访客能看到浏览器解析后的实际页面，但是你想过流量的另一个重要来源：搜索引擎吗？</p>
<p><strong>语义化更有利于SEO</strong></p>
<p>有个很常见的例子是这样的：在初学SEO的时候你是不是经常用h1来突出你的标题，用strong来突出你的关键字，或许你不太在意，但这确实是语义化的体现。就目前的搜索引擎来说并不能想访客那样很直观的去查看网页，它只有分析的你源码来体现或猜测网站要表达的内容。比如你想表达某篇文章的标题，你或许会这样写：</p>
<div>
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span> <span style="color: #ff0000">id</span><span style="color: #0000ff">=&quot;title&quot;</span><span style="color: #0000ff">&gt;</span>文章的标题<span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span></pre>
</div>
</div>
<p>访客或许能理解你的意思，但搜索引擎就要反复揣摩了，更好的讨好搜索引擎我们可以这样来写：</p>
<div>
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #0000ff">&lt;</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;</span>这是标题<span style="color: #0000ff">&lt;/</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;</span></pre>
</div>
</div>
<p>小提示：h1拥有最高的权值，在一个页面中最好指使用1个h1来突出你的内容，太多的h1会分散其整个页面的权重，对搜索引擎也是非常的不友好。</p>
<p>当然语义化还有其他优势：</p>
<p>正如上面那个例子，语义化的代码更小，下载也就更快了。另外语义化代码也能够更加快速的帮助新的前端工程师理解你的代码。语义化代码也更能帮助视障的人通过设备来理解你的内容等等。当当然语义化代码也是你能力的体现。</p>
<p>一些资料：<a href="http://boagworld.com/technology/semantic-code-what-why-how">semantic code: what? why? how?</a>，</p>
<p><a href="http://www.cssnewbie.com/4-ways-css-can-improve-your-seo/">4 Ways CSS Can Improve Your SEO</a></p>
<h4>语义化的更高体现-微格式</h4>
<p>什么是微格式呢？维基百科这样给它定义的：</p>
<blockquote>
<p>微格式（Microformat），是通过语意相关让内容人机可读。网页上的允许的微格式数据包括事件、人物、地点等，它可以被其他的软件检测到，并提取出相应的信息，以及对信息进行索引、搜索、跨平台的参考，把这些信息以其他形式重复使用或组合。</p>
<p>从技术上来说，这些数据是一些语义标记，用标准的(X)HTML中的class名称设置。他是开放、可用、自由的，可以被任何人使用。</p>
</blockquote>
<p>维基百科上还有一个实例我就不贴了，你可以到<a href="http://zh.wikipedia.org/w/index.php?title=微格式&amp;variant=zh-cn" target="_blank">这里</a>看到。</p>
<p>在往后，当搜索引擎越来越重视微格式，在你的网站上应用微格式肯定会为你加分不少。在应用和推广微格式上面，我觉得wordpress做的非常的好，在之前应用了诸如：rel=”tag”，rel=”nofollow”,rel=”license”后，在升级到wordpress2.8后我发现它在header处新增了这几个：</p>
<p><img src="http://lh5.ggpht.com/_cZCuU2AQABo/SkcmgKsl2YI/AAAAAAAACuM/nC03Wo2LTe8/dgdsfadsf.png?imgmax=800" /> </p>
<p>根据字面意就是帮助搜索引擎理解本页的主页，开始页，上一篇和下一篇。不过目前有些微格式还处于草案当中，并不能确保它在最后时还在。要想关注微格式你可以看看它的<a href="http://microformats.org" target="_blank">官方网站</a></p>
<p>微格式还有个很经典的例子就是名片的应用，它也就是通过一些很有语义的标记来描述个人信息，如果你想折腾微格式还是有得折腾的，为了避免篇幅过长下面给出写有用的了链接方便有兴趣的继续折腾。</p>
<p><a href="http://www.ued163.com/?p=470">微格式全功略Hcard、hCalendar、hReview、XFN 轻松掌握</a>（这几个微格式也就是主要来体现个人信息，这篇来自ued163）。这里也还有一系列的翻译译文<a title="http://www.mijia.org/blog/?p=152" href="http://www.mijia.org/blog/?p=152">http://www.mijia.org/blog/?p=152</a>能够帮助你很好的理解微格式。</p>
<p>end～</p>
]]></content:encoded>
			<wfw:commentRss>http://wlsy.me/1684/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>如何实现背景图片缩放效果</title>
		<link>http://wlsy.me/1669/</link>
		<comments>http://wlsy.me/1669/#comments</comments>
		<pubDate>Tue, 09 Jun 2009 14:57:30 +0000</pubDate>
		<dc:creator>wlsy</dc:creator>
				<category><![CDATA[Web前端]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[背景缩放]]></category>

		<guid isPermaLink="false">http://www.g9net.com/2009/06/09/how-to-achieve-the-effect-of-the-background-picture-zoom.html</guid>
		<description><![CDATA[在如今大屏幕日趋流行的今天，相当多的网站都喜欢用大图片来当背景，但是这也有个问题，小屏幕浏览图片显示不全，大屏幕浏览却不够，如何才能对图片进行缩放呢？
其实在CSS3中有个background-size属性，不过现在基本上没啥浏览器能支持，不过了解下也不错，在W3C中有对它有定义到，可以在这里看详细用法。
当然熟悉AS的朋友也可以用整站flash很容易的实现，本文讨论的是基于css来实现。

其实这也不算是什么技术问题，主要是思路问题。既然不能在CSS里面定义，那么只要在XHTML通过img来插入图片实现“伪背景”。
什么没啥兴趣？来来来看演示（请先用非IE6浏览）这里有演示
怎么样拉拉浏览器是不是很神奇？代码很简单：


   1: &#60;style type="text/css"&#62;
   2: * {
   3:     margin:0;
   4:     padding:0;
   5: }
   6: body {
   7:     font:14px/1.6 "Microsoft YaHei";
   8:     background:url(loading.gif) #333 [...]]]></description>
			<content:encoded><![CDATA[<p>在如今大屏幕日趋流行的今天，相当多的网站都喜欢用大图片来当背景，但是这也有个问题，小屏幕浏览图片显示不全，大屏幕浏览却不够，如何才能对图片进行缩放呢？</p>
<p>其实在CSS3中有个background-size属性，不过现在基本上没啥浏览器能支持，不过了解下也不错，在W3C中有对它有定义到，可以<a href="http://www.w3.org/TR/css3-background/#background-size" target="_blank">在这里</a>看详细用法。</p>
<p>当然熟悉AS的朋友也可以用整站flash很容易的实现，本文讨论的是基于css来实现。</p>
<p><span id="more-1669"></span></p>
<p>其实这也不算是什么技术问题，主要是思路问题。既然不能在CSS里面定义，那么只要在XHTML通过img来插入图片实现“伪背景”。</p>
<p>什么没啥兴趣？来来来看演示（请先用非IE6浏览）<a class="button" href="http://www.g9net.com/demo/20090609/index.html" target="_blank">这里有演示</a></p>
<p>怎么样拉拉浏览器是不是很神奇？代码很简单：</p>
<div>
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   1:</span> <span style="color: #006080">&lt;</span><span style="color: #0000ff">style</span> type="text/css"<span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">   2:</span> * {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   3:</span>     <span style="color: #0000ff">margin</span>:0;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">   4:</span>     <span style="color: #0000ff">padding</span>:0;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   5:</span> }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">   6:</span> <span style="color: #0000ff">body</span> {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   7:</span>     <span style="color: #0000ff">font</span>:14px<span style="color: #006080">/1.6 "Microsoft YaHei";</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">   8:</span>     <span style="color: #0000ff">background</span>:url(loading<span style="color: #cc6633">.gif</span><span style="color: #006080">) #333 repeat;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   9:</span>     <span style="color: #0000ff">color</span>:<span style="color: #006080">#fff;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  10:</span> }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  11:</span> #bj {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  12:</span>     <span style="color: #0000ff">width</span>:<span style="color: #006080">100%;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  13:</span>     <span style="color: #0000ff">height</span>:<span style="color: #006080">100%;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  14:</span>     <span style="color: #0000ff">position</span>:<span style="color: #006080">fixed;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  15:</span>     <span style="color: #0000ff">top</span>:0;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  16:</span>     <span style="color: #0000ff">left</span>:0;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  17:</span>     z-index:1;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  18:</span> }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  19:</span> #main {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  20:</span>     <span style="color: #0000ff">width</span>:<span style="color: #006080">100%;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  21:</span>     <span style="color: #0000ff">position</span>:<span style="color: #006080">absolute;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  22:</span>     z-index:2;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  23:</span> }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  24:</span> #<span style="color: #0000ff">content</span> {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  25:</span>     <span style="color: #0000ff">width</span>:<span style="color: #006080">500px;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  26:</span>     <span style="color: #0000ff">margin</span>:<span style="color: #006080">30px auto;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  27:</span>     <span style="color: #0000ff">padding</span>:<span style="color: #006080">10px;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  28:</span>     <span style="color: #0000ff">background</span>:<span style="color: #006080">#000;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  29:</span>     <span style="color: #0000ff">height</span>:<span style="color: #006080">1000px;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  30:</span>     <span style="color: #0000ff">border</span>:<span style="color: #006080">1px solid #333;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  31:</span>     -moz-opacity:<span style="color: #006080">0.8;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  32:</span>     opacity:<span style="color: #006080">0.8;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  33:</span>     filter: Alpha(opacity=80);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  34:</span> }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  35:</span> <span style="color: #006080">&lt;</span>/<span style="color: #0000ff">style</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  36:</span> <span style="color: #006080">&lt;</span><span style="color: #0000ff">body</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  37:</span> <span style="color: #006080">&lt;</span><span style="color: #0000ff">div</span> id="main"<span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  38:</span>   <span style="color: #006080">&lt;</span><span style="color: #0000ff">div</span> id="<span style="color: #0000ff">content</span>"<span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  39:</span>     <span style="color: #006080">&lt;</span><span style="color: #0000ff">h1</span><span style="color: #006080">&gt;</span>CSS背景缩放<span style="color: #006080">&lt;</span>/<span style="color: #0000ff">h1</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  40:</span>     <span style="color: #006080">&lt;</span><span style="color: #0000ff">p</span><span style="color: #006080">&gt;</span>改变浏览器的窗口看看吧。<span style="color: #006080">&lt;</span>/<span style="color: #0000ff">p</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  41:</span>   <span style="color: #006080">&lt;</span>/<span style="color: #0000ff">div</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  42:</span> <span style="color: #006080">&lt;</span>/<span style="color: #0000ff">div</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  43:</span> <span style="color: #006080">&lt;</span><span style="color: #0000ff">img</span> id="bj" src="bj<span style="color: #cc6633">.jpg</span>" alt="<span style="color: #0000ff">background</span>"/<span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  44:</span> <span style="color: #006080">&lt;</span>/<span style="color: #0000ff">body</span><span style="color: #006080">&gt;</span></pre>
</div>
</div>
<p>这里真正的背景是id=“bj“这个，而body里面定义的loading.gif是为了在加载背景给访客提示的，因为css里面的会先被读取。</p>
<p>那为什么不能用IE6来浏览呢？因为万恶的IE6不支持position:fixed;解决的方法除了用那个<a href="http://www.g9net.com/2009/03/16/the-front-of-the-gospel-let-ie5-ie6-standards-in-line-with-ie7-ie8.html" target="_blank">IE7.js</a>，当然你也可以自己些js来让他支持，除此之外还有什么办法呢？答案是有的，比较复杂，需要用到table，你可以在这里看到这个<a class="button" href="http://www.g9net.com/demo/20090609/index2.html" target="_blank">演示</a>，代码如下：</p>
<div>
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   1:</span> <span style="color: #006080">&lt;</span><span style="color: #0000ff">style</span> type="text/css"<span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">   2:</span> * {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   3:</span>     <span style="color: #0000ff">margin</span>:0;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">   4:</span>     <span style="color: #0000ff">padding</span>:0;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   5:</span> }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">   6:</span> <span style="color: #0000ff">html</span>, <span style="color: #0000ff">body</span>, #bg, #bg <span style="color: #0000ff">table</span>, #bg <span style="color: #0000ff">td</span>, #main {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   7:</span>     <span style="color: #0000ff">width</span>:<span style="color: #006080">100%;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">   8:</span>     <span style="color: #0000ff">height</span>:<span style="color: #006080">100%;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">   9:</span>     <span style="color: #0000ff">overflow</span>:hidden</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  10:</span> }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  11:</span> <span style="color: #0000ff">body</span> {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  12:</span>     <span style="color: #0000ff">font</span>:14px<span style="color: #006080">/1.6 "Microsoft YaHei";</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  13:</span>     <span style="color: #0000ff">background</span>:url(loading<span style="color: #cc6633">.gif</span><span style="color: #006080">) #333 repeat;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  14:</span>     <span style="color: #0000ff">color</span>:<span style="color: #006080">#fff;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  15:</span> }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  16:</span> #bg <span style="color: #0000ff">div</span> {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  17:</span>     <span style="color: #0000ff">position</span>:<span style="color: #006080">absolute;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  18:</span>     <span style="color: #0000ff">width</span>:<span style="color: #006080">200%;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  19:</span>     <span style="color: #0000ff">height</span>:<span style="color: #006080">200%;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  20:</span>     <span style="color: #0000ff">top</span>:<span style="color: #006080">-50%;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  21:</span>     <span style="color: #0000ff">left</span>:-50%</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  22:</span> }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  23:</span> #bg <span style="color: #0000ff">td</span> {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  24:</span>     <span style="color: #0000ff">vertical-align</span>:<span style="color: #006080">middle;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  25:</span>     <span style="color: #0000ff">text-align</span>:<span style="color: #0000ff">center</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  26:</span> }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  27:</span> #bg <span style="color: #0000ff">img</span> {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  28:</span>     <span style="color: #0000ff">min-height</span>:<span style="color: #006080">50%;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  29:</span>     <span style="color: #0000ff">min-width</span>:<span style="color: #006080">50%;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  30:</span>     <span style="color: #0000ff">margin</span>:0 auto</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  31:</span> }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  32:</span> #main {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  33:</span>     <span style="color: #0000ff">position</span>:<span style="color: #006080">absolute;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  34:</span>     <span style="color: #0000ff">top</span>:0;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  35:</span>     <span style="color: #0000ff">left</span>:0;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  36:</span>     z-index:<span style="color: #006080">70;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  37:</span>     <span style="color: #0000ff">overflow</span>:<span style="color: #006080">auto;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  38:</span> }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  39:</span> #<span style="color: #0000ff">content</span> {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  40:</span>     <span style="color: #0000ff">width</span>:<span style="color: #006080">500px;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  41:</span>     <span style="color: #0000ff">margin</span>:<span style="color: #006080">30px auto;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  42:</span>     <span style="color: #0000ff">padding</span>:<span style="color: #006080">10px;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  43:</span>     <span style="color: #0000ff">background</span>:<span style="color: #006080">#000;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  44:</span>     <span style="color: #0000ff">height</span>:<span style="color: #006080">1000px;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  45:</span>     <span style="color: #0000ff">border</span>:<span style="color: #006080">1px solid #333;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  46:</span>     -moz-opacity:<span style="color: #006080">0.8;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  47:</span>     opacity:<span style="color: #006080">0.8;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  48:</span>     filter: Alpha(opacity=80);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  49:</span> }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  50:</span> <span style="color: #006080">&lt;</span>/<span style="color: #0000ff">style</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  51:</span> <span style="color: #006080">&lt;</span><span style="color: #0000ff">body</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  52:</span> <span style="color: #006080">&lt;</span><span style="color: #0000ff">div</span> id="main"<span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  53:</span>   <span style="color: #006080">&lt;</span><span style="color: #0000ff">div</span> id="<span style="color: #0000ff">content</span>"<span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  54:</span>     <span style="color: #006080">&lt;</span><span style="color: #0000ff">h1</span><span style="color: #006080">&gt;</span>CSS背景缩放<span style="color: #006080">&lt;</span>/<span style="color: #0000ff">h1</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  55:</span>     <span style="color: #006080">&lt;</span><span style="color: #0000ff">p</span><span style="color: #006080">&gt;</span>改变浏览器的窗口看看吧。<span style="color: #006080">&lt;</span>/<span style="color: #0000ff">p</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  56:</span>   <span style="color: #006080">&lt;</span>/<span style="color: #0000ff">div</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  57:</span> <span style="color: #006080">&lt;</span>/<span style="color: #0000ff">div</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  58:</span> <span style="color: #006080">&lt;</span><span style="color: #0000ff">div</span> id="bg"<span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  59:</span>   <span style="color: #006080">&lt;</span><span style="color: #0000ff">div</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  60:</span>     <span style="color: #006080">&lt;</span><span style="color: #0000ff">table</span> cellpadding="0" cellspacing="0"<span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  61:</span>       <span style="color: #006080">&lt;</span><span style="color: #0000ff">tr</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  62:</span>         <span style="color: #006080">&lt;</span><span style="color: #0000ff">td</span><span style="color: #006080">&gt;</span><span style="color: #006080">&lt;</span><span style="color: #0000ff">img</span> alt="<span style="color: #0000ff">background</span>" src="bj<span style="color: #cc6633">.jpg</span>" /<span style="color: #006080">&gt;</span><span style="color: #006080">&lt;</span>/<span style="color: #0000ff">td</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  63:</span>       <span style="color: #006080">&lt;</span>/<span style="color: #0000ff">tr</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  64:</span>     <span style="color: #006080">&lt;</span>/<span style="color: #0000ff">table</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  65:</span>   <span style="color: #006080">&lt;</span>/<span style="color: #0000ff">div</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060">  66:</span> <span style="color: #006080">&lt;</span>/<span style="color: #0000ff">div</span><span style="color: #006080">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: white;"><span style="color: #606060">  67:</span> <span style="color: #006080">&lt;</span>/<span style="color: #0000ff">body</span><span style="color: #006080">&gt;</span></pre>
</div>
</div>
<p>上面的这个代码参考<a href="http://www.ringvemedia.com/" target="_self">GOTOCHINA</a>的源码这个代码有个弊端，就是必须很严格的控制背景图片的比例否则在现在各大主流的分辨率下会有留空，经过的调试后推荐比例最好为宽：高=1：0.5。虽然这样可以解决留空问题，但是有时候图片会显示不全。所有各位要用什么方法就自己看了。还是推荐用第一种方法配合ie7.js来解决问题，当然你也可以完成不用管IE6～</p>
]]></content:encoded>
			<wfw:commentRss>http://wlsy.me/1669/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>利用javasript凸显当前页</title>
		<link>http://wlsy.me/1605/</link>
		<comments>http://wlsy.me/1605/#comments</comments>
		<pubDate>Wed, 03 Jun 2009 06:31:51 +0000</pubDate>
		<dc:creator>wlsy</dc:creator>
				<category><![CDATA[Web前端]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[技巧]]></category>

		<guid isPermaLink="false">http://www.g9net.com/?p=1605</guid>
		<description><![CDATA[这是一个简单而且实用的小技巧，至少我只这么觉得的:)。最早好像是是在DOM Scripting 里面看到的。好吧，废话不说了，直接上代码好好享用。
比如导航栏的XHTML代码是这样的：


&#60;ul id="nav"&#62;
   &#60;li&#62;&#60;a href="#"&#62;home&#60;/a&#62;&#60;/li&#62;
   &#60;li&#62;&#60;a href="#"&#62;about&#60;/a&#62;&#60;/li&#62;
   &#60;li&#62;&#60;a href="#"&#62;contact&#60;/a&#62;&#60;/li&#62;
&#60;/ul&#62;


那么如何才能凸显当前页面的呢？给当前页面的链接加个class，然后通过CSS来控制其显示样式，这样行为和表现分开了，以后更改也方便。
送上javascript代码：


function currentPage(){
    if (!document.getElementById("nav")) return false;/*进行必要的测试，避免没有id为nav时候出错*/
    var nav=document.getElementById("nav");
    var links=nav.getElementsByTagName("a");
    var currenturl=window.location.href;/*获取当前页面的地址*/
    for(i=1;i&#60;links.length;i++){
        var url=links[i].getAttribute("href");/*获取链接的href值*/
    [...]]]></description>
			<content:encoded><![CDATA[<p>这是一个简单而且实用的小技巧，至少我只这么觉得的:)。最早好像是是在DOM Scripting 里面看到的。好吧，废话不说了，直接上代码好好享用。</p>
<p>比如导航栏的XHTML代码是这样的：</p>
<div style="margin: 20px 0px 10px; padding: 4px; overflow: auto; background-color: #f4f4f4; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; cursor: text; max-height: 200px; width: 97.5%;">
<div style="border-style: none; padding: 0px; overflow: visible; background-color: #f4f4f4; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%; background-color: white;"><span style="color: #0000ff;">&lt;</span><span style="color: #800000;">ul</span> <span style="color: #ff0000;">id</span><span style="color: #0000ff;">="nav"</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; background-color: #f4f4f4; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%;">   <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">li</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">a</span> <span style="color: #ff0000;">href</span><span style="color: #0000ff;">="#"</span><span style="color: #0000ff;">&gt;</span>home<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">a</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">li</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%; background-color: white;">   <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">li</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">a</span> <span style="color: #ff0000;">href</span><span style="color: #0000ff;">="#"</span><span style="color: #0000ff;">&gt;</span>about<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">a</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">li</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; background-color: #f4f4f4; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%;">   <span style="color: #0000ff;">&lt;</span><span style="color: #800000;">li</span><span style="color: #0000ff;">&gt;&lt;</span><span style="color: #800000;">a</span> <span style="color: #ff0000;">href</span><span style="color: #0000ff;">="#"</span><span style="color: #0000ff;">&gt;</span>contact<span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">a</span><span style="color: #0000ff;">&gt;&lt;/</span><span style="color: #800000;">li</span><span style="color: #0000ff;">&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%; background-color: white;"><span style="color: #0000ff;">&lt;/</span><span style="color: #800000;">ul</span><span style="color: #0000ff;">&gt;</span></pre>
</div>
</div>
<p>那么如何才能凸显当前页面的呢？给当前页面的链接加个class，然后通过CSS来控制其显示样式，这样行为和表现分开了，以后更改也方便。<span id="more-1605"></span></p>
<p>送上javascript代码：</p>
<div>
<div style="border-style: none; padding: 0px; overflow: visible; background-color: #f4f4f4; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%; background-color: white;"><span style="color: #0000ff;">function</span> currentPage(){</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; background-color: #f4f4f4; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%;">    <span style="color: #0000ff;">if</span> (!document.getElementById(<span style="color: #006080;">"nav"</span>)) <span style="color: #0000ff;">return</span> <span style="color: #0000ff;">false</span>;<span style="color: #008000;">/*进行必要的测试，避免没有id为nav时候出错*/</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%; background-color: white;">    <span style="color: #0000ff;">var</span> nav=document.getElementById(<span style="color: #006080;">"nav"</span>);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; background-color: #f4f4f4; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%;">    <span style="color: #0000ff;">var</span> links=nav.getElementsByTagName(<span style="color: #006080;">"a"</span>);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%; background-color: white;">    <span style="color: #0000ff;">var</span> currenturl=window.location.href;<span style="color: #008000;">/*获取当前页面的地址*/</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; background-color: #f4f4f4; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%;">    <span style="color: #0000ff;">for</span>(i=1;i&lt;links.length;i++){</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%; background-color: white;">        <span style="color: #0000ff;">var</span> url=links[i].getAttribute(<span style="color: #006080;">"href"</span>);<span style="color: #008000;">/*获取链接的href值*/</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; background-color: #f4f4f4; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%;">        <span style="color: #0000ff;">if</span>(currenturl.indexOf(url)!=-1){<span style="color: #008000;">/*如果链接的href值在当前页面地址中有匹配*/</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%; background-color: white;">           links[i].className=<span style="color: #006080;">"current"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; background-color: #f4f4f4; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%;">        }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%; background-color: white;">    }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; background-color: #f4f4f4; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%;">}</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%; background-color: white;">window.onload=currentPage;<span style="color: #008000;">/*载入页面时加载*/</span></pre>
</div>
</div>
<p>好了，接下来你就可在css里面定义current的样式了，以后要修改也只要在css里面修改</p>
<p>友情提示：如果各位想要在wordpress里面凸显当前页，wordpress有个自带的函数如下：</p>
<div>
<div style="border-style: none; padding: 0px; overflow: visible; background-color: #f4f4f4; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%; background-color: white;">&lt;ul&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; background-color: #f4f4f4; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%;">&lt;li &lt;?php <span style="color: #0000ff;">if</span> (is_home()){echo <span style="color: #006080;">'class="current_page_item"'</span>;}?&gt;&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%; background-color: white;">&lt;a href=<span style="color: #006080;">"&lt;?php bloginfo('url'); ?&gt;/"</span>&gt;首页&lt;/a&gt;&lt;/li&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; background-color: #f4f4f4; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%;">&lt;?php wp_list_pages(<span style="color: #006080;">'&amp;title_li='</span>); ?&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-family: Consolas,'Courier New',Courier,Monospace; font-size: 8pt; line-height: 12pt; color: black; width: 100%; background-color: white;">&lt;/ul&gt;</pre>
</div>
</div>
<p>你可以在css定义.current_page_item的样式就可以了</p>
]]></content:encoded>
			<wfw:commentRss>http://wlsy.me/1605/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>对“优化网站速度”的几点补充</title>
		<link>http://wlsy.me/1591/</link>
		<comments>http://wlsy.me/1591/#comments</comments>
		<pubDate>Sat, 23 May 2009 15:22:53 +0000</pubDate>
		<dc:creator>wlsy</dc:creator>
				<category><![CDATA[Web前端]]></category>
		<category><![CDATA[优化]]></category>
		<category><![CDATA[速度]]></category>

		<guid isPermaLink="false">http://www.g9net.com/2009/05/23/to-optimize-site-speed-of-a-few-additional.html</guid>
		<description><![CDATA[如果你对标题感到了深深的疑惑，来这里（优化网站速度的几种方式）看看先:-)
首先要补充解释下一个叫“性能黄金法则”的东东：
只有10%～20%的最终用户响应时间花在了下载HTML文档上。其余的80%～90%时间花在了下载页面中的所有组件上。
这里说的组件就是网站中的图片，CSS和脚本等等。所有着重优化的地方就在这些组件上面了。

第8点：把JavaScript和CSS放到外部
把JavaScript和CSS放到外部的优势我就不用讲了，不过我确看到在诸如像腾讯，淘宝，网易等这样的访问量巨大的网站中的首页使用了内联，并非把脚本和样式外置，而令我疑惑不解的是这种现象只在首页上出现，在查找和翻页相关资料后我找到了答案。
在这些网站中，首页的布局和内页有着很大的区别，也就是首页上的组件重用率很低，而且也有很大一部分的访客只访问了首页。首页的访问量是巨大的，很多企业都希望能有更快的访问速度，使用内联的会比外置来的快些，毕竟减少了HTTP请求次数，当然这也要考虑到缓存的影响，拥有缓存的访客和空缓存的访客（也包括喜欢关闭浏览器清楚缓存的人）这个也比较难以量化。
到底是用外置还是内联这个也没有明确的答案，还有挺多门户网站使用了外置，所有这个主要还是要看企业的决策，但是对于访问量不是很大很大的网站我还建议使用外置。
第7点：避免使用CSS表达式（Expression）
现在大部分的人都会说使用使用CSS表达式会影响性能问题，不过有个和简单的方法解决了这个性能问题，在这里查看（需要*代*理，可恶的文×字@狱），简单的引用：
因为我发现，第一个缺点是可以解决的。方法就是，在 expression 语句体里面，将触发该 expression 的 css 属性重置。比如 body{ zoom: expression(function(ele){ele.style.zoom = "1"; alert("xx");}(this));}，执行这段 CSS 会发现，alert 只跑了一次。
没有了性能问题，那么就能解决了很多IE6的bug，但是我还是建议不要用，首页微软已经在IE8取消了对CSS表示的支持，这也表明了微软也打算放弃这个了，另外如果要修复IE6的一些BUG或增加功能等，推荐使用IE7.js。在早些文章你能找到。
第10点：压缩和削减JavaScript和CSS
目前压缩JavaScript主要有混淆和精简。混淆能比精简多压缩些，不过这样得不偿失，特别是在通过了Gzip压缩后效果都是差不多。
在早些时候我也有过这样的疑问，如果启用了gzip压缩，是否要对脚本进行精简。这里简单的说下，如果你启用了gzip压缩后在对脚本进行精简的话还是能减小大小。
最后跟新下：推荐使用YAHOO的Yslow
]]></description>
			<content:encoded><![CDATA[<p>如果你对标题感到了深深的疑惑，来这里（<a href="http://www.g9net.com/2009/04/05/optimize-the-speed-of-the-web-in-several-ways.html">优化网站速度的几种方式</a>）看看先:-)</p>
<p>首先要补充解释下一个叫“性能黄金法则”的东东：</p>
<blockquote><p>只有10%～20%的最终用户响应时间花在了下载HTML文档上。其余的80%～90%时间花在了下载页面中的所有组件上。</p></blockquote>
<p>这里说的组件就是网站中的图片，CSS和脚本等等。所有着重优化的地方就在这些组件上面了。</p>
<p><span id="more-1591"></span></p>
<p><strong>第8点：把JavaScript和CSS放到外部</strong></p>
<p>把JavaScript和CSS放到外部的优势我就不用讲了，不过我确看到在诸如像<a href="http://www.qq.com/" target="_blank">腾讯</a>，<a href="http://www.taobao.com" target="_blank">淘宝</a>，<a href="http://www.163.com/" target="_blank">网易</a>等这样的访问量巨大的网站中的首页使用了内联，并非把脚本和样式外置，而令我疑惑不解的是这种现象只在首页上出现，在查找和翻页相关资料后我找到了答案。</p>
<p>在这些网站中，首页的布局和内页有着很大的区别，也就是首页上的组件重用率很低，而且也有很大一部分的访客只访问了首页。首页的访问量是巨大的，很多企业都希望能有更快的访问速度，使用内联的会比外置来的快些，毕竟减少了HTTP请求次数，当然这也要考虑到缓存的影响，拥有缓存的访客和空缓存的访客（也包括喜欢关闭浏览器清楚缓存的人）这个也比较难以量化。</p>
<p>到底是用外置还是内联这个也没有明确的答案，还有挺多门户网站使用了外置，所有这个主要还是要看企业的决策，但是对于访问量不是很大很大的网站我还建议使用外置。</p>
<p><strong>第7点：避免使用CSS表达式（Expression）</strong></p>
<p>现在大部分的人都会说使用使用CSS表达式会影响性能问题，不过有个和简单的方法解决了这个性能问题，在<a href="http://old9.blogsome.com/2008/10/26/css-expression-reloaded/" target="_blank">这里</a>查看（需要*代*理，可恶的文×字@狱），简单的引用：</p>
<blockquote><p>因为我发现，第一个缺点是可以解决的。方法就是，在 expression 语句体里面，将触发该 expression 的 css 属性重置。比如 <code>body{ zoom: expression(function(ele){ele.style.zoom = "1"; alert("xx");}(this));}</code>，执行这段 CSS 会发现，alert 只跑了一次。</p></blockquote>
<p>没有了性能问题，那么就能解决了很多IE6的bug，但是我还是建议不要用，首页微软已经在IE8取消了对CSS表示的支持，这也表明了微软也打算放弃这个了，另外如果要修复IE6的一些BUG或增加功能等，推荐使用IE7.js。在<a href="http://www.g9net.com/2009/03/16/the-front-of-the-gospel-let-ie5-ie6-standards-in-line-with-ie7-ie8.html" target="_blank">早些文章</a>你能找到。</p>
<p><strong>第10点：压缩和削减JavaScript和CSS</strong></p>
<p>目前压缩JavaScript主要有混淆和精简。混淆能比精简多压缩些，不过这样得不偿失，特别是在通过了Gzip压缩后效果都是差不多。</p>
<p>在早些时候我也有过这样的疑问，如果启用了gzip压缩，是否要对脚本进行精简。这里简单的说下，如果你启用了gzip压缩后在对脚本进行精简的话还是能减小大小。</p>
<p>最后跟新下：推荐使用YAHOO的Yslow</p>
]]></content:encoded>
			<wfw:commentRss>http://wlsy.me/1591/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>从例子中看栅格系统设计</title>
		<link>http://wlsy.me/1585/</link>
		<comments>http://wlsy.me/1585/#comments</comments>
		<pubDate>Sat, 16 May 2009 12:39:30 +0000</pubDate>
		<dc:creator>wlsy</dc:creator>
				<category><![CDATA[Web前端]]></category>
		<category><![CDATA[960gs]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[栅格]]></category>

		<guid isPermaLink="false">http://www.g9net.com/2009/05/16/seen-from-the-example-of-system-design-grid.html</guid>
		<description><![CDATA[其实叫栅格系统还是网格系统（Grid System）也没有明确的说明，早些看到一些关于栅格设计的文章，不过理论性偏强，不太容易理解，自己很早就想写篇相关文章，不过前几天去了灾区，所以就拖到现在了。我还喜欢从实际的例子中来了解，如果你对栅格有了初步了解可以直接跳至下面，那里有延续阅读，链接到众多业界人对栅格系统设计的理解。
 
&#160;
好吧，折磨开始。栅格设计有嘛好的？维基百科中给栅格设计的定义特征和原则为：
栅格设计的特点是重视比例、秩序、连续感和现代感。 以及对存在于版面上的元素进行规划、组合、保持平衡或者打破平衡，以便让信息可以更快速、更便捷、更系统和更有效率的读取；另外最重要的一点是，负空间的规划（即：留白）也是栅格系统设计当中非常重要的部分。

我个人认为栅格设计主要有这几个特征：
既然是以“格子”来设计，那么就要有一定的规范和比例性，也就是能够快速的对页面进行重组而不失比例。比如你有好几个方块，你向别人介绍的时候说的是这个宽有5个方块的宽而不会在精确的说我的宽是540px，这在团队合作的时候优势的很明显的，界面设计师不必要想前端工程师说具体的数值，他们在这个栅格系统下就好比如有共同语言，而且在保持页面的规范也很有帮助，当然栅格设计的优势不仅仅这些。
不过我不认为栅格设计都适用与所有网站，对于诸如没有重复设计的个人网站博客或者其他网站来说根本没必要把简单的问题复杂化，可以很直观的设计比如主体宽多少，边栏宽多少，但是对于大型门户网站来说应用栅格设计效率的提升是明显的。
好吧，说的我都想睡觉了，看例子。
&#160; 

 
在第一张图中我们看到这个网站的界面设计并没有什么特别的，普通的三栏设计。在第二张图中很清晰的看到的，网站三栏设计都是很规则的按照比例来，也就是它具有很明显的栅格设计特征。横向有12栏，每个栏宽度60px，栏之间的间距（可以叫槽Gutter）为20px，实际上是每个栏的左右空白边为10px。
这样算下来Full Width=12×（60+10+10）=960px，而实际的Content Width:为940px，因为扣掉左右两边各10的空白边。为了能够更直白的理解可以看这张图： 
如果曾经有稍微研究过的童鞋应该会发现这个貌似应用了960GS。是的确实是这样的。960GS是我比较喜欢的一个栅格系统设计框架，主要是代码清晰易懂，而且在第一行和最后一行不需要进行特别的处理。960GS官方给出的演示有12栏和16栏，栏数越多也就是代表着在同样的宽度下栏宽越小，灵活性也就越大，能够组合数也就越多。
好的现在来看看960GS这个栅格系统框架的主要代码：


   1: &#60;div class=&#34;container_12&#34;&#62;
   2:     &#60;div class=&#34;grid_8&#34;&#62;
   3:             ...
   4:     &#60;/div&#62;
   5:     &#60;div [...]]]></description>
			<content:encoded><![CDATA[<p>其实叫栅格系统还是网格系统（Grid System）也没有明确的说明，早些看到一些关于栅格设计的文章，不过理论性偏强，不太容易理解，自己很早就想写篇相关文章，不过前几天<a href="http://www.g9net.com/2009/05/14/the-first-anniversary-of-earthquake-in-wenchuan-the-disaster-area-for-three-days-of-my-trip.html" target="_blank">去了灾区</a>，所以就拖到现在了。我还喜欢从实际的例子中来了解，如果你对栅格有了初步了解可以直接跳至下面，那里有延续阅读，链接到众多业界人对栅格系统设计的理解。</p>
<p> <span id="more-1585"></span>
<p>&#160;</p>
<p>好吧，折磨开始。栅格设计有嘛好的？维基百科中给栅格设计的定义特征和原则为：</p>
<blockquote><p>栅格设计的特点是重视比例、秩序、连续感和现代感。 以及对存在于版面上的元素进行规划、组合、保持平衡或者打破平衡，以便让信息可以更快速、更便捷、更系统和更有效率的读取；另外最重要的一点是，负空间的规划（即：留白）也是栅格系统设计当中非常重要的部分。</p>
</blockquote>
<p>我<strong>个人</strong>认为栅格设计主要有这几个特征：</p>
<p>既然是以“格子”来设计，那么就要有一定的规范和比例性，也就是能够快速的对页面进行重组而不失比例。比如你有好几个方块，你向别人介绍的时候说的是这个宽有5个方块的宽而不会在精确的说我的宽是540px，这在团队合作的时候优势的很明显的，界面设计师不必要想前端工程师说具体的数值，他们在这个栅格系统下就好比如有共同语言，而且在保持页面的规范也很有帮助，当然栅格设计的优势不仅仅这些。</p>
<p>不过我不认为栅格设计都适用与所有网站，对于诸如没有重复设计的个人网站博客或者其他网站来说根本没必要把简单的问题复杂化，可以很直观的设计比如主体宽多少，边栏宽多少，但是对于大型门户网站来说应用栅格设计效率的提升是明显的。</p>
<p>好吧，说的我都想睡觉了，看例子。</p>
<p>&#160;<img src="http://lh3.ggpht.com/_cZCuU2AQABo/Sg53APZ8I_I/AAAAAAAACXI/RaxTvuBuNNc/sagsdfasDffsdf.png?imgmax=800" /> </p>
</p>
<p><img src="http://lh3.ggpht.com/_cZCuU2AQABo/Sg53M5GhhvI/AAAAAAAACXM/y9PR-X-jc8k/sadgasdfasdfggg.png?imgmax=800" /> </p>
<p>在第一张图中我们看到这个网站的界面设计并没有什么特别的，普通的三栏设计。在第二张图中很清晰的看到的，网站三栏设计都是很规则的按照比例来，也就是它具有很明显的栅格设计特征。横向有12栏，每个栏宽度60px，栏之间的间距（可以叫槽Gutter）为20px，实际上是每个栏的左右空白边为10px。</p>
<p>这样算下来Full Width=12×（60+10+10）=960px，而实际的Content Width:为940px，因为扣掉左右两边各10的空白边。为了能够更直白的理解可以看这张图：<img src="http://lh6.ggpht.com/_cZCuU2AQABo/Sg58HB3fQzI/AAAAAAAACXQ/mkqky_ADTGY/sadgsdaff.png?imgmax=800" width="600" height="38" /> </p>
<p>如果曾经有稍微研究过的童鞋应该会发现这个貌似应用了960GS。是的确实是这样的。960GS是我比较喜欢的一个栅格系统设计框架，主要是代码清晰易懂，而且在第一行和最后一行不需要进行特别的处理。960GS官方给出的演示有12栏和16栏，栏数越多也就是代表着在同样的宽度下栏宽越小，灵活性也就越大，能够组合数也就越多。</p>
<p>好的现在来看看960GS这个栅格系统框架的主要代码：</p>
<div style="border-bottom: gray 1px solid; border-left: gray 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 98.93%; padding-right: 4px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; height: 173px; max-height: 200px; font-size: 8pt; overflow: auto; border-top: gray 1px solid; cursor: text; border-right: gray 1px solid; padding-top: 4px">
<div style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px">
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   1:</span> <span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span> <span style="color: #ff0000">class</span><span style="color: #0000ff">=&quot;container_12&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   2:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span> <span style="color: #ff0000">class</span><span style="color: #0000ff">=&quot;grid_8&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   3:</span>             ...</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   4:</span>     <span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   5:</span>     <span style="color: #0000ff">&lt;</span><span style="color: #800000">div</span> <span style="color: #ff0000">class</span><span style="color: #0000ff">=&quot;grid_4&quot;</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   6:</span>             ...</pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: white; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   7:</span>     <span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span></pre>
<pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: consolas, &#39;Courier New&#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px"><span style="color: #606060">   8:</span> <span style="color: #0000ff">&lt;/</span><span style="color: #800000">div</span><span style="color: #0000ff">&gt;</span></pre>
</p></div>
</div>
<p>container_12代表为主体为12个栏，grid_n这个代表有几个栏宽的宽度。从上面的代码可以看出这个是个两栏的布局，左边有8个栏（注意这些栏的宽度是包含空白边的），右边有4个栏。根据上面知道在12栏中每个栏的实际宽度为：80px=60px+10px+10px，这样我们就很容易的算出演示代码中左边的宽度为640px，右边的宽度为320px。</p>
<p>我想有人会问了不就是两个栏的布局吗，何必弄的这么复杂呢？在上面我就说了，对于小型网站确实没必要这样，但是对于大型网站的前端工作者来说可以大大提升他们的效率，在团队合作中亦是这样。在代码中我们看到在传递宽度的大小的时候已经从精确多少px转变成了是几个栏的问题，而且在以后想改变某个布局的宽度的时候也很简单，比如左边可以变为grid_9,右边为grid_3。如果说当时css的出现并取代table布局大大的方便的前端工作者，那么栅格的出现也就是更进一步的方便了前端工作者。</p>
<p>当然960GS不止这么简单，想进一步了解的话可以访问官方网站<a title="http://960.gs/" href="http://960.gs/">http://960.gs/</a></p>
<p>好了，我们现在返回去理解栅格系统设计。</p>
<p>1：在上面那个例子中的第二张图我们可以通俗的讲网站的设计是基于某个宽度的“格子”来设计。</p>
<p>2：在基于这种“格子”来设计，它看起来很规范和易读的。</p>
<p>3：在基于这种“格子”来设计，它看起来是相当的灵活，在想改变布局的时候也是很简单的。</p>
<p>从CSS框架上理解栅格是个好方法，另外目前大部分的栅格系统布局都是定宽的，如果需要流体布局可以参考960GS的衍生版本<a href="http://designinfluences.com/fluid960gs/">Fluid 960 Grid System</a>。类似960GS这样的框架还有：<a href="http://www.blueprintcss.org/" target="_blank">blueprintcss</a>，<a href="http://developer.yahoo.com/yui/grids/" target="_blank">YUI Grids CSS</a>，等等，而在进行画图是如果需要配合栅格来画图可以<a href="http://www.3point7designs.com/blog/2007/11/07/960px-photoshop-grid-template/" target="_blank">在这里</a>下载到psd分层模板。</p>
<p>当然这篇文章只是初步的介绍栅格系统设计，如果有兴趣可以继续阅读我整理的资料：</p>
<p>栅格：1）<a href="http://www.yeeyan.com/articles/view/snlchina/9833">从混乱到秩序</a>2）<a href="http://www.yeeyan.com/articles/view/snlchina/10980">一以贯之</a>3）<a href="http://www.yeeyan.com/articles/view/snlchina/10987">灵活应变</a>（这个系列文章能帮你初步了解栅格，并劝告你在设计栅格系统时应该让栅格去适应元素的混合，而不是要强制元素去适应栅格）</p>
<p><a href="http://ued.taobao.com/blog/2008/09/17/grid_systems/" target="_blank">网页的栅格系统设计</a> （这一篇更加深入的讲解栅格系统设计）</p>
<p>网页栅格系统研究：<a href="http://ued.taobao.com/blog/2008/10/22/grid_system_research_1/" target="_blank">960的秘密</a>， <a href="http://ued.taobao.com/blog/2008/10/22/" target="_blank">蛋糕的切法</a> ，<a href="http://ued.taobao.com/blog/2008/10/28/" target="_blank">粒度问题</a>，<a href="http://ued.taobao.com/blog/2008/11/05/grid_system_research_/ " target="_blank">技术实现</a> （这是淘宝玉伯对栅格的研究）</p>
<p>如果英文比较好的可以看这些：</p>
<p>Five simple steps to designing grid systems：<a href="http://www.markboulton.co.uk/journal/comments/five_simple_steps_to_designing_grid_systems_part_1/">Subdividing ratios</a>，<a href="http://www.markboulton.co.uk/journal/comments/five_simple_steps_to_designing_grid_systems_part_21/">Ratios and complex grid systems</a>，<a href="http://www.markboulton.co.uk/journal/comments/five_simple_steps_to_designing_grid_systems_part_3/">Grid systems for web design: Part 1</a>，<a href="http://www.markboulton.co.uk/journal/comments/five_simple_steps_to_designing_grid_systems_part_4/">Part 2 Fixed</a>，<a href="http://www.markboulton.co.uk/journal/comments/five_simple_steps_to_designing_grid_systems_part_5/">Part 3 Fluid</a>。</p>
<p>或者其实你完全可以自己在Google输入栅格或grid system，看看国内外的人们对栅格的理解。</p>
]]></content:encoded>
			<wfw:commentRss>http://wlsy.me/1585/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>浮动列表项在IE8以下版本文字换行</title>
		<link>http://wlsy.me/1504/</link>
		<comments>http://wlsy.me/1504/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 02:32:52 +0000</pubDate>
		<dc:creator>wlsy</dc:creator>
				<category><![CDATA[Web前端]]></category>
		<category><![CDATA[换行]]></category>
		<category><![CDATA[浮动]]></category>

		<guid isPermaLink="false">http://g9net.com/2009/04/29/floating-list-items-in-the-following-version-of-ie8-text-wrapping-2.html</guid>
		<description><![CDATA[问题简述就如标题那样，这也是我最近碰到的一种情况，不过我估计很多人比较难理解了，上图咯:


你可以在这里看到源码，解决方法：定义white-space属性。

语法：
white-space : normal &#124; pre &#124; nowrap 
参数：
normal : 默认处理方式
pre : 用等宽字体显示预先格式化的文本。不合并字间的空白距离和进行两端对齐。参阅pre对象
nowrap : 强制在同一行内显示所有文本，直到文本结束或者遭遇br对象。参阅td，div等对象的nowrap属性（特性）
案例中的解决方法是采用white-space:nowrap的方法，即只要在列表项相应的CSS加入white-space:nowrap即可。
]]></description>
			<content:encoded><![CDATA[<p>问题简述就如标题那样，这也是我最近碰到的一种情况，不过我估计很多人比较难理解了，上图咯:</p>
<p><span id="more-1504"></span></p>
<p><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="iefloatlist" src="http://lh4.ggpht.com/_cZCuU2AQABo/S7mg8uKQJpI/AAAAAAAADVk/k65KPhrkTNo/iefloatlist-thumb.jpg" border="0" alt="iefloatlist" width="206" height="399" align="left" /><img style="border-right-width: 0px; margin: 0px 0px 0px 20px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="otherfloatlist" src="http://lh5.ggpht.com/_cZCuU2AQABo/S7mhVKOrqnI/AAAAAAAADWA/w6oiEmUwpGI/otherfloatlist-thumb.jpg" border="0" alt="otherfloatlist" width="209" height="434" /></p>
<p>你可以在<a href="http://g9net.com/demo/floatlist.html" target="_blank">这里</a>看到源码，解决方法：<strong>定义white-space属性。</strong></p>
<p><strong></strong></p>
<blockquote><p>语法：<br />
<strong>white-space : </strong><strong>normal </strong>|<strong> pre </strong>|<strong> nowrap </strong><br />
参数：<br />
<strong>normal : </strong>默认处理方式<br />
<strong>pre : </strong>用等宽字体显示预先格式化的文本。不合并字间的空白距离和进行两端对齐。参阅pre对象<br />
<strong>nowrap : </strong>强制在同一行内显示所有文本，直到文本结束或者遭遇br对象。参阅td，div等对象的nowrap属性（特性）</p></blockquote>
<p>案例中的解决方法是采用<strong>white-space:nowrap</strong>的方法，即只要在列表项相应的CSS加入<strong>white-space:nowrap</strong>即可。</p>
]]></content:encoded>
			<wfw:commentRss>http://wlsy.me/1504/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>说说图像替换</title>
		<link>http://wlsy.me/1488/</link>
		<comments>http://wlsy.me/1488/#comments</comments>
		<pubDate>Mon, 13 Apr 2009 17:01:47 +0000</pubDate>
		<dc:creator>wlsy</dc:creator>
				<category><![CDATA[Web前端]]></category>
		<category><![CDATA[图像]]></category>
		<category><![CDATA[替换]]></category>

		<guid isPermaLink="false">http://www.g9net.com/2009/04/14/talk-about-image-replacement.html</guid>
		<description><![CDATA[早些时候在看CSS Mastery是也看到这个东西，另外之前也跟人聊过这个，现在稍微总结下。
什么是图像替换？简单的说我们可以把文本照常添加到文档中，然后通过CSS来用特定的图片来替换文本，这样做的好处是搜索引擎仍然可以搜索到文本，而禁用到CSS文本也可以看到，现在应用最广泛的莫过于网站的Logo了。

1：先来说说我之前最常用的方法：XHTML代码：


&#60;h1&#62;虫下米&#60;/h1&#62;


CSS代码：


   1: h1{text-indent:-5000px;background:(a.jpg) no-repeat; width:50px; height:50px}


这种方法被称做Phark，这种方法有个情况是，加入浏览者关闭了图像功能而且有启用CSS那么他就不会看到任何东西，当然这种情况很少，不过要考虑的还是要尽量考虑，而且我自己感觉流量器在渲染的时候可能会有稍稍的性能问题，没验证过，无从考证，囧兴:::
2：现在我在用的方法是有人提到过的，灵感来源于Google.cn。比如你打开这个：搜索虫下米 ，来了重点在左上角的logo，它用的方法我用图简单概述下： 这个还要上代码吗？图都画出来了，本人实在懒，要看代码自己去Google上看。囧。
3：还有中不太好的，大家就当了解下。代码：


   1: &#60;h1&#62;&#60;span&#62;虫下米&#60;/span&#62;&#60;/h1&#62;


CSS:


   1: h1{background:url(*.jpg) no-repeat;width:*;height:*;}
   2: span{display:none}


其实这种方法思想也不错，就是考虑的稍微欠缺点。比如很多阅读器会忽略display：none/hidden；所以会照常比较大的访问性问题。
总结：其实图像替换的方法还有很多，各有优缺点，比如IFR方法，各位就自己看着办，我想挺常用第二种就是稍稍复杂点，不过第一种其实也不错，而且也比较方便。
]]></description>
			<content:encoded><![CDATA[<p>早些时候在看CSS Mastery是也看到这个东西，另外之前也跟人聊过这个，现在稍微总结下。</p>
<p>什么是图像替换？简单的说我们可以把文本照常添加到文档中，然后通过CSS来用特定的图片来替换文本，这样做的好处是搜索引擎仍然可以搜索到文本，而禁用到CSS文本也可以看到，现在应用最广泛的莫过于网站的Logo了。</p>
<p><span id="more-1488"></span></p>
<p>1：先来说说我之前最常用的方法：XHTML代码：</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; line-height: 12pt; background-color: #f4f4f4; width: 97.5%; font-family: consolas,'Courier New',courier,monospace; max-height: 200px; font-size: 8pt; cursor: text;">
<div style="border-style: none; padding: 0px; overflow: visible; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: consolas,'Courier New',courier,monospace; color: black; font-size: 8pt;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; line-height: 12pt; background-color: white; width: 100%; font-family: consolas,'Courier New',courier,monospace; color: black; font-size: 8pt;"><span style="color: #0000ff">&lt;</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;</span>虫下米<span style="color: #0000ff">&lt;/</span><span style="color: #800000">h1</span><span style="color: #0000ff">&gt;</span></pre>
</div>
</div>
<p>CSS代码：</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; line-height: 12pt; background-color: #f4f4f4; width: 97.5%; font-family: consolas,'Courier New',courier,monospace; max-height: 200px; font-size: 8pt; cursor: text;">
<div style="border-style: none; padding: 0px; overflow: visible; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: consolas,'Courier New',courier,monospace; color: black; font-size: 8pt;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; line-height: 12pt; background-color: white; width: 100%; font-family: consolas,'Courier New',courier,monospace; color: black; font-size: 8pt;"><span style="color: #606060">   1:</span> <span style="color: #0000ff">h1</span>{<span style="color: #0000ff">text-indent</span>:<span style="color: #006080">-5000px;</span><span style="color: #0000ff">background</span>:(a<span style="color: #cc6633">.jpg</span>) no<span style="color: #006080">-repeat;</span> <span style="color: #0000ff">width</span>:<span style="color: #006080">50px;</span> <span style="color: #0000ff">height</span>:50px}</pre>
</div>
</div>
<p>这种方法被称做Phark，这种方法有个情况是，加入浏览者关闭了图像功能而且有启用CSS那么他就不会看到任何东西，当然这种情况很少，不过要考虑的还是要尽量考虑，而且我自己感觉流量器在渲染的时候可能会有稍稍的性能问题，没验证过，无从考证，囧兴:::</p>
<p>2：现在我在用的方法是有人提到过的，灵感来源于Google.cn。比如你打开这个：搜索<a href="http://www.google.cn/search?hl=zh-CN&amp;q=%E8%99%AB%E4%B8%8B%E7%B1%B3&amp;btnG=Google+%E6%90%9C%E7%B4%A2&amp;meta=&amp;aq=f&amp;oq=" target="_blank">虫下米</a> ，来了重点在左上角的logo，它用的方法我用图简单概述下：<a href="http://lh4.ggpht.com/_cZCuU2AQABo/S7mhuR1NP3I/AAAAAAAADWE/CWDJxUy2WsQ/replay.jpg"><img style="border-bottom: 0px; border-left: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px" title="replay" src="http://www.g9net.com/wp-content/uploads/2009/04/replay-thumb.gif" border="0" alt="replay" width="355" height="150" /></a> 这个还要上代码吗？图都画出来了，本人实在懒，要看代码自己去Google上看。囧。</p>
<p>3：还有中不太好的，大家就当了解下。代码：</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; line-height: 12pt; background-color: #f4f4f4; width: 97.5%; font-family: consolas,'Courier New',courier,monospace; max-height: 200px; font-size: 8pt; cursor: text;">
<div style="border-style: none; padding: 0px; overflow: visible; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: consolas,'Courier New',courier,monospace; color: black; font-size: 8pt;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; line-height: 12pt; background-color: white; width: 100%; font-family: consolas,'Courier New',courier,monospace; color: black; font-size: 8pt;"><span style="color: #606060">   1:</span> &lt;h1&gt;&lt;span&gt;虫下米&lt;/span&gt;&lt;/h1&gt;</pre>
</div>
</div>
<p>CSS:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; line-height: 12pt; background-color: #f4f4f4; width: 97.5%; font-family: consolas,'Courier New',courier,monospace; max-height: 200px; font-size: 8pt; cursor: text;">
<div style="border-style: none; padding: 0px; overflow: visible; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: consolas,'Courier New',courier,monospace; color: black; font-size: 8pt;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; line-height: 12pt; background-color: white; width: 100%; font-family: consolas,'Courier New',courier,monospace; color: black; font-size: 8pt;"><span style="color: #606060">   1:</span> <span style="color: #0000ff">h1</span>{<span style="color: #0000ff">background</span>:url(*<span style="color: #cc6633">.jpg</span>) no<span style="color: #006080">-repeat;</span><span style="color: #0000ff">width</span>:*;<span style="color: #0000ff">height</span>:*;}</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; line-height: 12pt; background-color: #f4f4f4; width: 100%; font-family: consolas,'Courier New',courier,monospace; color: black; font-size: 8pt;"><span style="color: #606060">   2:</span> <span style="color: #0000ff">span</span>{<span style="color: #0000ff">display</span>:none}</pre>
</div>
</div>
<p>其实这种方法思想也不错，就是考虑的稍微欠缺点。比如很多阅读器会忽略display：none/hidden；所以会照常比较大的访问性问题。</p>
<p>总结：其实图像替换的方法还有很多，各有优缺点，比如<a href="http://www.shauninman.com/plete/2004/04/ifr-revisited-and-revised" target="_blank">IFR</a>方法，各位就自己看着办，我想挺常用第二种就是稍稍复杂点，不过第一种其实也不错，而且也比较方便。</p>
]]></content:encoded>
			<wfw:commentRss>http://wlsy.me/1488/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>优化网站速度的几种方式</title>
		<link>http://wlsy.me/1479/</link>
		<comments>http://wlsy.me/1479/#comments</comments>
		<pubDate>Sun, 05 Apr 2009 14:26:40 +0000</pubDate>
		<dc:creator>wlsy</dc:creator>
				<category><![CDATA[Web前端]]></category>
		<category><![CDATA[优化]]></category>

		<guid isPermaLink="false">http://www.g9net.com/2009/04/05/optimize-the-speed-of-the-web-in-several-ways.html</guid>
		<description><![CDATA[在业界有篇很经典的文章，来源于yahoo的开发者社区，它讲述的是如果优化自己的网站的速度，包括从服务器端到客户端。这篇文章影响了很多人，原文可以参照这里：Best Practices for Speeding Up Your Web Site
而本文只是用一种比较通俗的语言来阐述那几种方式，以及如何来优化自己的博客或网站。

1：减少自己网站的http请求次数
在现在的网站已经不是简单的文字，这其中还包括更多更为丰富的元素。这样理所当然的增加了服务端与客户端之间的请求数，现在要做的就是尽可能的减少这些响应时间，这是网站优化的第一步，在原文提到：Tenni Theurer在他的博客中所说，HTTP请求在无缓存情况下占去了40%到60%的响应时间，如何优化呢？
合并文件（Combined files）。比如在你的网站很多不同的css文件或script文件，我们尽可能把它们合并到一个文件，合并css一般不会出现什么错误，合并script就要注意了。
图片拼合技术（CSS Sprites）。这个在我早些文章有提到，在这里你可以了解到详情。
图片地图（Image maps）。比如我们要做一个比较华丽的导航栏，这其中也包括每个栏目的字体，然后通过map和area元素来确定坐标来进行事件处理，这样就不想切图后很有小图片那样。确定图片的坐标可能会比较繁琐且容易出错，不具有可读性，所以尽量还是不要实用这个。
尽量少使用内联图像（Inline images）。即一般我们在(X)THML会使用img的src来插入图片。这样做不太好，尽量把它放在样式表（stylesheets）里面写。
2：使用CDN（Content Delivery Network）内容分布网络
这个可能退普通的个人用户来说有些可望不可即了。因为现在的每个地域的网络状态都不一样，比如网站的服务器在成都，那么每个地区的访问的速度都会不同，而CDN的作用在于由一系列分散到各个不同地理位置上的Web服务器组成的，它提高了网站内容的传输速度。用于向用户传输内容的服务器主要是根据和用户在网络上的靠近程度来指定的。目前国内这种服务都比较贵，而且听说对动态网站效果不是太好，我没用过无从考证。不过向是新浪，搜狐，腾讯这些大型门户网站都用到这种服务。
3：在http头部加一个Expires或Cache-Control
浏览器（和代理）使用缓存来减少HTTP请求的大小和次数以加快页面访问速度。Web服务器在HTTP响应中使用Expires文件头来告诉客户端内容需要缓存多长时间。下面这个例子是一个较长时间的Expires文件头，它告诉浏览器这个响应直到2010年4月15日才过期。
Expires: Thu, 15 Apr 2010 20:00:00 GMT
如果你使用的是Apache服务器，可以使用ExpiresDefault来设定相对当前日期的过期时间。下面这个例子是使用ExpiresDefault来设定请求时间后10年过期的文件头：
ExpiresDefault &#8220;access plus 10 years&#8221;
要切记，如果使用了Expires文件头，当页面内容改变时就必须改变内容的文件名。依Yahoo!来说我们经常使用这样的步骤：在内容的文件名中加上版本号，如yahoo_2.0.6.js。
这个是需要在服务器端进行设置。
4：使用Gzip压缩文件内容。
这个也是需要服务器端支持的。说一下Gzip:
Gzip是目前最流行也是最有效的压缩方式。这是由GNU项目开发并通过RFC 1952来标准化的。另外仅有的一个压缩格式是deflate，但是它的使用范围有限效果也稍稍逊色。
Gzip大概可以减少70%的响应规模。目前大约有90%通过浏览器传输的互联网交换支持gzip格式。如果你使用的是Apache，gzip模块配置和你的版本有关：Apache 1.3使用mod_zip，而Apache 2.x使用moflate。
这里有个网站可以检查你的网站是不否启用了Gzip，而且也可以看到压缩率等信息，如果没有你可以自自己通过搜索，开启相应环境下的Gzip。
5：把样式表放到头部
在研究Yahoo!的性能表现时，我们发现把样式表放到文档的&#60;head /&#62;内部似乎会加快页面的下载速度。这是因为把样式表放到&#60;head /&#62;内会使页面有步骤的加载显示。简单的说你css文件放到&#60;head/&#62;之前。
6：尽量把Scripts放到底部
这点我个人感觉很实用而且很有效，特效在现在的注重于用户交互的网站，其中的javascript好几个加起了也至少有好几十K。浏览器的解析顺序是由上到下，而网站的主要的就是内容，把Scripts放到底部能够保证访客最先看到的是内容。这里有个我优化的例子：用css的position属性控制div顺序。不过有时候把所有的Scripts放到底部可能会导致部分功能失效，这点要特别注意，及时进行调试。
7：避免使用CSS表达式（Expression）
CSS表达式是动态设置CSS属性的强大（但危险）方法。Internet Explorer从第5个版本开始支持CSS表达式。下面的例子中，使用CSS表达式可以实现隔一个小时切换一次背景颜色：
background-color: expression( (new Date()).getHours()%2 ? &#8220;#B8D4FF&#8221; : &#8220;#F08A00&#8243; );
如上所示，expression中使用了JavaScript表达式。CSS属性根据JavaScript表达式的计算结果来设置。expression 方法在其它浏览器中不起作用，因此在跨浏览器的设计中单独针对Internet Explorer设置时会比较有用。
表达式的问题就在于它的计算频率要比我们想象的多。不仅仅是在页面显示和缩放时，就是在页面滚动、乃至移动鼠标时都会要重新计算一次。给CSS表达式增加一个计数器可以跟踪表达式的计算频率。在页面中随便移动鼠标都可以轻松达到10000次以上的计算量。
8：把JavaScript和CSS放到外部
这点也好容易理解。在实际应用中使用外部文件可以提高页面速度，因为JavaScript和CSS文件都能在浏览器中产生缓存。在浏览不同页面，但是都用同一CSS或JavaScript是就不必反复下载。
内置在HTML文档中的JavaScript和CSS则会在每次请求中随HTML文档重新下载。这虽然减少了HTTP请求的次数，却增加了HTML文档的大小。从另一方面来说，如果外部文件中的JavaScript和CSS被浏览器缓存，在没有增加HTTP请求次数的同时可以减少HTML文档的大小。
9：减少DNS的查找次数
这个怎么理解呢？什么是DNS呢？DNS（Domain Name System）中文可以叫域名系统，它提供的是从主机名到IP地址转换的一段计算机程序，在很早以后人们是通过特定的IP来访问某个网站，但是这样很难记，而DNS就是用一些比较好记的词组作为域名，当访客输入域名DNS就把它转化为相应的ip地址。一般情况下返回给定域名对应的IP地址会花费20到120毫秒的时间。而且在这个过程中浏览器什么都不会做直到DNS查找完毕。引用原文的翻译：
缓存DNS查找可以改善页面性能。这种缓存需要一个特定的缓存服务器，这种服务器一般属于用户的ISP提供商或者本地局域网控制，但是它同样会在用户使用的计算机上产生缓存。DNS信息会保留在操作系统的DNS缓存中（微软Windows系统中DNS Client Service）。大多数浏览器有独立于操作系统以外的自己的缓存。由于浏览器有自己的缓存记录，因此在一次请求中它不会受到操作系统的影响。
Internet Explorer默认情况下对DNS查找记录的缓存时间为30分钟，它在注册表中的键值为DnsCacheTimeout。Firefox对DNS的查找记录缓存时间为1分钟，它在配置文件中的选项为network.dnsCacheExpiration（Fasterfox把这个选项改为了1小时）。
当客户端中的DNS缓存都为空时（浏览器和操作系统都为空），DNS查找的次数和页面中主机名的数量相同。这其中包括页面中URL、图片、脚本文件、样式表、Flash对象等包含的主机名。减少主机名的数量可以减少DNS查找次数。
减少主机名的数量还可以减少页面中并行下载的数量。减少DNS查找次数可以节省响应时间，但是减少并行下载却会增加响应时间。我的指导原则是把这些页面中的内容分割成至少两部分但不超过四部分。这种结果就是在减少DNS查找次数和保持较高程度并行下载两者之间的权衡了。
10：压缩和削减JavaScript和CSS
精简是指从去除代码不必要的字符减少文件大小从而节省下载时间。消减代码时，所有的注释、不需要的空白字符（空格、换行、tab缩进）等都要去掉。在 JavaScript中，由于需要下载的文件体积变小了从而节省了响应时间。精简JavaScript中目前用到的最广泛的两个工具是JSMin和YUI Compressor。YUI Compressor还可用于精简CSS。
混淆是另外一种可用于源代码优化的方法。这种方法要比精简复杂一些并且在混淆的过程更易产生问题。在对美国前10大网站的调查中发现，精简也可以缩小原来代码体积的21%，而混淆可以达到25%。尽管混淆法可以更好地缩减代码，但是对于JavaScript来说精简的风险更小。
除消减外部的脚本和样式表文件外，&#60;script&#62;和&#60;style&#62;代码块也可以并且应该进行消减。即使你用Gzip压缩过脚本和样式表，精简这些文件仍然可以节省5%以上的空间。由于JavaScript和CSS的功能和体积的增加，消减代码将会获得益处。
11:避免使用跳转
使用跳转会降低用户体验，而且在用户和HTML中增加一个跳转，会拖延页面中的所有元素的现实。
有一种经常被网页开发者忽略却往往十分浪费响应时间的跳转现象。这种现象发生在当URL本该有斜杠（/）却被忽略掉时。例如，当我们要访问http://astrology.yahoo.com/astrology 时，实际上返回的是一个包含301代码的跳转，它指向的是http://astrology.yahoo.com/astrology/  （注意末尾的斜杠）。在Apache服务器中可以使用Alias 或者 mod_rewrite或者the DirectorySlash来避免。
12：去掉重复的Scripts
重复引用脚本的情况在Internet Explorer中会产生不必要的HTTP请求，而在Firefox却不会。在Internet [...]]]></description>
			<content:encoded><![CDATA[<p>在业界有篇很经典的文章，来源于yahoo的开发者社区，它讲述的是如果优化自己的网站的速度，包括从服务器端到客户端。这篇文章影响了很多人，原文可以参照这里：<a href="http://developer.yahoo.com/performance/rules.html" target="_blank">Best Practices for Speeding Up Your Web Site</a></p>
<p>而本文只是用一种比较通俗的语言来阐述那几种方式，以及如何来优化自己的博客或网站。</p>
<p><span id="more-1479"></span></p>
<p><strong>1：减少自己网站的http请求次数</strong></p>
<p>在现在的网站已经不是简单的文字，这其中还包括更多更为丰富的元素。这样理所当然的增加了服务端与客户端之间的请求数，现在要做的就是尽可能的减少这些响应时间，这是网站优化的第一步，在原文提到：Tenni Theurer在他的博客中所说，HTTP请求在无缓存情况下占去了40%到60%的响应时间，如何优化呢？</p>
<p><strong>合并文件（Combined files）。</strong>比如在你的网站很多不同的css文件或script文件，我们尽可能把它们合并到一个文件，合并css一般不会出现什么错误，合并script就要注意了。</p>
<p><strong>图片拼合技术（CSS Sprites）</strong>。这个在我早些文章有提到，在<a href="http://www.g9net.com/2008/12/31/css-sprites.html" target="_blank">这里</a>你可以了解到详情。</p>
<p><strong>图片地图（Image maps）。</strong>比如我们要做一个比较华丽的导航栏，这其中也包括每个栏目的字体，然后通过map和area元素来确定坐标来进行事件处理，这样就不想切图后很有小图片那样。确定图片的坐标可能会比较繁琐且容易出错，不具有可读性，所以尽量还是不要实用这个。</p>
<p><strong>尽量少使用内联图像（Inline images）。</strong>即一般我们在(X)THML会使用img的src来插入图片。这样做不太好，尽量把它放在样式表（stylesheets）里面写。</p>
<p><strong>2：使用CDN（Content Delivery Network）内容分布网络</strong></p>
<p>这个可能退普通的个人用户来说有些可望不可即了。因为现在的每个地域的网络状态都不一样，比如网站的服务器在成都，那么每个地区的访问的速度都会不同，而CDN的作用在于由一系列分散到各个不同地理位置上的Web服务器组成的，它提高了网站内容的传输速度。用于向用户传输内容的服务器主要是根据和用户在网络上的靠近程度来指定的。目前国内这种服务都比较贵，而且听说对动态网站效果不是太好，我没用过无从考证。不过向是新浪，搜狐，腾讯这些大型门户网站都用到这种服务。</p>
<p><strong>3：在http头部加一个Expires或Cache-Control</strong></p>
<blockquote><p>浏览器（和代理）使用缓存来减少HTTP请求的大小和次数以加快页面访问速度。Web服务器在HTTP响应中使用Expires文件头来告诉客户端内容需要缓存多长时间。下面这个例子是一个较长时间的Expires文件头，它告诉浏览器这个响应直到2010年4月15日才过期。<br />
Expires: Thu, 15 Apr 2010 20:00:00 GMT<br />
如果你使用的是Apache服务器，可以使用ExpiresDefault来设定相对当前日期的过期时间。下面这个例子是使用ExpiresDefault来设定请求时间后10年过期的文件头：<br />
ExpiresDefault &#8220;access plus 10 years&#8221;<br />
要切记，如果使用了Expires文件头，当页面内容改变时就必须改变内容的文件名。依Yahoo!来说我们经常使用这样的步骤：在内容的文件名中加上版本号，如yahoo_2.0.6.js。</p></blockquote>
<p>这个是需要在服务器端进行设置。</p>
<p><strong>4：使用Gzip压缩文件内容。</strong></p>
<p>这个也是需要服务器端支持的。说一下Gzip:</p>
<p>Gzip是目前最流行也是最有效的压缩方式。这是由GNU项目开发并通过RFC 1952来标准化的。另外仅有的一个压缩格式是deflate，但是它的使用范围有限效果也稍稍逊色。<br />
Gzip大概可以减少70%的响应规模。目前大约有90%通过浏览器传输的互联网交换支持gzip格式。如果你使用的是Apache，gzip模块配置和你的版本有关：Apache 1.3使用mod_zip，而Apache 2.x使用moflate。</p>
<p><a href="http://tool.chinaz.com/Gzips/Default.aspx" target="_blank">这里</a>有个网站可以检查你的网站是不否启用了Gzip，而且也可以看到压缩率等信息，如果没有你可以自自己通过搜索，开启相应环境下的Gzip。</p>
<p><strong>5：把样式表放到头部</strong></p>
<p>在研究Yahoo!的性能表现时，我们发现把样式表放到文档的&lt;head /&gt;内部似乎会加快页面的下载速度。这是因为把样式表放到&lt;head /&gt;内会使页面有步骤的加载显示。简单的说你css文件放到&lt;head/&gt;之前。</p>
<p><strong>6：尽量把Scripts放到底部</strong></p>
<p>这点我个人感觉很实用而且很有效，特效在现在的注重于用户交互的网站，其中的javascript好几个加起了也至少有好几十K。浏览器的解析顺序是由上到下，而网站的主要的就是内容，把Scripts放到底部能够保证访客最先看到的是内容。这里有个我优化的例子：<a href="http://www.g9net.com/2009/01/04/css-position.html">用css的position属性控制div顺序</a>。不过有时候把所有的Scripts放到底部可能会导致部分功能失效，这点要特别注意，及时进行调试。</p>
<p><strong>7：避免使用CSS表达式（Expression）</strong></p>
<p>CSS表达式是动态设置CSS属性的强大（但危险）方法。Internet Explorer从第5个版本开始支持CSS表达式。下面的例子中，使用CSS表达式可以实现隔一个小时切换一次背景颜色：<br />
background-color: expression( (new Date()).getHours()%2 ? &#8220;#B8D4FF&#8221; : &#8220;#F08A00&#8243; );<br />
如上所示，expression中使用了JavaScript表达式。CSS属性根据JavaScript表达式的计算结果来设置。expression 方法在其它浏览器中不起作用，因此在跨浏览器的设计中单独针对Internet Explorer设置时会比较有用。<br />
表达式的问题就在于它的计算频率要比我们想象的多。不仅仅是在页面显示和缩放时，就是在页面滚动、乃至移动鼠标时都会要重新计算一次。给CSS表达式增加一个计数器可以跟踪表达式的计算频率。在页面中随便移动鼠标都可以轻松达到10000次以上的计算量。</p>
<p><strong>8：把JavaScript和CSS放到外部</strong></p>
<p>这点也好容易理解。在实际应用中使用外部文件可以提高页面速度，因为JavaScript和CSS文件都能在浏览器中产生缓存。在浏览不同页面，但是都用同一CSS或JavaScript是就不必反复下载。</p>
<p>内置在HTML文档中的JavaScript和CSS则会在每次请求中随HTML文档重新下载。这虽然减少了HTTP请求的次数，却增加了HTML文档的大小。从另一方面来说，如果外部文件中的JavaScript和CSS被浏览器缓存，在没有增加HTTP请求次数的同时可以减少HTML文档的大小。</p>
<p><strong>9：减少DNS的查找次数</strong></p>
<p>这个怎么理解呢？什么是DNS呢？DNS（Domain Name System）中文可以叫域名系统，它提供的是从主机名到IP地址转换的一段计算机程序，在很早以后人们是通过特定的IP来访问某个网站，但是这样很难记，而DNS就是用一些比较好记的词组作为域名，当访客输入域名DNS就把它转化为相应的ip地址。一般情况下返回给定域名对应的IP地址会花费20到120毫秒的时间。而且在这个过程中浏览器什么都不会做直到DNS查找完毕。引用原文的翻译：</p>
<blockquote><p>缓存DNS查找可以改善页面性能。这种缓存需要一个特定的缓存服务器，这种服务器一般属于用户的ISP提供商或者本地局域网控制，但是它同样会在用户使用的计算机上产生缓存。DNS信息会保留在操作系统的DNS缓存中（微软Windows系统中DNS Client Service）。大多数浏览器有独立于操作系统以外的自己的缓存。由于浏览器有自己的缓存记录，因此在一次请求中它不会受到操作系统的影响。<br />
Internet Explorer默认情况下对DNS查找记录的缓存时间为30分钟，它在注册表中的键值为DnsCacheTimeout。Firefox对DNS的查找记录缓存时间为1分钟，它在配置文件中的选项为network.dnsCacheExpiration（Fasterfox把这个选项改为了1小时）。<br />
当客户端中的DNS缓存都为空时（浏览器和操作系统都为空），DNS查找的次数和页面中主机名的数量相同。这其中包括页面中URL、图片、脚本文件、样式表、Flash对象等包含的主机名。减少主机名的数量可以减少DNS查找次数。<br />
减少主机名的数量还可以减少页面中并行下载的数量。减少DNS查找次数可以节省响应时间，但是减少并行下载却会增加响应时间。我的指导原则是把这些页面中的内容分割成至少两部分但不超过四部分。这种结果就是在减少DNS查找次数和保持较高程度并行下载两者之间的权衡了。</p></blockquote>
<p><strong>10：压缩和削减JavaScript和CSS</strong></p>
<blockquote><p>精简是指从去除代码不必要的字符减少文件大小从而节省下载时间。消减代码时，所有的注释、不需要的空白字符（空格、换行、tab缩进）等都要去掉。在 JavaScript中，由于需要下载的文件体积变小了从而节省了响应时间。精简JavaScript中目前用到的最广泛的两个工具是<a href="http://crockford.com/javascript/jsmin">JSMin</a>和<a href="http://developer.yahoo.com/yui/compressor/">YUI Compressor</a>。YUI Compressor还可用于精简CSS。<br />
混淆是另外一种可用于源代码优化的方法。这种方法要比精简复杂一些并且在混淆的过程更易产生问题。在对美国前10大网站的调查中发现，精简也可以缩小原来代码体积的21%，而混淆可以达到25%。尽管混淆法可以更好地缩减代码，但是对于JavaScript来说精简的风险更小。<br />
除消减外部的脚本和样式表文件外，&lt;script&gt;和&lt;style&gt;代码块也可以并且应该进行消减。即使你用Gzip压缩过脚本和样式表，精简这些文件仍然可以节省5%以上的空间。由于JavaScript和CSS的功能和体积的增加，消减代码将会获得益处。</p></blockquote>
<p><strong>11:避免使用跳转</strong></p>
<p>使用跳转会降低用户体验，而且在用户和HTML中增加一个跳转，会拖延页面中的所有元素的现实。</p>
<blockquote><p>有一种经常被网页开发者忽略却往往十分浪费响应时间的跳转现象。这种现象发生在当URL本该有斜杠（/）却被忽略掉时。例如，当我们要访问http://astrology.yahoo.com/astrology 时，实际上返回的是一个包含301代码的跳转，它指向的是http://astrology.yahoo.com/astrology/  （注意末尾的斜杠）。在Apache服务器中可以使用Alias 或者 mod_rewrite或者the DirectorySlash来避免。</p></blockquote>
<p><strong>12：去掉重复的Scripts</strong></p>
<p>重复引用脚本的情况在Internet Explorer中会产生不必要的HTTP请求，而在Firefox却不会。在Internet Explorer中，如果一个脚本被引用两次而且它又不可缓存，它就会在页面加载过程中产生两次HTTP请求。即时脚本可以缓存，当用户重载页面时也会产生额外的HTTP请求。</p>
<blockquote><p>一个避免偶尔发生的两次引用同一脚本的方法是在模板中使用脚本管理模块引用脚本。在HTML页面中使用&lt;script /&gt;标签引用脚本的最常见方法就是：<br />
<em> &lt;script type=&#8221;text/javascript&#8221; src=&#8221;menu_1.0.17.js&#8221;&gt;&lt;/script&gt; </em><br />
在PHP中可以通过创建名为insertScript的方法来替代：<br />
<em>&lt;?php insertScript(&#8220;menu.js&#8221;) ?&gt; </em><br />
为了防止多次重复引用脚本，这个方法中还应该使用其它机制来处理脚本，如检查所属目录和为脚本文件名中增加版本号以用于Expire文件头等。</p></blockquote>
<p>特别提醒下喜欢玩各种插件的wordpress朋友。很多时候我都发现同样是一个Jquery框架在一个页面就被多次加载。注意检查页面代码。</p>
<p><strong>13：配置ETag </strong></p>
<p>这个同样是需要在服务器端进行操作</p>
<p>Entity tags（ETags）（实体标签）是web服务器和浏览器用于判断浏览器缓存中的内容和服务器中的原始内容是否匹配的一种机制（“实体”就是所说的“内容”，包括图片、脚本、样式表等）。</p>
<blockquote><p>ETag的问题在于，它是根据可以辨别网站所在的服务器的具有唯一性的属性来生成的。当浏览器从一台服务器上获得页面内容后到另外一台服务器上进行验证时 ETag就会不匹配，这种情况对于使用服务器组和处理请求的网站来说是非常常见的。默认情况下，Apache和IIS都会把数据嵌入ETag中，这会显著减少多服务器间的文件验证冲突。<br />
Apache 1.3和2.x中的ETag格式为inode-size-timestamp。即使某个文件在不同的服务器上会处于相同的目录下，文件大小、权限、时间戳等都完全相同，但是在不同服务器上他们的内码也是不同的。<br />
IIS 5.0和IIS 6.0处理ETag的机制相似。IIS中的ETag格式为Filetimestamp:ChangeNumber。用ChangeNumber来跟踪 IIS配置的改变。网站所用的不同IIS服务器间ChangeNumber也不相同。不同的服务器上的Apache和IIS即使对于完全相同的内容产生的ETag在也不相同，用户并不会接收到一个小而快的304响应；相反他们会接收一个正常的200响应并下载全部内容。如果你的网站只放在一台服务器上，就不会存在这个问题。但是如果你的网站是架设在多个服务器上，并且使用Apache和 IIS产生默认的ETag配置，你的用户获得页面就会相对慢一点，服务器会传输更多的内容，占用更多的带宽，代理也不会有效地缓存你的网站内容。即使你的内容拥有Expires文件头，无论用户什么时候点击“刷新”或者“重载”按钮都会发送相应的GET请求。<br />
如果你没有使用ETag提供的灵活的验证模式，那么干脆把所有的ETag都去掉会更好。Last-Modified文件头验证是基于内容的时间戳的。去掉ETag文件头会减少响应和下次请求中文件的大小。<a href="http://support.microsoft.com/?id=922733">微软的这篇支持文稿</a>讲述了如何去掉ETag。在Apache中，只需要在配置文件中简单添加下面一行代码就可以了：<br />
FileETag none</p></blockquote>
<p><strong>14：让AJAX能够缓存</strong></p>
<p>Ajax经常被提及的一个好处就是由于其从后台服务器传输信息的异步性而为用户带来的反馈的即时性。但是，使用Ajax并不能保证用户不会在等待异步的 JavaScript和XML响应上花费时间。在很多应用中，用户是否需要等待响应取决于Ajax如何来使用。例如，在一个基于Web的Email客户端中，用户必须等待Ajax返回符合他们条件的邮件查询结果。记住一点，“异步”并不异味着“即时”，这很重要。</p>
<p>为了提高性能，优化Ajax响应是很重要的。提高Ajxa性能的措施中最重要的方法就是使响应具有可缓存性，具体的讨论可以查看<a href="http://developer.yahoo.com/performance/rules.html#expires">Add an Expires or a Cache-Control Header</a>。其它的几条规则也同样适用于Ajax：<br />
Gizp压缩文件， 减少DNS查找次数，  精简JavaScript， 避免跳转，  配置ETags</p>
<blockquote><p>让我们来看一个例子：一个Web2.0的Email客户端会使用Ajax来自动完成对用户地址薄的下载。如果用户在上次使用过Email web应用程序后没有对地址薄作任何的修改，而且Ajax响应通过Expire或者Cacke-Control头来实现缓存，那么就可以直接从上一次的缓存中读取地址薄了。必须告知浏览器是使用缓存中的地址薄还是发送一个新的请求。这可以通过为读取地址薄的Ajax URL增加一个含有上次编辑时间的时间戳来实现，例如，&amp;t=11900241612等。如果地址薄在上次下载后没有被编辑过，时间戳就不变，则从浏览器的缓存中加载从而减少了一次HTTP请求过程。如果用户修改过地址薄，时间戳就会用来确定新的URL和缓存响应并不匹配，浏览器就会重要请求更新地址薄。<br />
即使你的Ajxa响应是动态生成的，哪怕它只适用于一个用户，那么它也应该被缓存起来。这样做可以使你的Web2.0应用程序更加快捷。</p></blockquote>
<p><strong>15、尽早刷新输出缓冲</strong></p>
<blockquote><p>当用户请求一个页面时，无论如何都会花费200到500毫秒用于后台组织HTML文件。在这期间，浏览器会一直空闲等待数据返回。在PHP中，你可以使用 flush()方法，它允许你把已经编译的好的部分HTML响应文件先发送给浏览器，这时浏览器就会可以下载文件中的内容（脚本等）而后台同时处理剩余的 HTML页面。这样做的效果会在后台烦恼或者前台较空闲时更加明显。<br />
输出缓冲应用最好的一个地方就是紧跟在&lt;head /&gt;之后，因为HTML的头部分容易生成而且头部往往包含CSS和JavaScript文件，这样浏览器就可以在后台编译剩余HTML的同时并行下载它们。 例子：<br />
&#8230; &lt;!&#8211; css, js &#8211;&gt;<br />
&lt;/head&gt;<br />
&lt;?php flush(); ?&gt;<br />
&lt;body&gt;<br />
&#8230; &lt;!&#8211; content &#8211;&gt;<br />
为了证明使用这项技术的好处，<a href="http://search.yahoo.com/">Yahoo!搜索</a>率先研究并完成了用户测试。</p></blockquote>
<p><strong>16、使用GET来完成AJAX请求</strong></p>
<blockquote><p><a href="http://mail.yahoo.com/">Yahoo!Mail</a>团队发现，当使用XMLHttpRequest时，浏览器中的POST方法是一个“两步走”的过程：首先发送文件头，然后才发送数据。因此使用GET最为恰当，因为它只需发送一个TCP包（除非你有很多cookie）。IE中URL的最大长度为2K，因此如果你要发送一个超过2K的数据时就不能使用GET了。<br />
一个有趣的不同就是POST并不像GET那样实际发送数据。根据<a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html">HTTP规范</a>，GET意味着“获取”数据，因此当你仅仅获取数据时使用GET更加有意义（从语意上讲也是如此），相反，发送并在服务端保存数据时使用POST。</p></blockquote>
<p><strong>17. 延迟载入组件 (Post-load Components)和18. 预载入组件 (Preload Components)</strong></p>
<p>简单的说就有些你不必要的东西可以稍后在加载它们，而欲载入说的说的是</p>
<p>预先利用在浏览器空档时，载入一些使用者接下来可能会用到的文件等</p>
<p><strong>19：减少DOM元素数量(Reduce the Number of DOM Elements)</strong></p>
<p>一个复杂的页面意味着需要下载更多数据，同时也意味着JavaScript遍历DOM的效率越慢。比如当你增加一个事件句柄时在500和5000个DOM元素中循环效果肯定是不一样的。<br />
大量的DOM元素的存在意味着页面中有可以不用移除内容只需要替换元素标签就可以精简的部分。你在页面布局中使用表格了吗？你有没有仅仅为了布局而引入更多的&lt;div&gt;元素呢？也许会存在一个适合或者在语意是更贴切的标签可以供你使用。</p>
<p><strong>20：<strong>将元件放到不同的域名目录</strong></strong></p>
<p>原因是这样的，在同一个域名在同一时间只能接受两个请求并进行，如果用不同域名就可以实现平行下载。比如我可以用img.g9net.com这个链接来存放图片并进行链接。比如腾讯QQ，域名是<a href="http://www.QQ.com">www.QQ.com</a>。而它用来存放的图片域名地址大致为img1.qq.com，而不是类似<a href="http://www.qq.com/img">www.qq.com/img</a> 这样的目录。</p>
<p><strong>21：减少Iframe的数量</strong></p>
<p>ifrmae元素可以在父文档中插入一个新的HTML文档。了解iframe的工作理然后才能更加有效地使用它，这一点很重要。<br />
&lt;iframe&gt;优点：解决加载缓慢的第三方内容如图标和广告等的加载问题 ；Security sandbox ；并行加载脚本</p>
<p>&lt;iframe&gt;的缺点：即时内容为空，加载也需要时间 ；会阻止页面加载 ；没有语意</p>
<p><strong>22：不要有404错误页面</strong></p>
<p>这个也好理解除了会破坏使用者体验外，还会停止平行下载，此外，有些浏览器还会花时间去解析传回来的404文件。</p>
<p><strong>23：减小Cookie体积</strong></p>
<p>HTTP coockie可以用于权限验证和个性化身份等多种用途。coockie内的有关信息是通过HTTP文件头来在web服务器和浏览器之间进行交流的。因此保持coockie尽可能的小以减少用户的响应时间十分重要。具体可以这样做：</p>
<ul>
<li>去除不必要的coockie 。</li>
</ul>
<ol>
<li>使coockie体积尽量小以减少对用户响应的影响 。</li>
<li>注意在适应级别的域名上设置coockie以便使子域名不受影响 。</li>
<li>设置合理的过期时间。较早地Expire时间和不要过早去清除coockie，都会改善用户的响应时间。</li>
<li><strong>24：对于页面内容使用无coockie域名</strong><br />
<blockquote><p>当浏览器在请求中同时请求一张静态的图片和发送coockie时，服务器对于这些coockie不会做任何地使用。因此他们只是因为某些负面因素而创建的网络传输。所有你应该确定对于静态内容的请求是无coockie的请求。创建一个子域名并用他来存放所有静态内容。<br />
如果你的域名是www.example.org，你可以在static.example.org上存在静态内容。但是，如果你不是在 www.example.org上而是在顶级域名example.org设置了coockie，那么所有对于static.example.org的请求都包含coockie。在这种情况下，你可以再重新购买一个新的域名来存在静态内容，并且要保持这个域名是无coockie的。Yahoo!使用的是 ymig.com，YouTube使用的是ytimg.com，Amazon使用的是images-anazon.com等等。<br />
使用无coockie域名存在静态内容的另外一个好处就是一些代理（服务器）可能会拒绝对coockie的内容请求进行缓存。一个相关的建议就是，如果你想确定应该使用example.org还是www.example.org作为你的一主页，你要考虑到coockie带来的影响。忽略掉www会使你除了把coockie设置到*.example.org外没有其它选择，因此出于性能方面的考虑最好是使用带有www的子域名并且在它上面设置coockie。</p></blockquote>
</li>
</ol>
<p><strong>25：减少DOM访问<br />
</strong>使用JavaScript访问DOM元素比较慢，因此为了获得更多的应该页面，应该做到：</p>
<ul>
<li>缓存已经访问过的有关元素 。</li>
<li>线下更新完节点之后再将它们添加到文档树中 。</li>
<li>避免使用JavaScript来修改页面布局 。</li>
</ul>
<p>有关此方面的更多信息请查看Julien Lecomte在YUI专题中的文章<a href="http://yuiblog.com/blog/2007/12/20/video-lecomte/">“高性能Ajax应该程序”</a>。</p>
<p><strong>26、开发智能事件处理程序</strong></p>
<blockquote><p>有时候我们会感觉到页面反应迟钝，这是因为DOM树元素中附加了过多的事件句柄并且些事件句病被频繁地触发。这就是为什么说使用event delegation（事件代理）是一种好方法了。如果你在一个div中有10个按钮，你只需要在div上附加一次事件句柄就可以了，而不用去为每一个按钮增加一个句柄。事件冒泡时你可以捕捉到事件并判断出是哪个事件发出的。<br />
你同样也不用为了操作DOM树而等待onload事件的发生。你需要做的就是等待树结构中你要访问的元素出现。你也不用等待所有图像都加载完毕。<br />
你可能会希望用DOMContentLoaded事件来代替onload，但是在所有浏览器都支持它之前你可使用<a href="http://developer.yahoo.com/yui/event/">YUI 事件</a>应用程序中的<a href="http://developer.yahoo.com/yui/event/#onavailable">onAvailable</a>方法。</p></blockquote>
<p><strong>27：使用&lt;link&gt;代替@import</strong></p>
<p>前面的最佳实现中提到CSS应该放置在顶端以利于有序加载呈现。 在IE中，用@import把&lt;link&gt;当到底部的作用是一样的，因此最好不要使用它。</p>
<p><strong>28：避免使用滤镜</strong></p>
<blockquote><p>IE独有属性AlphaImageLoader用于修正7.0以下版本中显示PNG图片的半透明效果。这个滤镜的问题在于浏览器加载图片时它会终止内容的呈现并且冻结浏览器。在每一个元素（不仅仅是图片）它都会运算一次，增加了内存开支，因此它的问题是多方面的。<br />
完全避免使用AlphaImageLoader的最好方法就是使用PNG8格式来代替，这种格式能在IE中很好地工作。如果你确实需要使用 AlphaImageLoader，请使用下划线_filter又使之对IE7以上版本的用户无效。</p></blockquote>
<p><strong>29：优化图像</strong></p>
<p>这个简单的说设计好后图片不要急于直接用，最好用图片压缩工具压缩。我本人很喜欢png这种格式，所用的工具为PNGOUTWin，效果相当不错。</p>
<p><strong>30：优化CSS Spirite</strong></p>
<ul>
<li>1：在Spirite中水平排列你的图片，垂直排列会稍稍增加文件大小；</li>
<li>2：Spirite中把颜色较近的组合在一起可以降低颜色数，理想状况是低于256色以便适用PNG8格式；</li>
<li>3：便于移动，不要在Spirite的图像中间留有较大空隙。这虽然不大会增加文件大小但对于用户代理来说它需要更少的内存来把图片解压为像素地图。100&#215;100的图片为1万像素，而1000&#215;1000就是100万像素。</li>
<li></li>
</ul>
<p><strong>31：不要在HTML中缩放图像</strong></p>
<p>不要为了在HTML中设置长宽而使用比实际需要大的图片。如果你需要：<br />
<em>&lt;img width=&#8221;100&#8243; height=&#8221;100&#8243; src=&#8221;mycat.jpg&#8221; alt=&#8221;My Cat&#8221; /&gt;</em><br />
那么你的图片（mycat.jpg）就应该是100&#215;100像素而不是把一个500&#215;500像素的图片缩小使用。</p>
<p><strong>32：favicon.ico要小且可缓存</strong></p>
<p>favicon.ico是位于服务器根目录下的一个图片文件，也就是在浏览器旁边的那个网站小图标。它是必定存在的，因为即使你不关心它是否有用，浏览器也会对它发出请求，因此最好不要返回一个404 Not Found的响应。由于是在同一台服务器上，它每被请求一次coockie就会被发送一次。这个图片文件还会影响下载顺序，例如在IE中当你在 onload中请求额外的文件时，favicon会在这些额外内容被加载前下载。为了减少favicon.ico带来的弊端，要做到</p>
<p>1：文件尽量地小，最好小于1K</p>
<p>2：在适当的时候（也就是你不要打算再换favicon.ico的时候，因为更换新文件时不能对它进行重命名）为它设置Expires文件头。你可以很安全地把Expires文件头设置为未来的几个月。你可以通过核对当前favicon.ico的上次编辑时间来作出判断。</p>
<p><a href="http://www.imagemagick.org/">Imagemagick</a>可以帮你创建小巧的favicon。</p>
<p><strong>33：保持单个内容小于25K</strong></p>
<p>这条限制主要是因为iPhone不能缓存大于25K的文件。注意这里指的是解压缩后的大小。由于单纯gizp压缩可能达不要求，因此精简文件就显得十分重要。</p>
<p><strong>34：打包组成复合文本</strong></p>
<p>这条限制主要是因为iPhone不能缓存大于25K的文件。注意这里指的是解压缩后的大小。由于单纯gizp压缩可能达不要求，因此精简文件就显得十分重要。</p>
<p><strong>总结一下：</strong></p>
<p>对于普通的前端工作者，最重要的就是关心CSS和Javascript等，比较好下手</p>
<p>对于CSS：把样式表置于顶部：避免使用CSS表达式（Expression）；使用外部JavaScript和CSS；削减JavaScript和CSS；削减JavaScript和CSS</p>
<p>对于Javascript：把脚本置于页面底部；使用外部JavaScript和CSS；削减JavaScript和CSS；剔除重复脚本；减少DOM访问</p>
<p><strong>如果文中有什么地方错误的欢迎留言。</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://wlsy.me/1479/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
