<?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/"
	>

<channel>
	<title>朝心</title>
	<atom:link href="http://www.xincss.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.xincss.com</link>
	<description>关注工作中的琐碎，记录生活中的点滴</description>
	<pubDate>Mon, 05 Jul 2010 02:06:48 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>jQuery性能优化</title>
		<link>http://www.xincss.com/?p=161</link>
		<comments>http://www.xincss.com/?p=161#comments</comments>
		<pubDate>Mon, 05 Jul 2010 02:04:05 +0000</pubDate>
		<dc:creator>朝心</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.xincss.com/?p=161</guid>
		<description><![CDATA[现在越来越多的人应用jQuery了，有些同学在享受爽快淋漓coding时就将性能问题忽略了,  比如我.   jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, 性能问题还是需要引起重视的.

总是从ID 选择器开始继承
<span class="readmore"><a href="http://www.xincss.com/?p=161" title="jQuery性能优化">阅读全文（6684字）</a></span>]]></description>
			<content:encoded><![CDATA[<div id="entry" class="fs_14">
<p>现在越来越多的人应用jQuery了，有些同学在享受爽快淋漓coding时就将性能问题忽略了,  比如我.   jquery虽在诸多的js类库中性能表现还算优秀, 但毕竟不是在用原生的javascript开发, 性能问题还是需要引起重视的.</p>
<ol style="font-size: 14px;">
<li><a href="#descend-from-an-#id">总是从ID 选择器开始继承</a></li>
<li><a href="#use-tags-before-classes">在 class前使用tag</a></li>
<li><a href="#cache-jquery-objects">将 jquery对象缓存起来</a></li>
<li><a href="#harness-the-power-of-chaining">掌握 强大的链式操作</a></li>
<li><a href="#use-sub-queries">使用子查询</a></li>
<li><a href="#limit-direct-dom-manipulation">对直 接的DOM操作进行限制</a></li>
<li><a href="#everage-event-delegation">冒 泡</a></li>
<li><a href="#eliminate-query-waste">消除无 效查询</a></li>
<li><a href="#defer-to-window-load">推迟到  $(window).load</a></li>
<li><a href="#compress-your-js">压缩js</a></li>
<li><a href="#learn-the-library">全面掌握 jquery库</a></li>
</ol>
<h3 id="descend-from-an-#id">1. 总是从ID选择器开始继承</h3>
<p>在jquery中最快的选择器是ID选择器. 因为它直接来自于Javascript的getElementById()方法.</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: olive;">&lt;</span><span style="color: green;">div</span><span style="color: gray;"> </span><span style="color: #00008b;">id</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">content</span><span style="color: #8b0000;">&#8220;</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;</span><span style="color: green;">form</span><span style="color: gray;"> </span><span style="color: #00008b;">method</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">post</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">action</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">/</span><span style="color: #8b0000;">&#8220;</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;</span><span style="color: green;">h2</span><span style="color: olive;">&gt;</span><span style="color: gray;">Traffic Light</span><span style="color: olive;">&lt;/</span><span style="color: green;">h2</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;</span><span style="color: green;">ul</span><span style="color: gray;"> </span><span style="color: #00008b;">id</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">traffic_light</span><span style="color: #8b0000;">&#8220;</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;</span><span style="color: green;">li</span><span style="color: olive;">&gt;&lt;</span><span style="color: green;">input</span><span style="color: gray;"> </span><span style="color: #00008b;">type</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">radio</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">class</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">on</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">name</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">light</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">value</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">red</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: olive;">/&gt;</span><span style="color: gray;"> Red</span><span style="color: olive;">&lt;/</span><span style="color: green;">li</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;</span><span style="color: green;">li</span><span style="color: olive;">&gt;&lt;</span><span style="color: green;">input</span><span style="color: gray;"> </span><span style="color: #00008b;">type</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">radio</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">class</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">off</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">name</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">light</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">value</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">yellow</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: olive;">/&gt;</span><span style="color: gray;"> Yellow</span><span style="color: olive;">&lt;/</span><span style="color: green;">li</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;</span><span style="color: green;">li</span><span style="color: olive;">&gt;&lt;</span><span style="color: green;">input</span><span style="color: gray;"> </span><span style="color: #00008b;">type</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">radio</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">class</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">off</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">name</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">light</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">value</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">green</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: olive;">/&gt;</span><span style="color: gray;"> Green</span><span style="color: olive;">&lt;/</span><span style="color: green;">li</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;/</span><span style="color: green;">ul</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;</span><span style="color: green;">input</span><span style="color: gray;"> </span><span style="color: #00008b;">class</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">button</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">id</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">traffic_button</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">type</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">submit</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">value</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">Go</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: olive;">/&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;/</span><span style="color: green;">form</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;/</span><span style="color: green;">div</span><span style="color: olive;">&gt;</span></div>
</div>
<p>像这样选择按钮是低效的:</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: green;">var</span><span style="color: gray;"> </span><span style="color: blue;">traffic_button</span><span style="color: gray;"> = $</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">#content  .button</span><span style="color: #8b0000;">‘</span><span style="color: olive;">)</span><span style="color: gray;">;</span></div>
</div>
<p>用ID直接选择按钮效率更高:</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: green;">var</span><span style="color: gray;"> </span><span style="color: blue;">traffic_button</span><span style="color: gray;"> = $</span><span style="color: olive;">(</span><span style="color: gray;">‘#</span><span style="color: blue;">traffic_button</span><span style="color: gray;">’</span><span style="color: olive;">)</span><span style="color: gray;">;</span></div>
</div>
<p>选择多个元素</p>
<p>提到多元素选择其实是在说DOM遍历和循环, 这些都是比较慢的东西.为了提高性能, 最好从就近的ID开始继承.</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: green;">var</span><span style="color: gray;"> </span><span style="color: blue;">traffic_lights</span><span style="color: gray;"> = $</span><span style="color: olive;">(</span><span style="color: gray;">‘#</span><span style="color: blue;">traffic_light</span><span style="color: gray;"> </span><span style="color: blue;">input</span><span style="color: gray;">’</span><span style="color: olive;">)</span><span style="color: gray;">;</span></div>
</div>
<h3 id="use-tags-before-classes">2. 在class前使用tag</h3>
<p>第二快的选择器是tag选择器($(‘head’)). 同理,因为它来自原生的getElementsByTagName() 方法.</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: olive;">&lt;</span><span style="color: green;">div</span><span style="color: gray;"> </span><span style="color: #00008b;">id</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">content</span><span style="color: #8b0000;">&#8220;</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;</span><span style="color: green;">form</span><span style="color: gray;"> </span><span style="color: #00008b;">method</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">post</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">action</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">/</span><span style="color: #8b0000;">&#8220;</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;</span><span style="color: green;">h2</span><span style="color: olive;">&gt;</span><span style="color: gray;">Traffic Light</span><span style="color: olive;">&lt;/</span><span style="color: green;">h2</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;</span><span style="color: green;">ul</span><span style="color: gray;"> </span><span style="color: #00008b;">id</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">traffic_light</span><span style="color: #8b0000;">&#8220;</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;</span><span style="color: green;">li</span><span style="color: olive;">&gt;&lt;</span><span style="color: green;">input</span><span style="color: gray;"> </span><span style="color: #00008b;">type</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">radio</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">class</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">on</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">name</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">light</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">value</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">red</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: olive;">/&gt;</span><span style="color: gray;"> Red</span><span style="color: olive;">&lt;/</span><span style="color: green;">li</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;</span><span style="color: green;">li</span><span style="color: olive;">&gt;&lt;</span><span style="color: green;">input</span><span style="color: gray;"> </span><span style="color: #00008b;">type</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">radio</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">class</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">off</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">name</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">light</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">value</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">yellow</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: olive;">/&gt;</span><span style="color: gray;"> Yellow</span><span style="color: olive;">&lt;/</span><span style="color: green;">li</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;</span><span style="color: green;">li</span><span style="color: olive;">&gt;&lt;</span><span style="color: green;">input</span><span style="color: gray;"> </span><span style="color: #00008b;">type</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">radio</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">class</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">off</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">name</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">light</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">value</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">green</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: olive;">/&gt;</span><span style="color: gray;"> Green</span><span style="color: olive;">&lt;/</span><span style="color: green;">li</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;/</span><span style="color: green;">ul</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;</span><span style="color: green;">input</span><span style="color: gray;"> </span><span style="color: #00008b;">class</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">button</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">id</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">traffic_button</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">type</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">submit</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">value</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">Go</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: olive;">/&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;/</span><span style="color: green;">form</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;/</span><span style="color: green;">div</span><span style="color: olive;">&gt;</span></div>
</div>
<p>总是用一个tag name来限制(修饰)class (并且不要忘记就近的ID):</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: green;">var</span><span style="color: gray;"> </span><span style="color: blue;">active_light</span><span style="color: gray;"> = $</span><span style="color: olive;">(</span><span style="color: gray;">‘#</span><span style="color: blue;">traffic_light</span><span style="color: gray;"> </span><span style="color: blue;">input</span><span style="color: gray;">.</span><span style="color: blue;">on</span><span style="color: gray;">’</span><span style="color: olive;">)</span><span style="color: gray;">;</span></div>
</div>
<p>注意: 在jquery中Class是最慢的选择器. IE浏览器下它会遍历所有DOM节点不管它用在那里.</p>
<p>不要用用tag name来修饰ID. 下面的例子将会遍历所有的div元素来查找id为’content’的哪一个节点:</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: green;">var</span><span style="color: gray;"> </span><span style="color: blue;">content</span><span style="color: gray;"> = $</span><span style="color: olive;">(</span><span style="color: gray;">‘</span><span style="color: blue;">div</span><span style="color: gray;">#</span><span style="color: blue;">content</span><span style="color: gray;">’</span><span style="color: olive;">)</span><span style="color: gray;">;</span></div>
</div>
<p>用ID修饰ID也是画蛇添足:</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: green;">var</span><span style="color: gray;"> </span><span style="color: blue;">traffic_light</span><span style="color: gray;"> = $</span><span style="color: olive;">(</span><span style="color: gray;">‘#</span><span style="color: blue;">content</span><span style="color: gray;"> #</span><span style="color: blue;">traffic_light</span><span style="color: gray;">’</span><span style="color: olive;">)</span><span style="color: gray;">;</span></div>
</div>
<h3 id="cache-jquery-objects">3. 将jquery对象缓存起来</h3>
<p>要养成将jquery对象缓存进变量的习惯.</p>
<p>永远不要这样做:</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: gray;">$</span><span style="color: olive;">(</span><span style="color: gray;">‘#</span><span style="color: blue;">traffic_light</span><span style="color: gray;"> </span><span style="color: blue;">input</span><span style="color: gray;">.</span><span style="color: blue;">on</span><span style="color: olive;">)</span><span style="color: gray;">.</span><span style="color: blue;">bind</span><span style="color: olive;">(</span><span style="color: gray;">‘</span><span style="color: blue;">click</span><span style="color: gray;">‘, </span><span style="color: green;">function</span><span style="color: olive;">(){</span><span style="color: gray;">…</span><span style="color: olive;">})</span><span style="color: gray;">;<br />
$</span><span style="color: olive;">(</span><span style="color: gray;">‘#</span><span style="color: blue;">traffic_light</span><span style="color: gray;"> </span><span style="color: blue;">input</span><span style="color: gray;">.</span><span style="color: blue;">on</span><span style="color: olive;">)</span><span style="color: gray;">.</span><span style="color: blue;">css</span><span style="color: olive;">(</span><span style="color: gray;">‘</span><span style="color: blue;">border</span><span style="color: gray;">’, ’</span><span style="color: maroon;">3</span><span style="color: blue;">px</span><span style="color: gray;"> </span><span style="color: blue;">dashed</span><span style="color: gray;"> </span><span style="color: blue;">yellow</span><span style="color: gray;">’</span><span style="color: olive;">)</span><span style="color: gray;">;<br />
$</span><span style="color: olive;">(</span><span style="color: gray;">‘#</span><span style="color: blue;">traffic_light</span><span style="color: gray;"> </span><span style="color: blue;">input</span><span style="color: gray;">.</span><span style="color: blue;">on</span><span style="color: olive;">)</span><span style="color: gray;">.</span><span style="color: blue;">css</span><span style="color: olive;">(</span><span style="color: gray;">‘</span><span style="color: blue;">background</span><span style="color: gray;">-</span><span style="color: blue;">color</span><span style="color: gray;">‘, ‘</span><span style="color: blue;">orange</span><span style="color: gray;">‘</span><span style="color: olive;">)</span><span style="color: gray;">;<br />
$</span><span style="color: olive;">(</span><span style="color: gray;">‘#</span><span style="color: blue;">traffic_light</span><span style="color: gray;"> </span><span style="color: blue;">input</span><span style="color: gray;">.</span><span style="color: blue;">on</span><span style="color: olive;">)</span><span style="color: gray;">.</span><span style="color: blue;">fadeIn</span><span style="color: olive;">(</span><span style="color: gray;">‘</span><span style="color: blue;">slow</span><span style="color: gray;">’</span><span style="color: olive;">)</span><span style="color: gray;">;</span></div>
</div>
<p>最好先将对象缓存进一个变量然后再操作:</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: green;">var</span><span style="color: gray;"> $</span><span style="color: blue;">active_light</span><span style="color: gray;"> = $</span><span style="color: olive;">(</span><span style="color: gray;">‘#</span><span style="color: blue;">traffic_light</span><span style="color: gray;"> </span><span style="color: blue;">input</span><span style="color: gray;">.</span><span style="color: blue;">on</span><span style="color: gray;">’</span><span style="color: olive;">)</span><span style="color: gray;">;<br />
$</span><span style="color: blue;">active_light</span><span style="color: gray;">.</span><span style="color: blue;">bind</span><span style="color: olive;">(</span><span style="color: gray;">‘</span><span style="color: blue;">click</span><span style="color: gray;">’, </span><span style="color: green;">function</span><span style="color: olive;">(){</span><span style="color: gray;">…</span><span style="color: olive;">})</span><span style="color: gray;">;<br />
$</span><span style="color: blue;">active_light</span><span style="color: gray;">.</span><span style="color: blue;">css</span><span style="color: olive;">(</span><span style="color: gray;">‘</span><span style="color: blue;">border</span><span style="color: gray;">’, ’</span><span style="color: maroon;">3</span><span style="color: blue;">px</span><span style="color: gray;"> </span><span style="color: blue;">dashed</span><span style="color: gray;"> </span><span style="color: blue;">yellow</span><span style="color: gray;">’</span><span style="color: olive;">)</span><span style="color: gray;">;<br />
$</span><span style="color: blue;">active_light</span><span style="color: gray;">.</span><span style="color: blue;">css</span><span style="color: olive;">(</span><span style="color: gray;">‘</span><span style="color: blue;">background</span><span style="color: gray;">-</span><span style="color: blue;">color</span><span style="color: gray;">’, ‘</span><span style="color: blue;">orange</span><span style="color: gray;">’</span><span style="color: olive;">)</span><span style="color: gray;">;<br />
$</span><span style="color: blue;">active_light</span><span style="color: gray;">.</span><span style="color: blue;">fadeIn</span><span style="color: olive;">(</span><span style="color: gray;">‘</span><span style="color: blue;">slow</span><span style="color: gray;">’</span><span style="color: olive;">)</span><span style="color: gray;">;</span></div>
</div>
<p>为了记住我们本地变量是jquery的封装, 通常用一个$作为变量前缀. 记住,永远不要让相同的选择器在你的代码里出现多次.<br />
缓存jquery结果,备用</p>
<p>如果你打算将jquery结果对象用在程序的其它部分,或者你的function会多次执行, 那么就将他们缓存到一个全局变量中.</p>
<p>定义一个全局容器来存放jquery结果, 我们就可以在其它函数引用它们:</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: #ffa500;">//  在全局范围定义一个对象 (例如: window对象)</span><span style="color: gray;"><br />
</span><span style="color: teal;">window</span><span style="color: gray;">.$</span><span style="color: blue;">my</span><span style="color: gray;"> =<br />
</span><span style="color: olive;">{</span><span style="color: gray;"><br />
</span><span style="color: #ffa500;">// 初始化所有可能会不止一次要使用的查询</span><span style="color: gray;"><br />
</span><span style="color: blue;">head</span><span style="color: gray;"> : $</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">head</span><span style="color: #8b0000;">‘</span><span style="color: olive;">)</span><span style="color: gray;">,<br />
</span><span style="color: blue;">traffic_light</span><span style="color: gray;"> : $</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">#traffic_light</span><span style="color: #8b0000;">‘</span><span style="color: olive;">)</span><span style="color: gray;">,<br />
</span><span style="color: blue;">traffic_button</span><span style="color: gray;"> : $</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">#traffic_button</span><span style="color: #8b0000;">‘</span><span style="color: olive;">)</span><span style="color: gray;"><br />
</span><span style="color: olive;">}</span><span style="color: gray;">;</p>
<p></span><span style="color: green;">function</span><span style="color: gray;"> </span><span style="color: blue;">do_something</span><span style="color: olive;">()</span><span style="color: gray;"><br />
</span><span style="color: olive;">{</span><span style="color: gray;"><br />
</span><span style="color: #ffa500;">//现在你可以引用存储的结果并操作它们</span><span style="color: gray;"><br />
</span><span style="color: green;">var</span><span style="color: gray;"> </span><span style="color: blue;">script</span><span style="color: gray;"> = </span><span style="color: teal;">document</span><span style="color: gray;">.</span><span style="color: blue;">createElement</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">script</span><span style="color: #8b0000;">‘</span><span style="color: olive;">)</span><span style="color: gray;">;<br />
$</span><span style="color: blue;">my</span><span style="color: gray;">.</span><span style="color: blue;">head</span><span style="color: gray;">.</span><span style="color: blue;">append</span><span style="color: olive;">(</span><span style="color: blue;">script</span><span style="color: olive;">)</span><span style="color: gray;">;</p>
<p></span><span style="color: #ffa500;">// 当你在函数内部操作是, 可以继续将查询存入全局对象中去.</span><span style="color: gray;"><br />
$</span><span style="color: blue;">my</span><span style="color: gray;">.</span><span style="color: blue;">cool_results</span><span style="color: gray;"> = $</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">#some_ul  li</span><span style="color: #8b0000;">‘</span><span style="color: olive;">)</span><span style="color: gray;">;<br />
$</span><span style="color: blue;">my</span><span style="color: gray;">.</span><span style="color: blue;">other_results</span><span style="color: gray;"> = $</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">#some_table td</span><span style="color: #8b0000;">‘</span><span style="color: olive;">)</span><span style="color: gray;">;</p>
<p></span><span style="color: #ffa500;">//  将全局函数作为一个普通的jquery对象去使用.</span><span style="color: gray;"><br />
$</span><span style="color: blue;">my</span><span style="color: gray;">.</span><span style="color: blue;">other_results</span><span style="color: gray;">.</span><span style="color: blue;">css</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">border-color</span><span style="color: #8b0000;">‘</span><span style="color: gray;">, </span><span style="color: #8b0000;">‘</span><span style="color: red;">red</span><span style="color: #8b0000;">‘</span><span style="color: olive;">)</span><span style="color: gray;">;<br />
$</span><span style="color: blue;">my</span><span style="color: gray;">.</span><span style="color: blue;">traffic_light</span><span style="color: gray;">.</span><span style="color: blue;">css</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">border-color</span><span style="color: #8b0000;">‘</span><span style="color: gray;">, </span><span style="color: #8b0000;">‘</span><span style="color: red;">green</span><span style="color: #8b0000;">‘</span><span style="color: olive;">)</span><span style="color: gray;">;<br />
</span><span style="color: olive;">}</span></div>
</div>
<h3 id="harness-the-power-of-chaining">4. 掌握强大的链式操作</h3>
<p>上面的例子也可以写成这样:</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: green;">var</span><span style="color: gray;"> $</span><span style="color: blue;">active_light</span><span style="color: gray;"> = $</span><span style="color: olive;">(</span><span style="color: gray;">‘#</span><span style="color: blue;">traffic_light</span><span style="color: gray;"> </span><span style="color: blue;">input</span><span style="color: gray;">.</span><span style="color: blue;">on</span><span style="color: gray;">’</span><span style="color: olive;">)</span><span style="color: gray;">;$</span><span style="color: blue;">active_light</span><span style="color: gray;">.</span><span style="color: blue;">bind</span><span style="color: olive;">(</span><span style="color: gray;">‘</span><span style="color: blue;">click</span><span style="color: gray;">’, </span><span style="color: green;">function</span><span style="color: olive;">(){</span><span style="color: gray;">…</span><span style="color: olive;">})</span><span style="color: gray;"><br />
.</span><span style="color: blue;">css</span><span style="color: olive;">(</span><span style="color: gray;">‘</span><span style="color: blue;">border</span><span style="color: gray;">’, ’</span><span style="color: maroon;">3</span><span style="color: blue;">px</span><span style="color: gray;"> </span><span style="color: blue;">dashed</span><span style="color: gray;"> </span><span style="color: blue;">yellow</span><span style="color: gray;">’</span><span style="color: olive;">)</span><span style="color: gray;"><br />
.</span><span style="color: blue;">css</span><span style="color: olive;">(</span><span style="color: gray;">‘</span><span style="color: blue;">background</span><span style="color: gray;">-</span><span style="color: blue;">color</span><span style="color: gray;">’, ‘</span><span style="color: blue;">orange</span><span style="color: gray;">’</span><span style="color: olive;">)</span><span style="color: gray;"><br />
.</span><span style="color: blue;">fadeIn</span><span style="color: olive;">(</span><span style="color: gray;">‘</span><span style="color: blue;">slow</span><span style="color: gray;">’</span><span style="color: olive;">)</span><span style="color: gray;">;</span></div>
</div>
<p>这样可以写更少的代码, 让我们的js更轻量.</p>
<h3 id="use-sub-queries">5. 使用子查询</h3>
<p>jQuery 允许我们对一个已包装的对象使用附加的选择器操作. 因为我们已经在保存了一个父级对象在变量里, 这样大大提高对其子元素的操作:</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: gray;">&lt;</span><span style="color: blue;">div</span><span style="color: gray;"> </span><span style="color: blue;">id</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">content</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;">&gt;<br />
&lt;</span><span style="color: blue;">form</span><span style="color: gray;"> </span><span style="color: blue;">method</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">post</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: blue;">action</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">/</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;">&gt;<br />
&lt;</span><span style="color: blue;">h2</span><span style="color: gray;">&gt;</span><span style="color: blue;">Traffic</span><span style="color: gray;"> </span><span style="color: blue;">Light</span><span style="color: gray;">&lt;</span><span style="color: #8b0000;">/</span><span style="color: red;">h2&gt;<br />
&lt;ul id=&#8221;traffic_light&#8221;&gt;<br />
&lt;li&gt;&lt;input  type=&#8221;radio&#8221; class=&#8221;on&#8221; name=&#8221;light&#8221; value=&#8221;red&#8221; </span><span style="color: #8b0000;">/</span><span style="color: gray;">&gt; </span><span style="color: blue;">Red</span><span style="color: gray;">&lt;</span><span style="color: #8b0000;">/</span><span style="color: red;">li&gt;<br />
&lt;li&gt;&lt;input type=&#8221;radio&#8221; class=&#8221;off&#8221; name=&#8221;light&#8221;  value=&#8221;yellow&#8221; </span><span style="color: #8b0000;">/</span><span style="color: gray;">&gt; </span><span style="color: blue;">Yellow</span><span style="color: gray;">&lt;</span><span style="color: #8b0000;">/</span><span style="color: red;">li&gt;<br />
&lt;li&gt;&lt;input  type=&#8221;radio&#8221; class=&#8221;off&#8221; name=&#8221;light&#8221; value=&#8221;green&#8221; </span><span style="color: #8b0000;">/</span><span style="color: gray;">&gt; </span><span style="color: blue;">Green</span><span style="color: gray;">&lt;</span><span style="color: #8b0000;">/</span><span style="color: red;">li&gt;<br />
&lt;</span><span style="color: #8b0000;">/</span><span style="color: blue;">ul</span><span style="color: gray;">&gt;<br />
&lt;</span><span style="color: blue;">input</span><span style="color: gray;"> </span><span style="color: green;">class</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">button</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: blue;">id</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">traffic_button</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: blue;">type</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">submit</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: blue;">value</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">Go</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #8b0000;">/</span><span style="color: red;">&gt;<br />
&lt;</span><span style="color: #8b0000;">/</span><span style="color: blue;">form</span><span style="color: gray;">&gt;<br />
&lt;</span><span style="color: #8b0000;">/</span><span style="color: red;">div&gt;</span></div>
</div>
<p>例如, 我们可以用子查询的方法来抓取到亮或不亮的灯, 并缓存起来以备后续操作.</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: green;">var</span><span style="color: gray;"> $</span><span style="color: blue;">traffic_light</span><span style="color: gray;"> = $</span><span style="color: olive;">(</span><span style="color: gray;">‘#</span><span style="color: blue;">traffic_light</span><span style="color: gray;">’</span><span style="color: olive;">)</span><span style="color: gray;">,<br />
$</span><span style="color: blue;">active_light</span><span style="color: gray;"> = $</span><span style="color: blue;">traffic_light</span><span style="color: gray;">.</span><span style="color: blue;">find</span><span style="color: olive;">(</span><span style="color: gray;">‘</span><span style="color: blue;">input</span><span style="color: gray;">.</span><span style="color: blue;">on</span><span style="color: gray;">’</span><span style="color: olive;">)</span><span style="color: gray;">,<br />
$</span><span style="color: blue;">inactive_lights</span><span style="color: gray;"> =  $</span><span style="color: blue;">traffic_light</span><span style="color: gray;">.</span><span style="color: blue;">find</span><span style="color: olive;">(</span><span style="color: gray;">‘</span><span style="color: blue;">input</span><span style="color: gray;">.</span><span style="color: blue;">off</span><span style="color: gray;">’</span><span style="color: olive;">)</span><span style="color: gray;">;</span></div>
</div>
<p>提示: 你可以用逗号分隔的方法一次声明多个局部变量–节省字节数</p>
<h3 id="limit-direct-dom-manipulation">6. 对直接的DOM操作进行限制</h3>
<p>这里的基本思想是在内存中建立你确实想要的东西，然后更新DOM 。这并不是一个jQuery最佳实践，但必须进行有效的JavaScript操作  。直接的DOM操作速度很慢。</p>
<p>例如,你想动态的创建一组列表元素, 千万不要这么做:</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: green;">var</span><span style="color: gray;"> </span><span style="color: blue;">top_100_list</span><span style="color: gray;"> = </span><span style="color: olive;">[</span><span style="color: gray;">...</span><span style="color: olive;">]</span><span style="color: gray;">, </span><span style="color: #ffa500;">// 假设这里是100个独一无二的字符串</span><span style="color: gray;"><br />
$</span><span style="color: blue;">mylist</span><span style="color: gray;"> = $</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">#mylist</span><span style="color: #8b0000;">‘</span><span style="color: olive;">)</span><span style="color: gray;">; </span><span style="color: #ffa500;">//jQuery 选择到 &lt;ul&gt; 元素t</span><span style="color: gray;"></p>
<p></span><span style="color: green;">for</span><span style="color: gray;"> </span><span style="color: olive;">(</span><span style="color: green;">var</span><span style="color: gray;"> </span><span style="color: blue;">i</span><span style="color: gray;">=</span><span style="color: maroon;">0</span><span style="color: gray;">, </span><span style="color: blue;">l</span><span style="color: gray;">=</span><span style="color: blue;">top_100_list</span><span style="color: gray;">.</span><span style="color: blue;">length</span><span style="color: gray;">; </span><span style="color: blue;">i</span><span style="color: gray;">&lt;</span><span style="color: blue;">l</span><span style="color: gray;">; </span><span style="color: blue;">i</span><span style="color: gray;">++</span><span style="color: olive;">)</span><span style="color: gray;"><br />
</span><span style="color: olive;">{</span><span style="color: gray;"><br />
$</span><span style="color: blue;">mylist</span><span style="color: gray;">.</span><span style="color: blue;">append</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">&lt;li&gt;</span><span style="color: #8b0000;">‘</span><span style="color: gray;"> + </span><span style="color: blue;">top_100_list</span><span style="color: olive;">[</span><span style="color: blue;">i</span><span style="color: olive;">]</span><span style="color: gray;"> + </span><span style="color: #8b0000;">‘</span><span style="color: red;">&lt;/li&gt;</span><span style="color: #8b0000;">‘</span><span style="color: olive;">)</span><span style="color: gray;">;<br />
</span><span style="color: olive;">}</span></div>
</div>
<p>我们应该将整套元素字符串在插入进dom中之前全部创建好:</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: green;">var</span><span style="color: gray;"> </span><span style="color: blue;">top_100_list</span><span style="color: gray;"> = </span><span style="color: olive;">[</span><span style="color: gray;">...</span><span style="color: olive;">]</span><span style="color: gray;">, </span><span style="color: #ffa500;">//  assume this has 100 unique strings</span><span style="color: gray;"><br />
$</span><span style="color: blue;">mylist</span><span style="color: gray;"> = $</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">#mylist</span><span style="color: #8b0000;">‘</span><span style="color: olive;">)</span><span style="color: gray;">, </span><span style="color: #ffa500;">//  jQuery selects our &lt;ul&gt; element</span><span style="color: gray;"><br />
</span><span style="color: blue;">top_100_li</span><span style="color: gray;"> = </span><span style="color: #8b0000;">&#8220;&#8221;</span><span style="color: gray;">; </span><span style="color: #ffa500;">//  这个变量将用来存储我们的列表元素</span><span style="color: gray;"></p>
<p></span><span style="color: green;">for</span><span style="color: gray;"> </span><span style="color: olive;">(</span><span style="color: green;">var</span><span style="color: gray;"> </span><span style="color: blue;">i</span><span style="color: gray;">=</span><span style="color: maroon;">0</span><span style="color: gray;">, </span><span style="color: blue;">l</span><span style="color: gray;">=</span><span style="color: blue;">top_100_list</span><span style="color: gray;">.</span><span style="color: blue;">length</span><span style="color: gray;">; </span><span style="color: blue;">i</span><span style="color: gray;">&lt;</span><span style="color: blue;">l</span><span style="color: gray;">; </span><span style="color: blue;">i</span><span style="color: gray;">++</span><span style="color: olive;">)</span><span style="color: gray;"><br />
</span><span style="color: olive;">{</span><span style="color: gray;"><br />
</span><span style="color: blue;">top_100_li</span><span style="color: gray;"> += </span><span style="color: #8b0000;">‘</span><span style="color: red;">&lt;li&gt;</span><span style="color: #8b0000;">‘</span><span style="color: gray;"> + </span><span style="color: blue;">top_100_list</span><span style="color: olive;">[</span><span style="color: blue;">i</span><span style="color: olive;">]</span><span style="color: gray;"> + </span><span style="color: #8b0000;">‘</span><span style="color: red;">&lt;/li&gt;</span><span style="color: #8b0000;">‘</span><span style="color: gray;">;<br />
</span><span style="color: olive;">}</span><span style="color: gray;"><br />
$</span><span style="color: blue;">mylist</span><span style="color: gray;">.</span><span style="color: blue;">html</span><span style="color: olive;">(</span><span style="color: blue;">top_100_li</span><span style="color: olive;">)</span><span style="color: gray;">;</span></div>
</div>
<p>我们在插入之前将多个元素包裹进一个单独的父级节点会更快:</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: green;">var</span><span style="color: gray;"> </span><span style="color: blue;">top_100_list</span><span style="color: gray;"> = </span><span style="color: olive;">[</span><span style="color: gray;">...</span><span style="color: olive;">]</span><span style="color: gray;">, </span><span style="color: #ffa500;">//  assume this has 100 unique strings</span><span style="color: gray;"><br />
$</span><span style="color: blue;">mylist</span><span style="color: gray;"> = $</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">#mylist</span><span style="color: #8b0000;">‘</span><span style="color: olive;">)</span><span style="color: gray;">, </span><span style="color: #ffa500;">//  jQuery selects our &lt;ul&gt; element</span><span style="color: gray;"><br />
</span><span style="color: blue;">top_100_ul</span><span style="color: gray;"> = </span><span style="color: #8b0000;">‘</span><span style="color: red;">&lt;ul id=&#8221;#mylist&#8221;&gt;</span><span style="color: #8b0000;">‘</span><span style="color: gray;">; </span><span style="color: #ffa500;">// This will store our entire unordered  list</span><span style="color: gray;"></p>
<p></span><span style="color: green;">for</span><span style="color: gray;"> </span><span style="color: olive;">(</span><span style="color: green;">var</span><span style="color: gray;"> </span><span style="color: blue;">i</span><span style="color: gray;">=</span><span style="color: maroon;">0</span><span style="color: gray;">, </span><span style="color: blue;">l</span><span style="color: gray;">=</span><span style="color: blue;">top_100_list</span><span style="color: gray;">.</span><span style="color: blue;">length</span><span style="color: gray;">; </span><span style="color: blue;">i</span><span style="color: gray;">&lt;</span><span style="color: blue;">l</span><span style="color: gray;">; </span><span style="color: blue;">i</span><span style="color: gray;">++</span><span style="color: olive;">)</span><span style="color: gray;"><br />
</span><span style="color: olive;">{</span><span style="color: gray;"><br />
</span><span style="color: blue;">top_100_ul</span><span style="color: gray;"> += </span><span style="color: #8b0000;">‘</span><span style="color: red;">&lt;li&gt;</span><span style="color: #8b0000;">‘</span><span style="color: gray;"> + </span><span style="color: blue;">top_100_list</span><span style="color: olive;">[</span><span style="color: blue;">i</span><span style="color: olive;">]</span><span style="color: gray;"> + </span><span style="color: #8b0000;">‘</span><span style="color: red;">&lt;/li&gt;</span><span style="color: #8b0000;">‘</span><span style="color: gray;">;<br />
</span><span style="color: olive;">}</span><span style="color: gray;"><br />
</span><span style="color: blue;">top_100_ul</span><span style="color: gray;"> += </span><span style="color: #8b0000;">‘</span><span style="color: red;">&lt;/ul&gt;</span><span style="color: #8b0000;">‘</span><span style="color: gray;">; </span><span style="color: #ffa500;">// //关闭无序列表</span><span style="color: gray;"></p>
<p>$</span><span style="color: blue;">mylist</span><span style="color: gray;">.</span><span style="color: blue;">replaceWith</span><span style="color: olive;">(</span><span style="color: blue;">top_100_ul</span><span style="color: olive;">)</span><span style="color: gray;">;</span></div>
</div>
<p>如果你做了以上几条还是担心有性能问题,那么:</p>
<ul>
<li>试试jquery的 clone() 方法, 它会创建一个节点树的副本, 它允许以”离线”的方式进行dom操作,  当你操作完成后再将其放回到节点树里.</li>
<li>使用<a href="http://www.devguru.com/technologies/xmldom/quickref/obj_documentFragment.html" target="_blank">DOM DocumentFragments</a>. 正如jQuery作者所言,  它的性能要明显优于直接的dom操作.</li>
</ul>
<h3 id="leverage-event-delegation">7. 冒泡</h3>
<p>除非在特殊情况下, 否则每一个js事件(例如:click, mouseover, 等.)都会冒泡到父级节点.  当我们需要给多个元素调用同个函数时这点会很有用.</p>
<p>代替这种效率很差的多元素事件监听的方法就是, 你只需向它们的父节点绑定一次, 并且可以计算出哪个节点触发了事件.</p>
<p>例如, 我们要为一个拥有很多输入框的表单绑定这样的行为: 当输入框被选中时为它添加一个class</p>
<p>像这样绑定事件是低效的:</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: gray;">$</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">#entryform input).bind(</span><span style="color: #8b0000;">‘</span><span style="color: blue;">focus</span><span style="color: #8b0000;">‘</span><span style="color: red;">,  function(){<br />
$(this).addClass(</span><span style="color: #8b0000;">‘</span><span style="color: blue;">selected</span><span style="color: #8b0000;">‘</span><span style="color: red;">);<br />
}).bind(</span><span style="color: #8b0000;">‘</span><span style="color: blue;">blur</span><span style="color: #8b0000;">‘</span><span style="color: red;">, function(){<br />
$(this).removeClass(</span><span style="color: #8b0000;">‘</span><span style="color: blue;">selected</span><span style="color: #8b0000;">‘</span><span style="color: red;">);<br />
});</span></div>
</div>
<p>我们需要在父级监听获取焦点和失去焦点的事件:</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: gray;">$</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">#entryform</span><span style="color: #8b0000;">‘</span><span style="color: olive;">)</span><span style="color: gray;">.</span><span style="color: blue;">bind</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">focus</span><span style="color: #8b0000;">‘</span><span style="color: gray;">, </span><span style="color: green;">function</span><span style="color: olive;">(</span><span style="color: blue;">e</span><span style="color: olive;">){</span><span style="color: gray;"><br />
</span><span style="color: green;">var</span><span style="color: gray;"> </span><span style="color: blue;">cell</span><span style="color: gray;"> = $</span><span style="color: olive;">(</span><span style="color: blue;">e</span><span style="color: gray;">.</span><span style="color: blue;">target</span><span style="color: olive;">)</span><span style="color: gray;">; </span><span style="color: #ffa500;">// e.target grabs the node that  triggered the event.</span><span style="color: gray;"><br />
</span><span style="color: blue;">cell</span><span style="color: gray;">.</span><span style="color: blue;">addClass</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">selected</span><span style="color: #8b0000;">‘</span><span style="color: olive;">)</span><span style="color: gray;">;<br />
</span><span style="color: olive;">})</span><span style="color: gray;">.</span><span style="color: blue;">bind</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">blur</span><span style="color: #8b0000;">‘</span><span style="color: gray;">, </span><span style="color: green;">function</span><span style="color: olive;">(</span><span style="color: blue;">e</span><span style="color: olive;">){</span><span style="color: gray;"><br />
</span><span style="color: green;">var</span><span style="color: gray;"> </span><span style="color: blue;">cell</span><span style="color: gray;"> = $</span><span style="color: olive;">(</span><span style="color: blue;">e</span><span style="color: gray;">.</span><span style="color: blue;">target</span><span style="color: olive;">)</span><span style="color: gray;">;<br />
</span><span style="color: blue;">cell</span><span style="color: gray;">.</span><span style="color: blue;">removeClass</span><span style="color: olive;">(</span><span style="color: #8b0000;">‘</span><span style="color: red;">selected</span><span style="color: #8b0000;">‘</span><span style="color: olive;">)</span><span style="color: gray;">;<br />
</span><span style="color: olive;">})</span><span style="color: gray;">;</span></div>
</div>
<p>父级元素扮演了一个调度员的角色, 它可以基于目标元素绑定事件. 如果你发现你给很多元素绑定了同一个事件监听, 那么你肯定哪里做错了.</p>
<h3 id="eliminate-query-waste">8. 消除无效查询</h3>
<p>尽管jquery可以很优雅的处理没有匹配元素的情况, 但它还是需要花费时间去寻找. 如果你整站只有一个全局js,  那么极有可能把所有的jquery函数塞进$(document)ready(function(){//所有你引以为傲的代码})里.</p>
<p>只运行在页面里用到的函数. 大多数有效的方法就是使用行内初始化函数, 这样你的模板就能准确的控制何时何处该执行js.</p>
<p>例如, 你的”文章”页面模板, 你可能会引用如下的代码在body结束处:</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: gray;">&lt;</span><span style="color: blue;">script</span><span style="color: gray;"> </span><span style="color: blue;">type</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">text/javascript&gt;<br />
mylib.article.init();<br />
&lt;/script&gt;<br />
&lt;/body&gt;</span></div>
</div>
<p>如果你的页面模板包含一些多变的模块可能不会出现在页面中, 或者为了视觉呈现的原因你需要它们能够快速加载,  你可以将初始化函数紧跟在模块之后.</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: olive;">&lt;</span><span style="color: green;">ul</span><span style="color: gray;"> </span><span style="color: #00008b;">id</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">traffic_light</span><span style="color: #8b0000;">&#8220;</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;</span><span style="color: green;">li</span><span style="color: olive;">&gt;&lt;</span><span style="color: green;">input</span><span style="color: gray;"> </span><span style="color: #00008b;">type</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">radio</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">class</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">on</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">name</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">light</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">value</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">red</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: olive;">/&gt;</span><span style="color: gray;"> Red</span><span style="color: olive;">&lt;/</span><span style="color: green;">li</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;</span><span style="color: green;">li</span><span style="color: olive;">&gt;&lt;</span><span style="color: green;">input</span><span style="color: gray;"> </span><span style="color: #00008b;">type</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">radio</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">class</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">off</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">name</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">light</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">value</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">yellow</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: olive;">/&gt;</span><span style="color: gray;"> Yellow</span><span style="color: olive;">&lt;/</span><span style="color: green;">li</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;</span><span style="color: green;">li</span><span style="color: olive;">&gt;&lt;</span><span style="color: green;">input</span><span style="color: gray;"> </span><span style="color: #00008b;">type</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">radio</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">class</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">off</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">name</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">light</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: #00008b;">value</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">green</span><span style="color: #8b0000;">&#8220;</span><span style="color: gray;"> </span><span style="color: olive;">/&gt;</span><span style="color: gray;"> Green</span><span style="color: olive;">&lt;/</span><span style="color: green;">li</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;/</span><span style="color: green;">ul</span><span style="color: olive;">&gt;</span><span style="color: gray;"><br />
</span><span style="color: olive;">&lt;</span><span style="color: green;">script</span><span style="color: gray;"> </span><span style="color: #00008b;">type</span><span style="color: gray;">=</span><span style="color: #8b0000;">&#8220;</span><span style="color: red;">text/javascript&gt;<br />
mylib.traffic_light.init();<br />
&lt;/script&gt;</span></div>
</div>
<p>你的全局js库可能会是这样子的:</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: green;">var</span><span style="color: gray;"> </span><span style="color: blue;">mylib</span><span style="color: gray;"> =<br />
</span><span style="color: olive;">{</span><span style="color: gray;"><br />
</span><span style="color: blue;">article_page</span><span style="color: gray;"> :<br />
</span><span style="color: olive;">{</span><span style="color: gray;"><br />
</span><span style="color: blue;">init</span><span style="color: gray;"> : </span><span style="color: green;">function</span><span style="color: olive;">()</span><span style="color: gray;"><br />
</span><span style="color: olive;">{</span><span style="color: gray;"><br />
</span><span style="color: #ffa500;">// Article page specific  jQuery functions.</span><span style="color: gray;"><br />
</span><span style="color: olive;">}</span><span style="color: gray;"><br />
</span><span style="color: olive;">}</span><span style="color: gray;">,<br />
</span><span style="color: blue;">traffic_light</span><span style="color: gray;"> :<br />
</span><span style="color: olive;">{</span><span style="color: gray;"><br />
</span><span style="color: blue;">init</span><span style="color: gray;"> : </span><span style="color: green;">function</span><span style="color: olive;">()</span><span style="color: gray;"><br />
</span><span style="color: olive;">{</span><span style="color: gray;"><br />
</span><span style="color: #ffa500;">// Traffic light  specific jQuery functions.</span><span style="color: gray;"><br />
</span><span style="color: olive;">}</span><span style="color: gray;"><br />
</span><span style="color: olive;">}</span><span style="color: gray;"><br />
</span><span style="color: olive;">}</span></div>
</div>
<h3 id="defer-to-window-load">9. 推迟到 $(window).load</h3>
<p>jquery对于开发者来说有一个很诱人的东西, 可以把任何东西挂到$(document).ready下冒充事件.  在大多数例子中你都会发现这样的情况.</p>
<p>尽管$(document).rady 确实很有用, 它可以在页面渲染时,其它元素还没下载完成就执行.  如果你发现你的页面一直是载入中的状态, 很有可能就是$(document).ready函数引起的.</p>
<p>你可以通过将jquery函数绑定到$(window).load 事件的方法来减少页面载入时的cpu使用率.  它会在所有的html(包括iframe)被下载完成后执行.</p>
<div class="wp_syntax">
<div class="hl-main"><span style="color: gray;">$</span><span style="color: olive;">(</span><span style="color: teal;">window</span><span style="color: olive;">)</span><span style="color: gray;">.</span><span style="color: blue;">load</span><span style="color: olive;">(</span><span style="color: green;">function</span><span style="color: olive;">(){</span><span style="color: gray;"><br />
</span><span style="color: #ffa500;">//  页面完全载入后才初始化的jQuery函数.</span><span style="color: gray;"><br />
</span><span style="color: olive;">})</span><span style="color: gray;">;</span></div>
</div>
<p>多余的功能例如拖放, 视觉特效和动画, 预载入隐藏图像,等等. 都是适合这种技术的场合.</p>
<h3 id="compress-your-js">10. 压缩js</h3>
<p>推荐一个js在线压缩地址: <a href="http://dean.edwards.name/packer/" target="_blank">http://dean.edwards.name/packer/</a></p>
<h3 id="learn-the-library">11. 全面掌握jquery库</h3>
<p>知己知彼, 百战百胜.  只有更深入的了解jQuery才能更灵活的使用它.  这里提供一个<a href="http://www.artzstudio.com/files/jquery-rules/jquery_1.3_cheatsheet_v1.pdf" target="_blank">jQuery的速查手册</a>, 可以打印出来随身携带.  要是有能力将jQuery源码通读一遍那就更好了.</p>
<p>原文：<a href="http://www.artzstudio.com/2009/04/jquery-performance-rules/#use-tags-before-classes" target="_blank">http://www.artzstudio.com/2009/04/jquery-performance-rules/#use-tags-before-classes</a></div>
]]></content:encoded>
			<wfw:commentRss>http://www.xincss.com/?feed=rss2&amp;p=161</wfw:commentRss>
		</item>
		<item>
		<title>Web 开发与设计之 Google 兵器谱[转]</title>
		<link>http://www.xincss.com/?p=154</link>
		<comments>http://www.xincss.com/?p=154#comments</comments>
		<pubDate>Mon, 19 Apr 2010 02:39:23 +0000</pubDate>
		<dc:creator>朝心</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.xincss.com/?p=154</guid>
		<description><![CDATA[Google 的使命是 Web，在 Google 眼中，未来的一切应用都将 Web 化，一直以来，Google 为 Web  开发与设计者推出了大量免费工具，让他们更好地创建，维护，改善他们的 Web  站点，这些工具包含了开发，分析，维护，修补等等用途，本文将介绍15款这样的工具。
1. Google  Chrome Developer Tools

<span class="readmore"><a href="http://www.xincss.com/?p=154" title="Web 开发与设计之 Google 兵器谱[转]">阅读全文（1622字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>Google 的使命是 Web，在 Google 眼中，未来的一切应用都将 Web 化，一直以来，Google 为 Web  开发与设计者推出了大量免费工具，让他们更好地创建，维护，改善他们的 Web  站点，这些工具包含了开发，分析，维护，修补等等用途，本文将介绍15款这样的工具。</p>
<p>1. <a href="http://blog.chromium.org/2009/06/developer-tools-for-google-chrome.html">Google  Chrome Developer Tools</a><br />
<a href="http://blog.chromium.org/2009/06/developer-tools-for-google-chrome.html"><img class="article" src="http://images.sixrevisions.com/2010/04/17-03_developer_tools.png" alt="" /></a></p>
<p>这是  Google Chrome 中类似 Firefox Firebug 以及 <a href="http://sixrevisions.com/tools/firefox_web_developer_extension_toolbar/">Web  Developer Toolbar</a> 的一个扩展，用于调试你的网页，包含一个 DOM 探测器，一个 JavaScript  调试台，可以设置执行断点和跟踪，一个类似 YSlow 的执行分析器。<br />
2. <a href="https://www.google.com/webmasters/tools/home?hl=en">Webmaster Tools</a><br />
<a href="https://www.google.com/webmasters/tools/home?hl=en"><img class="article" src="http://images.sixrevisions.com/2010/04/17-04_webmaster_tools.png" alt="" /></a></p>
<p>一个对网站拥有者来说非常有用的程序，可以帮助你从各个角度改善自己的站点。可以发现站点中的恶意程序，发现搜索引擎爬虫遇到的错误，可以发现你的  HTML 代码中需要改进的部分。还可以帮你发现你的站点中最热门的网页，并发现你站点中的错误链接。<br />
3. <a href="http://code.google.com/webtoolkit/">Google Web Toolkit</a><br />
<a href="http://code.google.com/webtoolkit/"><img class="article" src="http://images.sixrevisions.com/2010/04/17-05_gwt.png" alt="" /></a></p>
<p>Google  Web Tootlkit （GWT）是一个 Web 开发基础框架，为开发者提供了一些基础类库，GWT 同 Google 的其它产品，如  AdWords，FeedBurner，Google Ajax 类库等紧密集成，<a href="http://code.google.com/webtoolkit/doc/latest/tutorial/">这里有一个 Google Docs  教程</a>。<br />
4. <a href="http://www.google.com/codesearch">Google Code Search</a><br />
<a href="http://www.google.com/codesearch"><img class="article" src="http://images.sixrevisions.com/2010/04/17-06_code_search.png" alt="" /></a></p>
<p>帮助开发者搜索代码，支持正则表达式搜索，或在一个<a href="http://www.google.com/codesearch/advanced_code_search">高级搜索界面</a>中，很直观地搜索那些可能会让你事半功倍的公共代码。<br />
5.  <a href="http://code.google.com/speed/page-speed/">Page Speed</a><br />
<a href="http://code.google.com/speed/page-speed/"><img class="article" src="http://images.sixrevisions.com/2010/04/17-07_page_speed.png" alt="" /></a></p>
<p>Google  现在已经<a href="http://www.mattcutts.com/blog/site-speed/">将网站加载速度算到搜索排名算法</a>中，<em>Page  Speed</em> 可以帮助你分析你的网站性能，基于<a href="http://code.google.com/speed/page-speed/docs/rules_intro.html"> Google Web  性能最佳实践</a>。<br />
6. <a href="http://browsersize.googlelabs.com/">Browser Size</a><br />
<a href="http://browsersize.googlelabs.com/"><img class="article" src="http://images.sixrevisions.com/2010/04/17-08_browser_size.png" alt="" /></a></p>
<p>该工具帮你分析，你的网页在不同浏览器，不同浏览尺寸下的显示状况，非常适合看看自己的网页在不滚动的情况下，在各种浏览尺寸下显示到哪里。<br />
7.  <a href="http://code.google.com/apis/ajaxlibs/">Google Ajax Libraries API</a><br />
<a href="http://code.google.com/apis/ajaxlibs/"><img class="article" src="http://images.sixrevisions.com/2010/04/17-09_ajax_libraries.png" alt="" /></a></p>
<p><em>Google  Ajax Libraries API</em> 包含多种流行的 JavaScript 库（目前有10种），并可以从 Google 高性能的 CDN  网络中加载，既节省了你的服务器带宽，同时，由于用户可能已经在别的网站加载过这个库，因此可以显著加快这些库的加载速度。<br />
8. <a href="http://www.google.com/websiteoptimizer/b/index.html">Google Website  Optimizer</a><br />
<a href="http://www.google.com/websiteoptimizer/b/index.html"><img class="article" src="http://images.sixrevisions.com/2010/04/17-02_website_optimizer.jpg" alt="" /></a></p>
<p>接着这个工具，你可以对自己的网站进行<a href="http://sixrevisions.com/user-interface/an-introduction-to-website-split-testing/"> A/B 测试</a>，并对网站进行优化。<br />
9. <a href="http://sites.google.com/">Sites</a><br />
<a href="http://sites.google.com/"><img class="article" src="http://images.sixrevisions.com/2010/04/17-10_google_sites.png" alt="" /></a></p>
<p>顾名思义，Google  Sites 可以帮你创建一个托管的网站，可以将包括 YouTube，幻灯，Gmail 日历，Google Gear 小程序，Google Docs  一类的应用集成其中。如果将站点设置为不公开，你可以将这个工具用于个人文档工具。<br />
10. <a href="http://code.google.com/webtoolkit/speedtracer/">Speed Tracer</a><br />
<a href="http://code.google.com/webtoolkit/speedtracer/"><img class="article" src="http://images.sixrevisions.com/2010/04/17-12_speed_tracer.jpg" alt="" /></a></p>
<p>以可视化方式，帮你分析你的  Web 程序中各种元素的加载或运行速度与实践，<a href="http://code.google.com/webtoolkit/speedtracer/speed-tracer-examples.html">这里有一些关于这个工具的用例</a>。<br />
11.  <a href="http://code.google.com/hosting/">Project Hosting</a><br />
<a href="http://code.google.com/hosting/"><img class="article" src="http://images.sixrevisions.com/2010/04/17-13_project_hosting.png" alt="" /></a></p>
<p>这是  Google Code 项目的一部分，可以帮你<a href="http://sixrevisions.com/resources/15-fantastic-finds-on-the-google-code-repository/">托管你的开源项目</a>，Web  开发与设计者还可以在这里找到大量现成的项目以供借鉴或套用。<br />
12. <a href="http://code.google.com/appengine/">Google App Engine</a><br />
<a href="http://code.google.com/appengine/"><img class="article" src="http://images.sixrevisions.com/2010/04/17-11_app_engine.png" alt="" /></a></p>
<p>这是一个可用来托管自己的  Web 程序的地方，甚至可以使用自己的域名。这里有一个教程，讲解如何<a href="http://code.google.com/appengine/docs/python/gettingstarted/">使用 Google  App Engine 来创建一个留言本</a>。Google App Engine 中已经<a href="http://appgallery.appspot.com/">托管了大量的 Web 程序</a>。<br />
13. <a href="http://code.google.com/apis/charttools/">Google Chart Tools</a><br />
<a href="http://code.google.com/apis/charttools/"><img class="article" src="http://images.sixrevisions.com/2010/04/17-14_chart_tools.png" alt="" /></a></p>
<p><em>Google  Chart Tools</em> 可以帮助你将数据转化为图表，并嵌入自己的网页，这些图表还拥有交互功能，可以钻入，或通过鼠标盘旋获取详细信息，还可以实现动画图表。<br />
14. <a href="http://code.google.com/closure/">Closure Tools</a><br />
<a href="http://code.google.com/closure/"><img class="article" src="http://images.sixrevisions.com/2010/04/17-15_closure_compiler.png" alt="" /></a></p>
<p><em>Closure  Tools</em> 是 Google Labs 的一个开发套件，包含3个工具，闭包编译器（一个 JavaScript 优化器），闭包函数库（用于 Ajax  程序开发）以及一个用于动态生成 HTML 的闭包模板。<br />
15. <a href="http://www.google.com/analytics/">Google Analytics</a><br />
<a href="http://www.google.com/analytics/"><img class="article" src="http://images.sixrevisions.com/2010/04/17-16_google_analytics.png" alt="" /></a></p>
<p>经典的  Google 流量分析统计工具。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xincss.com/?feed=rss2&amp;p=154</wfw:commentRss>
		</item>
		<item>
		<title>Google 推出中国大陆服务可用报告，每天更新</title>
		<link>http://www.xincss.com/?p=150</link>
		<comments>http://www.xincss.com/?p=150#comments</comments>
		<pubDate>Tue, 23 Mar 2010 01:21:27 +0000</pubDate>
		<dc:creator>朝心</dc:creator>
		
		<category><![CDATA[未分类]]></category>

		<guid isPermaLink="false">http://www.xincss.com/?p=150</guid>
		<description><![CDATA[Google在退出中国大陆的同时，推出了一个叫做“Google China service availability”的服务，类似App Engine Status一样的界面，每天记录Google旗下所有服务在中国大陆的使用状况。绿钩表示可正常使用，红叉表示无法访问，黄扳手表示部分无法访问。
好吧，其实Web、Images、News也会根据关键字造成部分无法访问，所以严格的说，只有Gmail和Ads可以打绿钩钩的……
<span class="readmore"><a href="http://www.xincss.com/?p=150" title="Google 推出中国大陆服务可用报告，每天更新">阅读全文（241字）</a></span>]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone size-full wp-image-151" title="google-china-service-availability" src="http://www.xincss.com/wp-content/uploads/2010/03/google-china-service-availability.jpg" alt="google-china-service-availability" width="506" height="440" /></p>
<p>Google在退出中国大陆的同时，推出了一个叫做“Google China service availability”的服务，类似App Engine Status一样的界面，每天记录Google旗下所有服务在中国大陆的使用状况。绿钩表示可正常使用，红叉表示无法访问，黄扳手表示部分无法访问。</p>
<p>好吧，其实Web、Images、News也会根据关键字造成部分无法访问，所以严格的说，只有Gmail和Ads可以打绿钩钩的……</p>
<p><a href="http://www.google.com/prc/report.html" target="_blank">http://www.google.com/prc/report.html</a><script src="http://www.google.org.cn/wp-content/plugins/top-10/top-10-addcount.js.php?top_ten_id=19282" type="text/javascript"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xincss.com/?feed=rss2&amp;p=150</wfw:commentRss>
		</item>
		<item>
		<title>Photoshop 导致 系统ESC键无效</title>
		<link>http://www.xincss.com/?p=137</link>
		<comments>http://www.xincss.com/?p=137#comments</comments>
		<pubDate>Thu, 11 Mar 2010 02:20:27 +0000</pubDate>
		<dc:creator>朝心</dc:creator>
		
		<category><![CDATA[点点滴滴]]></category>

		<guid isPermaLink="false">http://www.xincss.com/?p=137</guid>
		<description><![CDATA[忘记了从什么时候起，系统里一些软件的ESC 键经常会失效（单独ESC会无效，Shift+Esc等组合键没问题），对于习惯了用ESC键来退出窗口的TM、IrfanView来说，感觉非常的别扭！开始以为是软件问题，重装过若干次后，问题依旧。
偶然发现，造成ESC键失效的罪魁祸首竟然是PHOTOSHOP（目前用的是CS 4），无奈，开始GOOGLE
最后凭着半桶水的英文，终于在某条评论中看到一丝曙光，是Plug-ins 插件文件夹的问题，于是对里面的插件一个一个实验（CS 4自带插件，未安装其他），锁定了问题插件：Extensions、Measurements。
<span class="readmore"><a href="http://www.xincss.com/?p=137" title="Photoshop 导致 系统ESC键无效">阅读全文（372字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>忘记了从什么时候起，系统里一些软件的ESC 键经常会失效（单独ESC会无效，Shift+Esc等组合键没问题），对于习惯了用ESC键来退出窗口的TM、IrfanView来说，感觉非常的别扭！开始以为是软件问题，重装过若干次后，问题依旧。</p>
<p>偶然发现，造成ESC键失效的罪魁祸首竟然是PHOTOSHOP（目前用的是CS 4），无奈，开始GOOGLE</p>
<p>最后凭着半桶水的英文，终于在某条评论中看到一丝曙光，是Plug-ins 插件文件夹的问题，于是对里面的插件一个一个实验（CS 4自带插件，未安装其他），锁定了问题插件：Extensions、Measurements。</p>
<p>因为自己PS只是拿来切图，这两插件估计没什么用，直接把这两个文件夹删了。问题解决，俺的 ESC 键终于又回来了~</p>
<p>【再次杯具，发现PS进行编辑后，如改变图片大小，ESC又不能用了……留帖待处理-_-】</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xincss.com/?feed=rss2&amp;p=137</wfw:commentRss>
		</item>
		<item>
		<title>电子商务类站点终极资源大全（下）</title>
		<link>http://www.xincss.com/?p=123</link>
		<comments>http://www.xincss.com/?p=123#comments</comments>
		<pubDate>Thu, 25 Feb 2010 01:28:26 +0000</pubDate>
		<dc:creator>朝心</dc:creator>
		
		<category><![CDATA[闲来无事]]></category>

		<guid isPermaLink="false">http://www.xincss.com/?p=123</guid>
		<description><![CDATA[这是电 子商务类站点终极资源大全的第三部分，本部分继续搜集海量的设计资源，包含与电子商务网站设计相关的模板，主题，图标，素材，另外，本部分还包含 一些电子商务网站设计教程。本文的第一第二部分请参阅：电子商务类站点终 极资源大全（上）（中）。

3. 图标与设计素材(续)
<span class="readmore"><a href="http://www.xincss.com/?p=123" title="电子商务类站点终极资源大全（下）">阅读全文（1635字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>这是<a href="http://www.comsharp.com/GetKnowledge/zh-CN/CMS_K903.aspx">电 子商务类站点终极资源大全</a>的第三部分，本部分继续搜集海量的设计资源，包含与电子商务网站设计相关的模板，主题，图标，素材，另外，本部分还包含 一些电子商务网站设计教程。本文的第一第二部分请参阅：电子商务类站点终 极资源大全（<a href="http://www.xincss.com/?p=118">上</a>）（<a href="http://www.xincss.com/?p=120">中</a>）。</p>
<p><img src="http://www.netlogical.com/images/e-commerce.jpg" alt="" width="450" height="358" /></p>
<h3 class="subtitle">3. 图标与设计素材(续)</h3>
<h4>C. 通用图标（续）</h4>
<p><a href="http://graphicriver.net/item/200-mini-icons/77649">200 Mini Icons</a> – 一大套小图标，包含购物车等</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/200miniicons.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/web-icon-set/74521">Web Icon Set</a> – 蓝色系的</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/bluewebicons.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/glossy-internet-icons-set-4/77468">Glossy Internet Icons – Set 4</a> – 方方正正的</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/glossyinterneticons.jpg" alt="" /></p>
<p><a href="http://dryicons.com/free-icons/preview/colorful-stickers-part-3-icons-set/">Colorful Stickers Part 3 Icon Set</a> – 即时贴形的</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/colorfulstickerspart3.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/collection-of-50-web-icons-flames-3-styles/74789">Flames Web Icons</a> – 流火形的</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/flameswebicons.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/glossy-icon-set/75508">Glossy Icon Set</a> – 梅红色系的</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/fuschiawebicons.jpg" alt="" /></p>
<p><a href="http://dryicons.com/free-icons/preview/futuristica-icons-set/">Futuristica Icons</a> – 机器风的</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/futuristica.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/shopping-icons-smooth-series/67616">Shopping Icons – Smooth Series</a> – 很精致的</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/smoothshoppingicons.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/free-shipping-icon/67081">Free Shipping Icon</a> – 矢量包装箱</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/freeshippingicon.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/web-assortment/65650">Web Assortment</a> – 又一套</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/webassortment.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/halloween-shop-icons/62633">Halloween Shop Icons</a> – 鬼节风的</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/halloweenshop.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/free-shipping-icon/53798">Free Shipping Icon</a> – 包装箱</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/orangefreeshipping.jpg" alt="" /></p>
<h4>D. 信用卡图标</h4>
<p><a href="http://www.iconarchive.com/show/finance-icons-by-visualpharm/credit-card-icon.html">Credit Card Icon</a> – 256×256 PNG 格式的信用卡图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/creditcardicon.jpg" alt="" /></p>
<p><a href="http://www.mezzoblue.com/icons/chalkwork/payments/">Chalkwork Payments (Free)</a> – 来自 Mezzoblue 的信用卡图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/chalkworkpayments.jpg" alt="" /></p>
<p><a href="http://www.titanicons.com/freeicons-ecommerce.html">Free Icons – e-commerce</a> – Visa, MasterCard, and American Express 三大信用卡</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/freeiconsecommerce.jpg" alt="" /></p>
<p><a href="http://www.iconeasy.com/iconset/credit-card-icons-icons/">Credit Card Icons Set</a> – 72像素的信用卡图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/creditcardiconsset.jpg" alt="" /></p>
<p><a href="http://www.iconfinder.net/icondetails/35601/96/">Credit Cards</a> – 通用信用卡图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/genericcard.jpg" alt="" /></p>
<h4>E. 国旗图标</h4>
<p><a href="http://www.iconspedia.com/pack/country-flags/">Country Flag Icons</a> – 一套漂亮的国旗图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/countryflagicons.jpg" alt="" /></p>
<p><a href="http://365icon.com/icon-styles/ethnic/classic2/">243 Country Flag Icons</a> – 大量国旗图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/243countryflags.jpg" alt="" /></p>
<p><a href="http://www.inkarcade.com/shop/icons/world-flag-icons-pack/prod_261.html">World Flag Icons Pack</a> – 一大套国旗图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/worldflagiconspack.jpg" alt="" /></p>
<p><a href="http://www.veryicon.com/icons/flag/xp-flags/">XP Flags Icon</a> – 飘动的国旗图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/xpflagsicon.jpg" alt="" /></p>
<p><a href="http://www.famfamfam.com/lab/icons/flags/">Flag Icons</a> – 247个国旗图标，含 GIF 和 PNG</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/flagicons.jpg" alt="" /></p>
<p><a href="http://vathanx.deviantart.com/art/World-Flag-Icons-PNG-108083900">World Flag Orbs</a> – 圆牌状国旗图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/worldflagorbs.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/flags/75307">Flags</a> – 圆形国旗图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/flags.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/110-famous-city-flag-icons/75920">110 Famous City Flag Icons</a> – 城市图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/cityflags.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/50-flag-icons/72881">50 Flag Icons</a> – 圆角国旗图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/50flagicons.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/rounded-flags-icon/68826">Rounded Flag Icons</a> – 一套圆形立体国旗图标，含 124&#215;124, 48&#215;48, 24&#215;24 三种尺寸</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/roundedflags.jpg" alt="" /></p>
<h4>F. 购物车，购物篮图标</h4>
<p><a href="http://www.iconarchive.com/show/finance-icons-by-visualpharm/shopping-cart-icon.html">Shopping Basket Icon</a> – 256&#215;256 尺寸的购物篮</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/basket.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/shopping-paper-bags-icons/34030">Shopping Paper Bags Icons</a> – 一套购物袋图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/shoppingpaperbags.jpg" alt="" /></p>
<p><a href="http://cssglobe.com/post/3949/interview-with-logo-designer-luka-pensa/">Free Icon Set</a> – 不同的购物车图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/lukapensa.jpg" alt="" /></p>
<p><a href="http://ooflyingmoonoo.deviantart.com/art/Shopping-Basket-Icons-3D-69391004">Shopping Basket Icons 3D</a> – 3维购物篮图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/3dshoppingbaskets.jpg" alt="" /></p>
<p><a href="http://www.istockphoto.com/stock-illustration-11070868-bubble-icon-series-shopping-baskets-and-carts.php">Bubble Icon Series – Shopping Baskets and Carts</a> – 来自 iStockPhoto 的购物篮，购物车图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/bubbleiconseries.jpg" alt="" /></p>
<p><a href="http://www.freeiconsdownload.com/Free_Downloads.asp?id=402">Shop Cart Icons</a> – 一套购物车</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/shopcarticons.jpg" alt="" /></p>
<p><a href="http://www.bartelme.at/journal/archive/shopping_cart_icon">Shopping Cart Icon</a> – 很精致的购物车图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/bartelmeshoppingcart.jpg" alt="" /></p>
<p><a href="http://songofelf.deviantart.com/art/e-shop-icon-83545094">E-Shop Icon</a> – 另一套</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/eshopicon.jpg" alt="" /></p>
<p><a href="http://www.iconfinder.net/icondetails/37149/96/">Shopping Cart</a> – 购物车</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/shoppingcartwheely.jpg" alt="" /></p>
<p><a href="http://www.iconfinder.net/icondetails/37081/48/">Shopping Cart</a> – 小购物车图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/tinyshoppingcart.jpg" alt="" /></p>
<p><a href="http://www.iconfinder.net/icondetails/40666/128/">3D Shopping Cart</a> – 3D购物车</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/3dshoppingcart.jpg" alt="" /></p>
<h3 class="subtitle">4. 教程</h3>
<h4>A. 通用教程</h4>
<p><a href="http://designm.ag/tutorials/design-ecommerce-website-2/">Design an e-commerce Website in Photoshop</a> – 在 Photoshop 中设计电子商务站点。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/designinphotoshop.jpg" alt="" /></p>
<p><a href="http://ithemes.com/how-to-build-an-online-store-with-wordpress/">How to Build an Online Store with WordPress</a> – 怎样用 WP 设计网店</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/onlinestorewithwordpress.jpg" alt="" /></p>
<p><a href="http://wordpress.tv/2009/06/08/create-an-ecommerce-website-with-wordpress-in-under-5-minutes/">How To Create an e-commerce Websit with WordPress in Under 5 Minutes</a> – 5分钟做一个 WP 电子商务网站</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/wordpresstvhowto.jpg" alt="" /></p>
<h4>B. 按钮</h4>
<p><a href="http://multichannelmerchant.com/ecommerce/0713-add-to-cart-button/">Add-to-Cart Buttons: Bigger is Better</a> – 地址商务网站的购买按钮，越大越好</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/biggerisbetter.jpg" alt="" /></p>
<p><a href="http://inspectelement.com/tutorials/how-to-design-buttons-to-help-improve-usability/">How to Design Buttons to Help Improve Usability</a> – 如何设计按钮以提升易用性</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/improveusability.jpg" alt="" /></p>
<p><a href="http://www.internetmarketersarsenal.com/blog/add-to-cart-button-tutorial-the-best-converting-buy-now-button-to-use/">Add to Cart Button Tutorial – The Best Converting Button to Use</a> – 设计购买按钮</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/belcherbutton.jpg" alt="" /></p>
<p><a href="http://monc.se/kitchen/59/scalable-css-buttons-using-png-and-background-colors">Scalable CSS Buttons Using PNG and Background Colors</a> – 基于 CSS 的按钮</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/scalablebuttons.jpg" alt="" /></p>
<p><a href="http://www.psdmaster.com/?p=30">Add to Cart Photoshop Tutorial</a> – 购买按钮 Photoshop 教程</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/roundedbutton.jpg" alt="" /></p>
<p><a href="http://www.blogwatts.com/tutorials/tutorial-web-20-button/">Web 2.0 Button</a> – Web 2.0 风格的按钮</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/web20button.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xincss.com/?feed=rss2&amp;p=123</wfw:commentRss>
		</item>
		<item>
		<title>电子商务类站点终极资源大全（中）</title>
		<link>http://www.xincss.com/?p=120</link>
		<comments>http://www.xincss.com/?p=120#comments</comments>
		<pubDate>Thu, 25 Feb 2010 01:26:17 +0000</pubDate>
		<dc:creator>朝心</dc:creator>
		
		<category><![CDATA[闲来无事]]></category>

		<guid isPermaLink="false">http://www.xincss.com/?p=120</guid>
		<description><![CDATA[新闻来源:hongkiat.com
这是电子商 务类站点终极资源大全的第二部分，本部分搜集的是海量的设计资源，包含与电子商务网站设计相关的模板，主题，图标，素材等。本文的第一第三部分请 参阅：电子商务类站点终 极资源大全（上）（下）。 
3. 图标与设计素材 A. 电子商务网站主题
<span class="readmore"><a href="http://www.xincss.com/?p=120" title="电子商务类站点终极资源大全（中）">阅读全文（1452字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>新闻来源:hongkiat.com<br />
这是<a href="http://www.comsharp.com/GetKnowledge/zh-CN/CMS_K903.aspx">电子商 务类站点终极资源大全</a>的第二部分，本部分搜集的是海量的设计资源，包含与电子商务网站设计相关的模板，主题，图标，素材等。本文的第一第三部分请 参阅：电子商务类站点终 极资源大全（<a href="http://www.xincss.com/?p=118">上</a>）（<a href="http://www.xincss.com/?p=123">下</a>）。 <img src="http://www.netlogical.com/images/e-commerce.jpg" alt="" width="450" height="358" /><br />
3. 图标与设计素材 A. 电子商务网站主题<br />
<a href="http://www.smashingmagazine.com/2009/01/25/35-free-high-quality-e-commerce-templates/">35 Free High-Quality E-Commerce Templates</a> – Smashing Magazine 搜集的非常出色的电子商务网站主题。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/35freetemplates.jpg" alt="" /></p>
<p><a href="http://www.smashingmagazine.com/2009/05/05/25-magento-templates-for-your-e-commerce-business/">25 Magento Templates for Your E-Commerce Business</a> – 25 套 Magento 主题</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/25magentotemplates.jpg" alt="" /></p>
<p><a href="http://blogicthink.com/best-ecommerce-wordpress-themes-templates-icons-flash-sites-collection-evanto/">20+ Best e-commerce (WordPress Themes, Templates, Icons, Flash Sites) Collection</a> – 最佳电子商务主题集。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/20bestecommercecollection.jpg" alt="" /></p>
<p><a href="http://themeforest.net/item/the-clothes-shop-wordpress-ecommerce/64132">The Clothes Shop Theme</a> – 基于 WP 的布艺网店主题。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/clothesshop.jpg" alt="" /></p>
<p><a href="http://themeforest.net/item/the-furniture-store-wordpress-ecommerce-shop/69996">The Furniture Store Theme</a> – 基于 WP 的家居网店主题。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/furniturestore.jpg" alt="" /></p>
<p><a href="http://themeforest.net/item/envirashop-ecommerce-wordpress-theme/73265">enVirashop</a> – 用于 WP 的电子商务主题</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/envirashop.jpg" alt="" /></p>
<p><a href="http://themeforest.net/item/wpshop-reloaded-wordpress-ecommerce/53051">wpShop Reloaded</a> – 一套 WP 网店主题</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/wpshop.jpg" alt="" /></p>
<p><a href="http://themeforest.net/item/rgbstore-ecommerce-html-template/67270">RGBSTore e-commerce</a> – 一套电子商务 HTML 模板，支持 Magento, osCommerce, Zen Cart 等</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/rgbstore.jpg" alt="" /></p>
<p><a href="http://themeforest.net/item/boutique/74689">Boutique</a> – 一套优雅的电子商务 HTML 模板</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/boutique.jpg" alt="" /></p>
<p><a href="http://themeforest.net/item/sancart-opencart-template/59996">Sancart</a> – 一套简单的 OpenCart 模板</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/sancart.jpg" alt="" /></p>
<p><a href="http://themeforest.net/item/oscomm-ecommerce-template/58903">OScomm E-Commerce Template</a> – 一套 e-commerce HTML 模板</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/oscomm.jpg" alt="" /></p>
<p><a href="http://themeforest.net/item/classyshop/43948">ClassyShop</a> – 使用 960 网格框架设计的 e-commerce 模板</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/classyshop.jpg" alt="" /></p>
<p><a href="http://templatic.com/ecommerce-themes/store">Store Theme</a> – 一套来自 Templatic 的主题，能将标准 WP 换成在线网店</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/storetheme.jpg" alt="" /></p>
<p><a href="http://www.billionstudio.com/news/free-crafty-cart-theme/">Crafty Cart Theme</a> – 另一个将 WP 变成在线网店的主题</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/craftycart.jpg" alt="" /></p>
<p><a href="http://www.chris-wallace.com/2009/07/17/simplecartjs-a-free-wp-e-commerce-thematic-child-theme/">SimpleCart(js)</a> – 还有一个</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/simplecartjs.jpg" alt="" /></p>
<p><a href="http://www.markettheme.com/">Market Theme</a> – 这个也是</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/markettheme.jpg" alt="" /></p>
<p><a href="http://www.shopperpress.com/">ShopperPress</a> – WP 网店主题，支持 Google Checkout, PayPal, Authorize.net 等支付方式</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/shopperpress.jpg" alt="" /><br />
B. 设计素材<br />
<a href="http://graphicriver.net/item/ecommerce-web-elements-dark-grey-green/71803">e-commerce Web Elements, Dark Grey &amp; Green</a> – 一套绿色系的电子商务网站素材</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/darkgreygreenwebelements.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/web-20-button-ecommerce-2/38759">Web 2.0 Button (e-commerce #2)</a> – 一套电子商务网站按钮集</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/web20buttons.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/ecommerce-web-elements/73080">e-commerce Web Elements</a> – 一套电子商务设计素材，可以自行配色</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/ecommercewebelements.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/web-pack-price-table-banner-buttons/60125">Web Pack (Price Table, Banner, Buttons…)</a> – 一套黑白灰色系设计素材</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/webpack.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/price-table/33307">Price Table</a> – 价格表素材</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/pricetable.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/colorful-pricing-table/71847">Colorful Pricing Table</a> – 多彩的价格表</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/colorfulpricingtable.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/pricing-tables-5-pack/54410">Pricing Tables – 5 Pack</a> – 5 套价格表素材</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/pricingtables5pack.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/pricing-tables/49484">Pricing Tables</a> – 价格表，包含功能清单</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/pricingtablesfeatures.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/super-bright-pricing-tables-in-4-colors/76260">Super Bright Pricing Tables</a> – 各种配色的价格表</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/superbrightpricingtables.jpg" alt="" /><br />
<em></em>C. 通用图标<em><br />
</em><br />
<em></em></p>
<p><a href="http://graphicriver.net/item/vector-free-shipping-bag-set/66837">Vector Free Shipping Bag Set</a> – 矢量购物袋</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/freeshippingbags.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/free-shipping-tag-icon/68648">Free Shipping Tag Icon</a> – 矢量标签</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/freeshippingtag.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/13-ecommerce-icons/69737">13 E-Commerce Icons</a> – 13 套电子商务网站图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/13ecommerceicons.jpg" alt="" /></p>
<p><a href="http://www.istockphoto.com/stock-illustration-7111605-universal-icons-set-16-shopping.php">Universal Icons – Set 16 (Shopping)</a> – 来自 iStockPhoto 的电子商务网站图标素材</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/universaliconsset16.jpg" alt="" /></p>
<p><a href="http://www.istockphoto.com/stock-illustration-6001973-sale-and-shopping-icons-alto-series.php">Sale and Shopping Icons – Alto Series</a> – 另一套</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/altosaleandshopping.jpg" alt="" /></p>
<p><a href="http://www.istockphoto.com/stock-illustration-6692733-shopping-consumerism-icons-white-or-black-series.php">Shopping &amp; Consumerism Icons – White or Black Series</a> – 来自 iStockPhoto 的图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/whiteorblackshopping.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/set-of-77-web-icons/79287">Set of 77 Web Icons</a> – Web 图标集</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/77webicons.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/bluesakura-45-icon-for-your-project/79037">BlueSakura</a> – 45个图标，包括购物车图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/bluesakura.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/icon-set-n9-commerce-theme-infinity-series/53248">Icon Set n9 – Commerce</a> – 一套电子商务网站图标</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/n9iconset.jpg" alt="" /></p>
<p><a href="http://graphicriver.net/item/icon-set-n8-commerce-theme-infinity-series/53245">Icon Set n8 – Commerce</a> – 另一套</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/n8iconset.jpg" alt="" /></p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/themesultimateicons.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xincss.com/?feed=rss2&amp;p=120</wfw:commentRss>
		</item>
		<item>
		<title>电子商务类站点终极资源大全（上）</title>
		<link>http://www.xincss.com/?p=118</link>
		<comments>http://www.xincss.com/?p=118#comments</comments>
		<pubDate>Tue, 23 Feb 2010 05:10:56 +0000</pubDate>
		<dc:creator>朝心</dc:creator>
		
		<category><![CDATA[闲来无事]]></category>

		<guid isPermaLink="false">http://www.xincss.com/?p=118</guid>
		<description><![CDATA[新闻来源:hongkiat.com
电子商务网站和普通网站一样，需要良好的设计，除此之外，电子商务站点还有许多额外的东西需要考虑，后台支撑程序，购物车，结算，产品目录，产品搜索与导  航，一个优秀的电子商务站点会引导用户快速找到他们需要的货品并顺畅地完成购买。本文搜集了上百种与电子商务网站设计相关的资源。

<span class="readmore"><a href="http://www.xincss.com/?p=118" title="电子商务类站点终极资源大全（上）">阅读全文（1312字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>新闻来源:hongkiat.com<br />
电子商务网站和普通网站一样，需要良好的设计，除此之外，电子商务站点还有许多额外的东西需要考虑，后台支撑程序，购物车，结算，产品目录，产品搜索与导  航，一个优秀的电子商务站点会引导用户快速找到他们需要的货品并顺畅地完成购买。本文搜集了上百种与电子商务网站设计相关的资源。</p>
<p><img src="http://www.netlogical.com/images/e-commerce.jpg" alt="" width="450" height="358" /><br />
1. 设计灵感与借鉴资源<br />
<strong>A。通用资源</strong></p>
<p><a href="http://tutorialblog.org/20-of-the-best-ecommerce-websites/">20 of the Best  e-commerce Websites</a> - 20 个最佳电子商务网站</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/20ofthebestecommercewebsites.jpg" alt="" /></p>
<p><a href="http://cartcraze.com/">Cart Craze</a> – 电子商务网站设计展示</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/cartcraze.jpg" alt="" /></p>
<p><a href="http://inspectelement.com/articles/23-excellent-examples-of-how-to-design-online-stores/">23  Excellent Examples of How to Design Online Stores</a> –  25个优秀的电子商务网站设计案例</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/examplesofhowtodesignonlinestores.jpg" alt="" /></p>
<p><a href="http://dzineblog.com/2008/05/20-well-designed-ecommerce-websites.html">20  Well Designed E-Commerce Websites</a> – 20 个设计出众的电子商务网站</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/welldesignedecommercewebsites.jpg" alt="" /></p>
<p><a href="http://vandelaydesign.com/blog/galleries/ecommerce-websites/">50  Inspirational e-commerce Website Designs</a> – 50 个电子商务网站设计样例</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/inspirationalecommercedesigns.jpg" alt="" /></p>
<p><a href="http://vandelaydesign.com/blog/galleries/ecommerce-ui/">35 Excellent  e-commerce User Interface Designs</a> – 35个出色的电子商务类站点UI设计</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/ecommerceuidesigns.jpg" alt="" /><br />
B.  按钮<br />
<a href="http://www.getelastic.com/add-to-cart-buttons/">107 Add to Cart  Buttons of the Top Online Retailers</a> – 107 个购物车按钮设计</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/107addtocartbuttons.jpg" alt="" /></p>
<p><a href="http://sixrevisions.com/design-showcase-inspiration/80-examples-of-add-to-cart-buttons-for-design-inspiration/">80  Examples of Add to Cart Buttons for Design Inspiration</a> –  80个购物车按钮设计样例</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/80addtocartbuttons.jpg" alt="" /></p>
<p><a href="http://www.webdesigndev.com/inspiration/20-ecommerce-add-to-cart-buttons-for-your-inspiration">20  e-commerce Add To Cart Buttons For Your Inspiration</a> – 20个购物车按钮展示</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/20addtocartbuttons.jpg" alt="" /></p>
<p><a href="http://vandelaydesign.com/blog/galleries/add-to-cart/">&#8220;Add to Cart&#8221;  Button Showcase</a> – 购物车按钮展示</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/addtocartshowcase.jpg" alt="" /><br />
2.  购物车与电子商务平台 A. 独立购物车<br />
<a href="http://www.prestashop.com/">PrestaShop</a> –  一个免费，开源购物车，灵活，界面直观。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/prestashop.jpg" alt="" /></p>
<p><a href="http://www.opencart.com/">OpenCart</a> – 基于 PHP  的免费，开源购物车。支持产品预览，自动图片尺寸，支持可下载类虚拟产品。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/opencart.jpg" alt="" /></p>
<p><a href="http://www.magentocommerce.com/">Magento</a> –  开源电子商务平台，包含免费的社区版和收费的企业版。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/magento.jpg" alt="" /></p>
<p><a href="http://www.cubecart.com/">CubeCart</a> – 购物车程序，有两个版本，包括一个免费版。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/cubecart.jpg" alt="" /></p>
<p><a href="http://www.zen-cart.com/">Zen Cart</a> – 免费开源购物车，包括各种免费扩展。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/zencart.jpg" alt="" /></p>
<p><a href="http://www.oscommerce.com/">osCommerce</a> – 开源，免费的购物车，已经应用到超过 225000  在线商店。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/oscommerce.jpg" alt="" /></p>
<p><a href="http://www.digistore.co.nz/">Digistore</a> – 基于 osCommerce  的免费，开源购物车。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/digistore.jpg" alt="" /></p>
<p><a href="http://www.storesprite.com/">StoreSprite</a> – 一个免费但功能强大的，基于 PHP/MySQL  的购物车。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/storesprite.jpg" alt="" /></p>
<p><a href="http://www.bosscart.com/">BossCart</a> – 基于 PHP  的购物车，含免费版和高级收费版。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/bosscart.jpg" alt="" /></p>
<p><a href="http://www.fatfreecart.com/">FatFreeCart</a> – 一个通过复制粘贴代码就能实现的购物车，支持  Paypal 和 Google Checkout，无需注册和安装。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/fatfreecart.jpg" alt="" /><br />
C.  插件<br />
<a href="http://www.instinct.co.nz/e-commerce/">WordPress e-Commerce</a> – 用于 WordPress 的免费，开源电子商务插件。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/wpecommerce.jpg" alt="" /></p>
<p><a href="http://shopplugin.net/">Shopp</a> – 用于 WordPress 的超简单的购物车插件。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/shopp.jpg" alt="" /></p>
<p><a href="http://www.ubercart.org/">Ubercart</a> – 用于 Drupal 5/6 的购物车插件。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/ubercart.jpg" alt="" /></p>
<p><a href="http://www.drupalecommerce.org/">Drupal e-Commerce</a> – 用于 Drupal  的电子商务插件，支持 Paypal，Authorize.net 以及其它支付方式。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/drupalecommerce.jpg" alt="" /></p>
<p><a href="http://virtuemart.net/">VirtueMart</a> – 用于 Joomla 的免费购物车。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/virtuemart.jpg" alt="" /></p>
<p><a href="http://www.seber.com.au/downloads/SeberCart.aspx">Seber Cart</a> – 用于  Joomla 的小巧，易用的购物车。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/sebercart.jpg" alt="" /></p>
<p><a href="http://www.thumbdo.com/products/joomla-jquery-cart">Joomla jQuery Cart</a> – JCart 是一个易于安装，定制的，免费的 Ajax 购物车。</p>
<p><img src="http://media02.hongkiat.com/e-commerce-design-roundup/jcart.jpg" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xincss.com/?feed=rss2&amp;p=118</wfw:commentRss>
		</item>
		<item>
		<title>Zen Coding: 一种快速编写HTML/CSS代码的方法</title>
		<link>http://www.xincss.com/?p=111</link>
		<comments>http://www.xincss.com/?p=111#comments</comments>
		<pubDate>Sun, 21 Feb 2010 08:42:35 +0000</pubDate>
		<dc:creator>朝心</dc:creator>
		
		<category><![CDATA[页面制作]]></category>

		<guid isPermaLink="false">http://www.xincss.com/?p=111</guid>
		<description><![CDATA[译自：Smashing  Magazine中文：Zen  Coding: 一种快速编写HTML/CSS代码的方法
请尊重版权，转载请注明来源！

<span class="readmore"><a href="http://www.xincss.com/?p=111" title="Zen Coding: 一种快速编写HTML/CSS代码的方法">阅读全文（7144字）</a></span>]]></description>
			<content:encoded><![CDATA[<div>译自：<a href="http://www.smashingmagazine.com/2009/11/21/zen-coding-a-new-way-to-write-html-code/">Smashing  Magazine</a>中文：<a href="http://www.qianduan.net/zen-coding-a-new-way-to-write-html-code.html">Zen  Coding: 一种快速编写HTML/CSS代码的方法</a></p>
<p>请尊重版权，转载请注明来源！</p>
<hr /></div>
<p>在本文中我们将展示一种新的使用仿CSS选择器的语法来快速开发HTML和CSS的方法。它由<a href="http://www.smashingmagazine.com/author/sergey-chikuyonok/">Sergey  Chikuyonok</a>开发。</p>
<p>你在写HTML代码(包括所有标签、属性、引用、大括号等)上花费多少时间？如果你的编辑器有代码提示功能，你编写的时候就会容易些，但即便如此你 还是要手动敲入很多代码。</p>
<p>在JavaScript方面，当我们想要在一个页面上获取某个特定的元素时，我们就会遇到同样的问题，我们必须写很多代码，这就变得难于维护和重 用。JavaScript框架应运而生，它们同时引入了CSS选择器引擎。现在，你可以使用简单的CSS表达式来获取DOM元素，这相当酷。</p>
<p>但是，如果你不仅仅可以用CSS的选择器布局和定位元素，还能<strong>生成代码</strong>会怎么样？比如，如果你这样写：</p>
<div class="wp_syntax">
<div class="code">
<pre class="css" style="font-family: monospace;">div<span style="color: #cc00cc;">#content</span><span style="color: #00aa00;">&gt;</span>h1<span style="color: #00aa00;">+</span>p</pre>
</div>
</div>
<p>…然后就可以看到这样的输出：</p>
<div class="wp_syntax">
<div class="code">
<pre class="html4strict" style="font-family: monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"content"</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">h1</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">h1</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">p</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">p</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre>
</div>
</div>
<p>有些迷惑吧？今天，我将向你介绍<a href="http://code.google.com/p/zen-coding/">Zen  Coding</a>，一组用于快速HTML和CSS编码的工具。最初由<a href="http://pepelsbey.net/2009/04/zen-coding-concept/">Vadim  Makeev在2009年4月提出</a>(文章为俄语)，由鄙人(也就是我)开发了数月并最终达到比较成熟的状态。Zen  Coding由两个核心组件组成：一个缩写扩展器(缩写为像CSS一样的选择器)和上下文无关的HTML标签对匹配器。看一下这个演示视频来看一下它们能 为你做些什么。</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="400" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="align" value="middle" /><param name="src" value="http://player.youku.com/player.php/sid/XMTM4NDQwNzgw/v.swf" /><param name="quality" value="high" /><embed type="application/x-shockwave-flash" width="480" height="400" src="http://player.youku.com/player.php/sid/XMTM4NDQwNzgw/v.swf" quality="high" align="middle"></embed></object></p>
<p><strong>注意：</strong>该视频原版位于Vimeo，但是要看的话需要翻[和谐]墙先，地址在这里：<a href="http://vimeo.com/7405114" target="_blank">http://vimeo.com/7405114</a>， 上面的视频是我费尽周折从Vimeo上下载下来上传到优酷的，上传后质量竟被大打折扣了，囧。youtube上也有一份视频，是基于Aptana的演示， 一样很精彩：<a href="http://www.youtube.com/watch?v=ug84Ypwqfzk" target="_blank">http://www.youtube.com/watch?v=ug84Ypwqfzk</a>。PS:貌似 youtube要比Vimeo翻[和谐]墙容易些，不过如何翻[和谐]墙不在本站讨论范围。</p>
<p>如果你想跳转到详细介绍和使用指南，请看一下演示页面并立刻下载你适用的插件：</p>
<h4>Demo</h4>
<ul>
<li><a href="http://zen-coding.ru/demo/">Demo</a> (使用 <em>Ctrl + ,</em> 展开缩写，需要JavaScript支持)</li>
<li><a href="http://labs.qianduan.net/zencoding/">中文版演示</a></li>
</ul>
<h4>下载(完全支持)</h4>
<ul>
<li><a href="http://code.google.com/p/zen-coding/downloads/detail?name=Zen.Coding-Aptana.v0.5.zip">Aptana</a> (跨平台);</li>
<li>Coda, via <a href="http://github.com/sergeche/tea-for-coda/downloads">TEA for Coda</a> (Mac);</li>
<li>Espresso, via <a href="http://github.com/sergeche/tea-for-espresso/downloads">TEA for  Espresso</a> (Mac);</li>
</ul>
<h4>下载(部分支持，只支持“展开缩写”)</h4>
<ul>
<li><a href="http://code.google.com/p/zen-coding/downloads/detail?name=Zen%20Coding%20for%20TextMate%20v0.3.1.zip">TextMate</a> (只能用于Mac机,Windows可以使用E-text编辑器替代);</li>
<li><a href="http://code.google.com/p/zen-coding/downloads/detail?name=TopStyle.Zen.Coding.1.0.zip">TopStyle</a>;</li>
<li><a href="http://code.google.com/p/zen-coding/downloads/detail?name=Sublime.Zen.Coding.1.1.3.zip">Sublime  Text</a>;</li>
<li><a href="http://www.kryogenix.org/days/2009/09/21/zen-coding-for-gedit">GEdit</a>;</li>
<li><a href="http://zen-coding.googlecode.com/files/Zen.Coding-Dreamweaver.v0.4.zip">Dreamweaver  CS4</a></li>
<li><a href="http://zen-coding.ru/demo/">editArea在线编辑器</a>;</li>
<li><a href="http://labs.qianduan.net/zencoding/">Zen Coding在线编辑器中文版</a></li>
</ul>
<p>现在让我们看一下这些工具是如何工作的吧。</p>
<h3>展开缩写</h3>
<p>展开缩写功能将类似CSS的选择器转换为XHTML代码。术语“缩写”可能会有点儿难以理解。为什么不直接称之为“CSS选择器”呢？嗯，首要原因 是语义化：“选择器”意为<em>选择</em>一些东西，但是在这里我们事实上是<em>生成</em> 一些东西，<strong>是写一个长代码的 较短的替代</strong>。其次，它只是使用真实的CSS选择器语法的一个小的子集，并添加了一些新的操作符。</p>
<p>这里是一个支持的属性和操作符的列表：</p>
<ul>
<li>E<br />
元素名称(div, p);</li>
<li>E#id<br />
使用id的元素(div#content, p#intro, span#error);</li>
<li>E.class<br />
使用类的元素(div.header, p.error.critial). 你也可以联合使用class和idID:  div#content.column.width;</li>
<li>E&gt;N<br />
子代元素(div&gt;p, div#footer&gt;p&gt;span);</li>
<li>E+N<br />
兄弟元素(h1+p, div#header+div#content+div#footer);</li>
<li>E*N<br />
元素倍增(ul#nav&gt;li*5&gt;a);</li>
<li>E$*N<br />
条目编号 (ul#nav&gt;li.item-$*5);</li>
</ul>
<p>正如你能看到的，你已经知道如何使用Zen Coding了：只是些一个简单的仿CSS选择器(呃，“缩写”抱歉)，就像这样…</p>
<div class="wp_syntax">
<div class="code">
<pre class="css" style="font-family: monospace;">div<span style="color: #cc00cc;">#header</span><span style="color: #00aa00;">&gt;</span>img.logo<span style="color: #00aa00;">+</span>ul<span style="color: #cc00cc;">#nav</span><span style="color: #00aa00;">&gt;</span>li<span style="color: #00aa00;">*</span><span style="color: #cc66cc;">4</span><span style="color: #00aa00;">&gt;</span>a</pre>
</div>
</div>
<p>…然后调用”展开缩写”行为。</p>
<p>这里有两个新增的操作符：元素倍增和条目编号。比如，如果你想生成5个&lt;li&gt;元素，你可以简单的写位li*5。它也将同样重写全部子 代元素。如果你想写4个&lt;li&gt;元素，每个里面都有一个&lt;a&gt;标签，你就可以简单的写为li*4&gt;a，这样会生成以下 HTML代码：</p>
<div class="wp_syntax">
<table border="0">
<tbody>
<tr>
<td class="line_numbers">
<pre>1
2
3
4</pre>
</td>
<td class="code">
<pre class="html4strict" style="font-family: monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">""</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">""</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">""</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">""</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>最后一个——条目编号用于当你想用索引标记重复的元素的情况。假设你想生成class为item1、item2和item3的3 个&lt;div&gt;元素。你可以写成这样的缩写，div.item$*3:</p>
<div class="wp_syntax">
<table border="0">
<tbody>
<tr>
<td class="line_numbers">
<pre>1
2
3</pre>
</td>
<td class="code">
<pre class="html4strict" style="font-family: monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"item1"</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"item2"</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"item3"</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>只需在你想要索引出现的任何class或id属性上添加一个美元符号即可，而且想要多少都可以。那么，这样…</p>
<div class="wp_syntax">
<div class="code">
<pre class="css" style="font-family: monospace;"> div<span style="color: #cc00cc;">#i</span>$-test.class$$$<span style="color: #00aa00;">*</span><span style="color: #cc66cc;">5</span></pre>
</div>
</div>
<p>会被转换成为:</p>
<div class="wp_syntax">
<table border="0">
<tbody>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5</pre>
</td>
<td class="code">
<pre class="html4strict" style="font-family: monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"i1-test"</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"class111"</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"i2-test"</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"class222"</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"i3-test"</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"class333"</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"i4-test"</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"class444"</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"i5-test"</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"class555"</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>你会看到，当你写a的缩写的时候，输出是&lt;a href=”&#8221;&gt;&lt;/a&gt;。或者，如果你写img，输出就是&lt;img  src=”&#8221; alt=”&#8221; /&gt;。</p>
<p>Zen Coding是如何知道什么时候应该为生成的标签添加默认的属性或者跳过关闭标签的？有一个专门的文件，名为<em><a href="http://code.google.com/p/zen-coding/source/browse/branches/serge.che/aptana/zen_settings.js">zen_settings.js</a></em>描 述了输出元素。这是一个简单的JSON文件，描述每种语言的缩写(是的，你可以为不同的句法定义缩写，比如HTML、XSL、CSS等)。通用的语言缩写 定义看起来就像这样：</p>
<div class="wp_syntax">
<table border="0">
<tbody>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
7</pre>
</td>
<td class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: #3366cc;">'html'</span><span style="color: #339933;">:</span> <span style="color: #009900;">{</span> <span style="color: #3366cc;">'snippets'</span><span style="color: #339933;">:</span> <span style="color: #009900;">{</span> <span style="color: #3366cc;">'cc:ie6'</span><span style="color: #339933;">:</span> <span style="color: #3366cc;">'&lt;!--[if lte IE 6]&gt;<span style="color: #000099; font-weight: bold;">\n</span><span style="color: #000099; font-weight: bold;">\t</span>${child}|<span style="color: #000099; font-weight: bold;">\n</span>&lt;![endif]--&gt;'</span><span style="color: #339933;">,</span>
			...
			<span style="color: #009900;">}</span><span style="color: #339933;">,</span>
			  <span style="color: #3366cc;">'abbreviations'</span><span style="color: #339933;">:</span> <span style="color: #009900;">{</span> <span style="color: #3366cc;">'a'</span><span style="color: #339933;">:</span> <span style="color: #3366cc;">'&lt;a href=""&gt;&lt;/a&gt;'</span><span style="color: #339933;">,</span> <span style="color: #3366cc;">'img'</span><span style="color: #339933;">:</span> <span style="color: #3366cc;">'&lt;img src="" alt="" /&gt;'</span><span style="color: #339933;">,</span>
			...
			<span style="color: #009900;">}</span>
			<span style="color: #009900;">}</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<h4>元素类型</h4>
<p>Zen Coding有两个主要的元素类型：<strong>“片段(snippets)” 和 “缩写(abbreviations)”。</strong>片 段就是随意的代码碎片，而缩写是标签定义。通过片段，你可以写出你想要的任何代码，它也会照你写的格式输出；但是你必须手动的格式化它(使用\n  和\t实现换行和缩进)  并将${child}变量放到你想要输出子元素的地方，就像这样：cc:ie6&gt;style。如果你不使用${child}变量，子元素将会输出于 代码片段的<strong>后面</strong>。</p>
<p>有了缩写，您必须编写标记定义，而且语法是非常重要的。通常，你必须写一个简单的带有所有默认的属性的标签，比如: &lt;a  href=”&#8221;&gt;&lt;/a&gt;。当Zen  Coding被加载后，它会解析一个标签定义到一个描述该标签的名字、属性(包括它们的顺序)以及该标签是否为空的特定的对象中。所以，如果你 写&lt;img src=”&#8221; alt=”&#8221; /&gt;，你会告诉Zen  Coding这个标签必须是空的，然后“扩展缩写”行为就会在输出之前为它使用特定的规则。</p>
<p>对于片段和缩写，你可以添加一个管道符号，它告诉Zen Coding当缩写被展开的时候光标会被定位到哪里。默认的，Zen Coding  将光标放在空属性的引号中间以及开始和关闭标签的中间。</p>
<h4>例子</h4>
<p>那么，这里解释一下当你写了一个缩写并召唤“展开缩写”行动时发生的事情。首先，它将一个完整的缩写分开为独立的元素：这样div&gt;a  会被分成div 和a  元素，当然也会维持他们的关系。然后，每个元素，解析器先在代码片段内而后在缩写中寻找定义。如果它找不到，将会使用元素的名字作为新的标签，并为其添加 缩写中定义的id和class。比如，如果你写mytag#example，解析器在片段或缩写中找不到mytag定义，它就会输出&lt;mytag  id=”example”&gt;&lt;mytag&gt;。</p>
<p>我们制作了很多<a href="http://code.google.com/p/zen-coding/wiki/ZenCSSPropertiesEn">默认的 CSS</a>和<a href="http://code.google.com/p/zen-coding/wiki/ZenHTMLElementsEn">HTML缩写 和片段</a>。你会发现学习使用Zen Coding可以增加你的生产力。</p>
<h3>HTML 标签对匹配器</h3>
<p>对于HTML编码者的另一个非常常见的任务是寻找一个元素的标签对。例如你想选择整个&lt;div  id=”content”&gt;标签并将其移动到其它地方或者删除它。或者有可能你在寻找一个关闭标签并想知道它属于那个开始标签。</p>
<p>不幸的是，很多现代开发工具在该功能方面有所欠缺。那么我就决定写一个我自己的标签对匹配器作为Zen  Coding的一部分。不过它依然在beta阶段并尚存一些问题，但它可以工作的很不错并很快。不是浏览整个文档(像通常的那种HTML标签对匹配器的做 法)，它从光标的当前位置开始寻找相关的标签。这使得它非常快并且<em>上下文无关</em>：它甚至可以用于这段<strong>JavaScript 代码片段</strong>：</p>
<div class="wp_syntax">
<table border="0">
<tbody>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
7</pre>
</td>
<td class="code">
<pre class="javascript" style="font-family: monospace;"><span style="color: #003366; font-weight: bold;">var</span> table <span style="color: #339933;">=</span> <span style="color: #3366cc;">'&lt;table&gt;'</span><span style="color: #339933;">;</span> <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">(</span><span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #339933;">=</span> <span style="color: #cc0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> <span style="color: #cc0000;">3</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
	table <span style="color: #339933;">+=</span> <span style="color: #3366cc;">'&lt;tr&gt;'</span><span style="color: #339933;">;</span> <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">(</span><span style="color: #003366; font-weight: bold;">var</span> j <span style="color: #339933;">=</span> <span style="color: #cc0000;">0</span><span style="color: #339933;">;</span> j <span style="color: #339933;">&lt;</span> <span style="color: #cc0000;">5</span><span style="color: #339933;">;</span> j<span style="color: #339933;">++</span><span style="color: #009900;">)</span> <span style="color: #009900;">{</span>
		table <span style="color: #339933;">+=</span> <span style="color: #3366cc;">'&lt;td&gt;'</span> <span style="color: #339933;">+</span> j <span style="color: #339933;">+</span> <span style="color: #3366cc;">'&lt;/td&gt;'</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">}</span>
	table <span style="color: #339933;">+=</span> <span style="color: #3366cc;">'&lt;/tr&gt;'</span><span style="color: #339933;">;</span>
<span style="color: #009900;">}</span>
table <span style="color: #339933;">+=</span> <span style="color: #3366cc;">'&lt;/table&gt;'</span><span style="color: #339933;">;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<h3>使用缩写包裹</h3>
<p>这真的是一个很酷的特性，它将缩写和标签对匹配器的功能合并到一起了。你有多少才发现你需要<strong>添加一个包裹元素以修正一个浏览器 bug</strong>？或者你需要添加一个装饰，比如一个背景图片或者边框到一个块级内容？你必须写开始标签，临时打断你的代码，找到相关的点然后关 闭标签。这就是“使用缩写包裹”能帮助你的地方。</p>
<p>该功能相当简单：它要求你输入缩写，然后执行适当的“展开缩写”行动并将你期望的文本放到你缩写的<em>最后一个元素里面</em>。如果你没有 选择任何文本，它就会启动标签对匹配器并使用结果。它同样能搞清楚你的光标的位置：标签的内容里面或者是开始和关闭标签中间。依赖于它的位置，它会包裹标 签的内容或标签本身。</p>
<p>缩写包裹为包裹个别行引入了一个特定的缩写句法。简单跳转到倍增操作符后面的数字，比如：ul#nav&gt;li*&gt;a。当Zen  Coding 发现一个使用未定义的倍增数的时候，它会将它作为一个<em>重复元素</em>：你的章节中有多少行，它就会输出多少次，并将每行的内容 放到重复元素的<em>最后一个子元素</em>里面。</p>
<p>如果你在这段文本外面包裹这段缩写 div#header&gt;ul#navigation&gt;li.item$*&gt;a&gt;span：</p>
<div class="wp_syntax">
<table border="0">
<tbody>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5</pre>
</td>
<td class="code">
<pre class="html4strict" style="font-family: monospace;">About Us
Products
News
Blog
Contact Up</pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>你将会得到以下结果：</p>
<div class="wp_syntax">
<table border="0">
<tbody>
<tr>
<td class="line_numbers">
<pre>1
2
3
4
5
6
7
8
9</pre>
</td>
<td class="code">
<pre class="html4strict" style="font-family: monospace;"><span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">div</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"header"</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">ul</span> <span style="color: #000066;">id</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"navigation"</span>&gt;</span>
		<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"item1"</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">""</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">span</span>&gt;</span>About Us<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
		<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"item2"</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">""</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">span</span>&gt;</span>Products<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
		<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"item3"</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">""</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">span</span>&gt;</span>News<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
		<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"item4"</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">""</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">span</span>&gt;</span>Blog<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
		<span style="color: #009900;">&lt;<span style="color: #000000; font-weight: bold;">li</span> <span style="color: #000066;">class</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">"item5"</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">a</span> <span style="color: #000066;">href</span><span style="color: #66cc66;">=</span><span style="color: #ff0000;">""</span>&gt;&lt;<span style="color: #000000; font-weight: bold;">span</span>&gt;</span>Contact Up<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">span</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">a</span>&gt;&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">li</span>&gt;</span>
	<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">ul</span>&gt;</span>
<span style="color: #009900;">&lt;<span style="color: #66cc66;">/</span><span style="color: #000000; font-weight: bold;">div</span>&gt;</span></pre>
</td>
</tr>
</tbody>
</table>
</div>
<p>你可以看到，Zen Coding是一个强大的文本处理工具。</p>
<h3>快捷键</h3>
<ul>
<li>Ctrl+,<br />
展开缩写</li>
<li>Ctrl+M<br />
匹配对</li>
<li>Ctrl+H<br />
使用缩写包括</li>
<li>Shift+Ctrl+M<br />
合并行</li>
<li>Ctrl+Shift+?<br />
上一个编辑点</li>
<li>Ctrl+Shift+?<br />
下一个编辑点</li>
<li>Ctrl+Shift+?<br />
定位匹配对</li>
</ul>
<p>这些快捷键是可以自定义的。</p>
<h3>在线演示</h3>
<p>你已经学到很多关于Zen Coding如何工作以及它是如何使你的编码更容易了。现在为什么不自己尝试一下呢？因为Zen  Coding是用纯JavaScript开发并迁移到Python，它甚至可以用于浏览器内部，这令它成为引入到CMS的首选。</p>
<ul>
<li><a href="http://zen-coding.ru/demo/">Demo</a> (使用 <em>Ctrl + ,</em> 展开缩写，需要JavaScript支持)</li>
<li><a href="http://labs.qianduan.net/zencoding/">中文版演示</a></li>
</ul>
<h3>支持的编辑器</h3>
<p>Zen  Coding并不依赖某个特定的编辑器。它是一个只处理文本的出色的组件：它获取文本、做一些处理并放回新的文本(或索引，用于标签匹配)。Zen  Coding由JavaScript和Python编写，所以它实际上可以运行于任何平台。在Windows，你可以运行JavaScript版本，而 Mac和Linux 分支可以使用Python版。</p>
<p>如果让你的编辑器支持Zen Coding，你需要写一个特定的可以在你的编辑器和Zen  Coding之间转换数据的插件。问题是一个编辑器可能不会完整的支持Zen Coding因为它本身的插件系统。比如，<a href="http://macromates.com/">TextMate</a>通过使用脚本输出替换当前行很容的就支持了“展开缩写”功能，但 是它不能处理标签对匹配因为没有标准的方法请求TextMate来选择内容。</p>
<h4>完全支持</h4>
<ul>
<li><a href="http://code.google.com/p/zen-coding/downloads/detail?name=Zen.Coding-Aptana.v0.5.zip">Aptana</a> (跨平台);</li>
<li>Coda, via <a href="http://github.com/sergeche/tea-for-coda/downloads">TEA for Coda</a> (Mac);</li>
<li>Espresso, via <a href="http://github.com/sergeche/tea-for-espresso/downloads">TEA for  Espresso</a> (Mac);</li>
</ul>
<h4>部分支持(只支持“展开缩写”)</h4>
<ul>
<li><a href="http://code.google.com/p/zen-coding/downloads/detail?name=Zen%20Coding%20for%20TextMate%20v0.3.1.zip">TextMate</a> (只能用于Mac机,Windows可以使用E-text编辑器替代);</li>
<li><a href="http://code.google.com/p/zen-coding/downloads/detail?name=TopStyle.Zen.Coding.1.0.zip">TopStyle</a>;</li>
<li><a href="http://code.google.com/p/zen-coding/downloads/detail?name=Sublime.Zen.Coding.1.1.3.zip">Sublime  Text</a>;</li>
<li><a href="http://www.kryogenix.org/days/2009/09/21/zen-coding-for-gedit">GEdit</a>;</li>
<li><a href="http://zen-coding.googlecode.com/files/Zen.Coding-Dreamweaver.v0.4.zip">Dreamweaver  CS4</a></li>
<li><a href="http://zen-coding.ru/demo/">editArea在线编辑器</a>;</li>
<li><a href="http://labs.qianduan.net/zencoding/">Zen Coding在线编辑器中文版</a></li>
</ul>
<p>Aptana是我主要的开发环境，它使用一个JavaScript版本的Zen  Coding。它也包含很多其它的我用于日常工作的工具，所以任何一个新的Zen  Coding版本都将会首先对Aptana可用，然后部署到Python并兼容其它的编辑器。</p>
<p>Coda和Espresso 插件被杰出的<a href="http://onecrayon.com/tea/">Text Editor  Actions</a> (TEA) 平台支持，由<a href="http://beckism.com/">Ian Beck</a>开发。原始的 源代码<a href="http://github.com/onecrayon">在GitHub上</a>，但我还是制作了<a href="http://github.com/sergeche/">我自己的分支</a>以整合Zen Coding的特性。</p>
<h3>总结</h3>
<p>很多尝试过Zen Coding的人都说它改变了他们写页面的方式。当然还有很多事情要做，还有很多的编辑器需要被支持以及一些文档要写。请浏览<a href="http://code.google.com/p/zen-coding/w/list">现在的文档</a> 以及<a href="http://code.google.com/p/zen-coding/source/browse/#svn/branches/serge.che">源 代码</a>以寻找你的问题的答案。希望你喜欢Zen Coding!</p>
<h3>附：Zen coding的具体用法</h3>
<p>遗憾的是， 本文原作者并没有说明zen  coding的具体用法，神飞认为有必要做以下简要的说明。这里就以Aptana/Eclipse和Dreamweaver为例，其它编辑器平台暂不描 述，如有疑问可以在评论中与前端观察的网友交流。</p>
<h4>Aptana/Eclipse</h4>
<p>由于Aptana本身就是基于Eclipse的，所以，Zen  Coding也是支持Eclipse的，只是需要一个EclipseMonkey插件的支持，Aptana已经封装了这个插件，所以如果你使用 Aptana，下面的第一步可以跳过。</p>
<ol>
<li>通过更新网站安装EclipseMonkey: <a rel="nofollow" href="http://download.eclipse.org/technology/dash/update">http://download.eclipse.org/technology/dash/update</a>(如 果你使用Aptana，可跳过这一步)</li>
<li>在你的当前工作去创建一个顶级的项目，给它命名，比如，就叫<strong>zencoding</strong></li>
<li>在新创建的项目中创建<strong>scripts</strong>文件夹</li>
<li>解压缩下载的ZIP插件包到该文件夹。项目结构看起来就像这样:<img src="http://www.qianduan.net/wp-content/uploads/2009/12/aptana-proj-structure.png" alt="" /></li>
<li>安装之后，Aptana的菜单栏中的“脚本(Script)”菜单中将会出现Zen coding相关子菜单</li>
</ol>
<p>注意事项：</p>
<ul>
<li>Aptana版的官方插件是基于MAC机的，如果你用的是Windows，需要手动更改快捷键(在每个文件头部的注释片段中更改)</li>
<li>官方的文件编码有点儿乱，修改官方js的时候，请注意<strong>编码问题</strong>，修改不当会造成相关功能的丢失；</li>
</ul>
<h4>DreamWeaver</h4>
<p>好消息是，现在已经有了Zen coding for  DreamWeaver插件，坏消息是，该插件支持的功能很少，只支持展开缩写功能。而且默认的快捷键是无效的。只能在“命令”菜单中点击操作。另外，没 有测试该插件是不是只支持CS4版本。不过比较好的是，作者将本插件的源码也放出了，你可以自定义一个Dreamweaver的插件。</p>
<p><del>事实上，官方的DW插件在Windows下有点儿bug，就是会出现空白的行，我简单的修正了下，重新编译了个包，在本机测试没问题，感 兴趣的童鞋可以下载尝试：<a href="http://www.boxcn.net/shared/c71z7x7sfe" target="_blank">http://www.boxcn.net/shared/c71z7×7sfe</a></del></p>
<p>PS:官方的DW插件已经更新，<strong>推荐</strong><a href="http://zen-coding.googlecode.com/files/Zen%20Coding.mxp" target="_blank">到官方去下载</a>。新的插件添加了更多的功能支持。<span style="color: red;">UPDATE  @ 12-23-2009</span></p>
<p><strong>特别推荐</strong>：豪情同学将缩写给实践了一番，总结出了很多很棒的用例，推荐大家<a href="http://www.cnblogs.com/jikey/archive/2009/12/19/1628002.html" target="_blank">前去学习</a>。</p>
<h3>原作者介绍：</h3>
<p>Sergey  Chikuyonok是一位俄罗斯的前端开发工程师和作者，他在优化方面有很大的热情：从图片、JavaScript效果到工作流程和节省时间的编码。访 问<a href="http://chikuyonok.ru/" target="_blank">他的主页</a>和<a href="http://twitter.com/chikuyonok" target="_blank">他的Twitter</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xincss.com/?feed=rss2&amp;p=111</wfw:commentRss>
		</item>
		<item>
		<title>Windows7下安装phpnow</title>
		<link>http://www.xincss.com/?p=103</link>
		<comments>http://www.xincss.com/?p=103#comments</comments>
		<pubDate>Wed, 06 Jan 2010 11:01:13 +0000</pubDate>
		<dc:creator>朝心</dc:creator>
		
		<category><![CDATA[点点滴滴]]></category>

		<guid isPermaLink="false">http://www.xincss.com/?p=103</guid>
		<description><![CDATA[一直以来本地调试php程序都喜欢用phpnow, 如今顺应趋势我也装了Windows7，却发现装phpnow并不顺利，Windows7默认用户权限较小，一般提示权限不够时，右键选择“以管理员身份 运行”即可解决，但是右键运行phpnow的安装程序时，却是黑窗口一闪而过。经过一番折腾，终于搞定，以下图解Windows7下如何安装 phpnow。
1 到C:\Windows\System32下找到cmd.exe,右键选择“以管理员身份运行”，如图所示：
<span class="readmore"><a href="http://www.xincss.com/?p=103" title="Windows7下安装phpnow">阅读全文（375字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>一直以来本地调试php程序都喜欢用phpnow, 如今顺应趋势我也装了Windows7，却发现装phpnow并不顺利，Windows7默认用户权限较小，一般提示权限不够时，右键选择“以管理员身份 运行”即可解决，但是右键运行phpnow的安装程序时，却是黑窗口一闪而过。经过一番折腾，终于搞定，以下图解Windows7下如何安装 phpnow。</p>
<p>1 到C:\Windows\System32下找到cmd.exe,右键选择“以管理员身份运行”，如图所示：</p>
<p><img class="alignnone size-full wp-image-106" title="cmd" src="http://www.xincss.com/wp-content/uploads/2010/01/cmd.png" alt="cmd" width="549" height="500" /></p>
<p>2 切换到phpnow的安装目录，这里以E盘安装目录为phpnow为便.</p>
<p>两条命令：</p>
<p>切换到E盘：e:+Enter</p>
<p>切换到phpnow目录：cd phpnow+Enter</p>
<p>然后运行init.cmd: init.cmd+Enter</p>
<p>图示如下：</p>
<p><img class="alignnone size-full wp-image-107" title="anzhuang" src="http://www.xincss.com/wp-content/uploads/2010/01/anzhuang.png" alt="anzhuang" width="669" height="436" /></p>
<p>3 全自动安装，然后设置SQL密码，即可见到熟悉的”PHPnow works!”页面了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xincss.com/?feed=rss2&amp;p=103</wfw:commentRss>
		</item>
		<item>
		<title>[转]提升你设计水平的CSS3新技术</title>
		<link>http://www.xincss.com/?p=89</link>
		<comments>http://www.xincss.com/?p=89#comments</comments>
		<pubDate>Fri, 11 Dec 2009 13:02:43 +0000</pubDate>
		<dc:creator>朝心</dc:creator>
		
		<category><![CDATA[页面制作]]></category>

		<guid isPermaLink="false">http://www.xincss.com/?p=89</guid>
		<description><![CDATA[前些日子在SmashingMagazine看到一篇关于CSS3新技术不错的文章，它详细介绍了CSS3的新特性和它的使用方法，它包括:浏览器 专有属性、选择器(属性选择器、连字符、伪类、伪元素)、RGBA和透明度属性、多栏布局、多背景图、Word Wrap、文字阴影、CSS圆角、边框图片、盒阴影、盒尺寸、媒体查询、语音，并详细说明了每个新技术目前有哪些浏览器兼容。彬Go本想将本文翻译成中文 版和大家分享，但发现已有国人完成翻译，所以就偷个小懒，转载一下人家的翻译，在此感谢前端观察的博主辛苦翻译本文，为大家贡献了如此珍贵的学习资料。
<span class="readmore"><a href="http://www.xincss.com/?p=89" title="[转]提升你设计水平的CSS3新技术">阅读全文（15292字）</a></span>]]></description>
			<content:encoded><![CDATA[<p>前些日子在SmashingMagazine看到一篇关于CSS3新技术不错的文章，它详细介绍了CSS3的新特性和它的使用方法，它包括:浏览器 专有属性、选择器(属性选择器、连字符、伪类、伪元素)、RGBA和透明度属性、多栏布局、多背景图、Word Wrap、文字阴影、CSS圆角、边框图片、盒阴影、盒尺寸、媒体查询、语音，并详细说明了每个新技术目前有哪些浏览器兼容。彬Go本想将本文翻译成中文 版和大家分享，但发现已有国人完成翻译，所以就偷个小懒，转载一下人家的翻译，在此感谢前端观察的博主辛苦翻译本文，为大家贡献了如此珍贵的学习资料。</p>
<p>如果你热爱前端开发，你对CSS感兴趣，那么你肯定不可错过这篇文章。</p>
<p>级联样式表在13年前被引入，而且被广泛使用的CSS 2.1 标准在11年前被创建，显然我们现在已经与当年相差千里了。相当了不起的是期间网站开发有了多少进步——事实上，我们也无法想象。</p>
<p>为什么会这样呢，当提到CSS的时候，过去我们是如此的不情愿和害怕尝试？为什么我们还要使用讨厌的hack和依赖JavaScript的技术来写样式？为什么我们不能<strong>利用丰富的CSS3 特性和现代浏览器中可用的工具</strong> 并将我们的设计品质带到下一个等级？</p>
<p>是时候在我们的项目中引入CSS3 特性了，不用害怕逐渐在我们的样式表中加入css3特性和选择器会出问题。让我们的客户意识到<strong>CSS3的优势</strong> (而且让旧浏览器更快的消失)是我们力所能及的事情——我们应该这样做，特别是在它能够让网站更加灵活并减少开发和维护成本的时候。</p>
<p>在本文中，我们将研究CSS3的优势，并看一下一些网页设计师是如何使用它们的。最后，我们将了解到从CSS3中我们能得到什么以及我们如何在我们的项目中使用它的新特性。</p>
<p>同时请参考我们之前的一篇相关文章：<br />
<a href="http://www.smashingmagazine.com/2009/01/08/push-your-web-design-into-the-future-with-css3/" target="_blank">使用CSS3将你的网站设计推向未来</a></p>
<h3>使用浏览器专有属性</h3>
<p>为了使用大部分CSS3特性，我们不得不与原来的属性一起使用<strong>生产商专有扩展</strong>。原因是直到现在，大部分浏览器只支持部分CSS3属性。而且不幸的是，一些属性甚至到最后都可能不被W3C推荐，所以通过指定浏览器专有属性，将他们与标准属性区分开来是很重要的(然后在他们是多余的的时候使用符合标准的样式将之覆盖)。</p>
<p>当然，这种方法的劣势是，将导致一个杂乱的样式表和网站在浏览器之间的表现不一致。毕竟，我们不想在我们的样式表中重拾私有浏览器hack的需求。 Internet Explorer的臭名昭著的marquee、blink以及其它标签在大量样式表中被应用，并在20世纪九十年代成为一个传奇；它们依然让现存的很多网 站（在其他浏览器中）表现不一致甚至难以阅读。而我们现在也不想将我们自己置于同样的境地，对吧？</p>
<p>然而，网站<a href="http://dowebsitesneedtolookexactlythesameineverybrowser.com/" target="_blank">不需要</a>在所有的浏览器中看起来<strong>必须</strong>严格的一致。有的时候在某个浏览器中使用私有属性来实现特定的效果是可行的。</p>
<p><strong>最常见的私有属性</strong>是用于Webkit核心浏览器的(比如, Safari)， 它们以-webkit-开始，以及Gecko核心的浏览器(比如, Firefox)，以-moz-开始，还有Konqueror (-khtml-)、Opera (-o-) 以及Internet Explorer (-ms-)都有它们自己的属性扩展（目前只有IE8支持-ms-前缀）</p>
<p>作为专业的设计师，我们不得不注意：<strong>使用这些私有属性将让我们的样式表不能通过验证</strong>。所以目前将他们放到最终版的样式中是少见的。但是在某种情况下，比如试验或学习，我们至少可以考虑将他们和标准的CSS属性一起写到一个样式表中。</p>
<h4>扩展阅读</h4>
<ul>
<li><a href="http://www.w3.org/TR/CSS21/syndata.html#vendor-keywords" target="_blank">Vendor-specific extensions and W3C</a></li>
<li><a href="http://www.css3.info/vendor-specific-extensions-to-css3/" target="_blank">Vendor-specific extensions to CSS3</a></li>
<li><a href="http://reference.sitepoint.com/css/vendorspecific" target="_blank">Vendor-specific properties</a></li>
</ul>
<h3>1. 选择器</h3>
<p>CSS选择器是个难以置信地强大的工具：它们允许我们<strong>在标签中指定特定的HTML元素</strong>而不必使用多余的 class、 ID 或JavaScripts。而且它们中的大部分并不是CSS3中新添加的，而是没有被得到应有的广泛应用。如果你在尝试实现一个干净的、轻量级的标签以及 结构与表现更好的分离，高级选择器是非常有用的。它们可以减少在标签中的class和ID的数量并让设计师更方便的维护样式表。</p>
<h4>属性选择器</h4>
<p>三个新的属性选择器被添加到CSS3：</p>
<ul>
<li><code class="codecolorer css mac-classic"><span class="css"><span class="br0">[</span>att<span class="sy0">^=</span><span class="st0">"value"</span><span class="br0">]</span></span></code><br />
匹配包含<strong>以特定的值开头的属性</strong>的元素</li>
<li><code class="codecolorer css mac-classic"><span class="css"><span class="br0">[</span>att$<span class="sy0">=</span><span class="st0">"value"</span><span class="br0">]</span></span></code><br />
匹配包含<strong>以特定的值结尾的属性</strong>的元素</li>
<li><code class="codecolorer css mac-classic"><span class="css"><span class="br0">[</span>att<span class="sy0">*=</span><span class="st0">"value"</span><span class="br0">]</span></span></code><br />
匹配包含<strong>含有特定的值的属性</strong>的元素</li>
</ul>
<p><strong>值的属性</strong>的元素</p>
<p><a href="http://tweetcc.com/" target="_blank"><img src="http://blog.bingo929.com/wp-content/uploads/2009/07/CSS3-new-tech/css3-01.jpg" alt="css3-属性选择器" width="500" height="329" /></a></p>
<p><a href="http://tweetcc.com/" target="_blank">tweetCC</a> 使用一个属性选择器来指定有title属性并以字符“tweetCC”结尾的链接:</p>
<div>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table style="height: 121px;" border="0" cellspacing="0" cellpadding="0" width="136">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;">a<span class="br0">[</span>title$<span class="sy0">=</span><span class="st0">"tweetCC"</span><span class="br0">]</span> <span class="br0">{</span><br />
<span class="kw1">position</span><span class="sy0">:</span> <span class="kw2">absolute</span><span class="sy0">;</span><br />
<span class="kw1">top</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<span class="kw1">right</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">block</span><span class="sy0">;</span><br />
<span class="kw1">width</span><span class="sy0">:</span> <span class="re3">140px</span><span class="sy0">;</span><br />
<span class="kw1">height</span><span class="sy0">:</span> <span class="re3">140px</span><span class="sy0">;</span><br />
<span class="kw1">text-indent</span><span class="sy0">:</span> <span class="re3">-9999px</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
<p><strong>浏览器支持:</strong>只有IE6不支持CSS的属性选择器。IE7和IE8、Opera、Webkit核心和Gecko核心的浏览器都支持。所以在你的样式中使用属性选择器是比较安全的。</p>
<h4>连字符</h4>
<p>CSS3中唯一新引入的连字符是通用的兄弟选择器（同级）。它针对一个元素的有同一个父级节点的所有兄弟级别元素。</p>
<p>比如，给某个特定的div的同级的图片添加一个灰色的边框(div和图片应该有同一个父级节点)，在样式表中定义下面的样式就足够了：</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;">div~img <span class="br0">{</span><br />
<span class="kw1">border</span><span class="sy0">:</span> <span class="re3">1px</span> <span class="kw2">solid</span> <span class="re0">#ccc</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p><strong>浏览器支持：</strong>所有的主要浏览器都支持这个通用的兄弟选择器除了我们最爱的<strong>IE6</strong>！</p>
<h4>伪类</h4>
<p>或许在CSS3中增加最多的就是新的伪类了，这里是一些最有趣和最有用的：</p>
<ul>
<li>:nth-child(n)<br />
让你基于元素在父节点的子元素的列表位置来指定元素。你可以是用数字、数字表达式或odd 和even 关键词(对斑马样式的列表很完美)。所以如果你想匹配在第四个元素之后的一个3个元素的分组，你可以简单的这样使用：</p>
<pre>:nth-child(3n+4) { background-color: #ccc; }/*匹配第4,7,10,13,16,19...个元素*/</pre>
</li>
<li>:nth-last-child(n)<br />
与上个选择器的思想同样，但是从后面匹配元素（倒序），比如，为了指定一个div里面的最后两个段落，我们可以使用下面的选择器：</p>
<pre>div p:nth-last-child(-n+2)</pre>
</li>
<li>:last-child<br />
匹配一个父节点下的最后一个子元素，等同于:nth-last-child(1)</li>
<li>:checked<br />
匹配选择的元素，比如复选框</li>
<li>:empty<br />
匹配空元素（没有子元素）。</li>
<li>:not(s)<br />
匹配所有不符合指定声明(s)的元素。比如，如果你想让所有的没有使用”lead”类的段落的显示为黑色，可以这样写：<br />
<code class="codecolorer css mac-classic"><span class="css">p<span class="sy0">:</span>not<span class="br0">(</span><span class="br0">[</span>class<span class="sy0">*=</span><span class="st0">"lead"</span><span class="br0">]</span><span class="br0">)</span> <span class="br0">{</span> <span class="kw1">color</span><span class="sy0">:</span> <span class="kw1">black</span><span class="sy0">;</span> <span class="br0">}</span></span></code><br />
.</li>
</ul>
<p><a href="http://andreagandino.com/" target="_blank">Andrea Gandino</a> 在他的网站上使用:last-child 为选择器指定每篇日志的最后一个段落，并将其的外间距(margin)设置为0:</p>
<p><img src="http://blog.bingo929.com/wp-content/uploads/2009/07/CSS3-new-tech/css3-02.jpg" alt="css3-伪类" width="500" height="337" /></p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;"><span class="re0">#primary</span> .<span class="kw2">text</span> p<span class="re2">:last-child </span><span class="br0">{</span><br />
<span class="kw1">margin</span><span class="sy0">:</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p><strong>浏览器支持:</strong> Webkit核心和Opera 浏览器支持所有新的CSS3 伪类，Firefox 2 和3 (Gecko核心) 只支持:not(s), :last-child, <img src='http://www.xincss.com/wp-includes/images/smilies/icon_surprised.gif' alt=':o' class='wp-smiley' /> nly-child, :root, :empty, :target, :checked, :enabled 和:disabled，但是Firefox 3.5 将<a href="https://developer.mozilla.org/en/Firefox_3.5_for_developers">更加广泛的支持CSS3 选择器</a>。Trident核心浏览器(Internet Explorer)事实上不支持这些伪选择器。</p>
<h4>伪元素</h4>
<p>在CSS3中唯一引入的伪元素是::selection.它可以让你指定被用户高亮（选中）的元素。</p>
<p><strong>浏览器支持:</strong> 目前没有任何一款Internet Explorer 或Firefox 浏览器支持::selection 伪元素。Safari, Opera 和Chrome 均支持。</p>
<h4>扩展阅读</h4>
<ul>
<li><a href="http://www.w3.org/TR/css3-selectors/" target="_blank">Selectors Level 3: W3C Working Draft</a></li>
<li><a href="http://www.css3.info/preview/attribute-selectors/" target="_blank">CSS3: Attribute selectors: CSS3.info</a></li>
<li><a href="http://www.css3.info/modules/selector-compat/" target="_blank">Compatibility table: CSS3 Selectors</a></li>
<li><a href="http://kimblim.dk/css-tests/selectors/" target="_blank">CSS selectors and pseudo selectors browser compatibility</a></li>
<li><a href="http://reference.sitepoint.com/css/css3attributeselectors" target="_blank">CSS3 Attribute Selectors</a></li>
<li><a href="http://reference.sitepoint.com/css/pseudoelement-selection" target="_blank">::selection</a></li>
<li><a href="http://reference.sitepoint.com/css/generalsiblingselector" target="_blank">General Sibling Selector</a></li>
<li><a href="http://reference.sitepoint.com/css/css3psuedoclasses" target="_blank">CSS3 Pseudo-classes</a></li>
</ul>
<h3>2. RGBA和透明度</h3>
<p>RGBA 让你可以不仅仅设定色彩，还能设定<strong>元素的透明度</strong>。一些浏览器尚不支持它，所以最好在RGBa前面设定其它浏览器支持的没有透明的颜色属性。</p>
<p><a href="http://timvandamme.com/" target="_blank"><img src="http://blog.bingo929.com/wp-content/uploads/2009/07/CSS3-new-tech/css3-03.jpg" alt="css3-透明度" width="500" height="337" /></a><br />
Tim Van Damme在链接的hover效果上使用了RGBA</p>
<p>在这个网站上，<a href="http://timvandamme.com/" target="_blank">Tim Van Damme</a>在鼠标悬停效果上使用了RGBa；例如，在他的首页的network链接上:</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;"><span class="re0">#networks</span> li a<span class="re2">:hover</span><span class="sy0">,</span><br />
<span class="re0">#networks</span> li a<span class="re2">:focus </span><span class="br0">{</span><br />
<span class="kw1">background</span><span class="sy0">:</span> rgba<span class="br0">(</span>164<span class="sy0">,</span> 173<span class="sy0">,</span> 183<span class="sy0">,</span> .15<span class="br0">)</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>当设定一个RGBA 色彩的时候，我们必须依次设定红、蓝、和绿色的值，可以是0-255或百分数。透明值应该在0.0到1.0之间，例如0.5 代表50% 的透明度。</p>
<p>RGBA 和opacity 之间的不同是前者只会应用到指定的元素上，而后者会影响我们指定的元素及其子元素。</p>
<p>这里有个例子展示我们如何给一个div添加80% 透明:</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;">div <span class="br0">{</span><br />
opacity<span class="sy0">:</span> <span class="nu0">0.8</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p><strong>浏览器支持:</strong> RGBA 被Webkit内核浏览器支持。IE所有版本都不支持。Firefox 2也不支持，但是Firefox 3 和Opera 9.5均支持。Opacity 被Opera、Webkit核心 和Gecko核心的浏览器支持。IE所有版本同样不支持。IE只支持自家的该死的滤镜（filter）</p>
<h4>扩展阅读：</h4>
<ul>
<li><a href="http://www.w3.org/TR/css3-color/" target="_blank">CSS Color Module Level 3: W3C Working Draft</a></li>
<li><a href="http://www.css3.info/preview/rgba/" target="_blank">RGBA colors: CSS3.info</a></li>
<li><a href="http://en.wikipedia.org/wiki/RGBA_color_space" target="_blank">RGBA color space</a></li>
<li><a href="http://forabeautifulweb.com/blog/about/is_css3_rgba_ready_to_rock" target="_blank">Is CSS3 RGBa ready to rock?</a></li>
<li><a href="http://www.zurb.com/article/266/super-awesome-buttons-with-css3-and-rgba" target="_blank">Super-Awesome Buttons with CSS3 and RGBA</a></li>
</ul>
<h3>3. 多栏布局</h3>
<p>这是新的CSS3 选择器可以让你不用使用多个div标签就能实现多栏布局。浏览器解释这个属性并生成多栏，让文本实现一个仿报纸的多栏结构。</p>
<p><a href="http://tweetcc.com/" target="_blank"><img src="http://blog.bingo929.com/wp-content/uploads/2009/07/CSS3-new-tech/css3-04.jpg" alt="css3-多栏布局" width="500" height="241" /></a><br />
<em>tweetCC 在其首页使用了CSS3 多栏选择器</em></p>
<p><a href="http://tweetcc.com/" target="_blank">tweetCC</a> 在其首页上将介绍文字显示为四栏。这四栏并非浮动的div；相反，设计师使用下面的CSS3 多栏布局：</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;"><span class="re1">.index</span> <span class="re0">#content</span> div <span class="br0">{</span><br />
-webkit-column-count <span class="sy0">:</span> <span class="nu0">4</span><span class="sy0">;</span><br />
-webkit-column-gap <span class="sy0">:</span> <span class="re3">20px</span><span class="sy0">;</span><br />
-moz-column-count <span class="sy0">:</span> <span class="nu0">4</span><span class="sy0">;</span><br />
-moz-column-gap <span class="sy0">:</span> <span class="re3">20px</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>我们可以通过这个选择器定义三件事情：栏数(column-coun)、栏宽(column-width、例子中没有用到)和各栏之间的空白/间距(column-gap)。 如果column-count未设定，浏览器会在允许的宽度内容纳尽可能多的栏目。</p>
<p>为了在各栏时间添加一个数值的分隔，我们可以使用column-rule 属性，其功能和border 属性类似:</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;">div <span class="br0">{</span><br />
column-rule<span class="sy0">:</span> <span class="re3">1px</span> <span class="kw2">solid</span> <span class="re0">#00000</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>上面的这条属性，浏览器中不会看到任何效果，因为它没有分栏，如果配合上面的例子就可以了。</p>
<p>相关属性: column-break-after, column-break-before, column-span, column-fill.</p>
<p><strong>浏览器支持:</strong> 多栏布局目前被Safari 3+，chrome，和Firefox 1.5+所支持。</p>
<h4>扩展阅读：</h4>
<ul>
<li><a href="http://www.w3.org/TR/css3-multicol/" target="_blank">CSS3 module: Multi-column layout: W3C Working Draft</a></li>
<li><a href="http://www.quirksmode.org/css/multicolumn.html" target="_blank">Columns</a></li>
<li><a href="http://www.csscripting.com/css-multi-column/" target="_blank">CSS3 – Multi-Column Layout Demonstration</a></li>
<li><a href="https://developer.mozilla.org/en/CSS3_Columns" target="_blank">CSS3 Columns</a></li>
<li><a href="http://forabeautifulweb.com/blog/about/designing_tweetcc/" target="_blank">Designing tweetCC</a></li>
<li><a href="http://designshack.co.uk/tutorials/introduction-to-css3-part-5-multiple-columns" target="_blank">Introduction to CSS3 – Part 5: Multiple Columns</a></li>
</ul>
<h3>4. 多背景图</h3>
<p>CSS3 允许你使用多个属性比如background-image、background-repeat, background-size, background-position, background-originand background-clip等在一个元素上添加多层背景图片.</p>
<p>在一个元素上添加多背景的最简单的方法是使用简写代码，你可以指定上面的所有属性到一条声明中，只是最常用的还是image, position 和repeat:</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4<br />
5</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;">div <span class="br0">{</span><br />
<span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">example.jpg</span><span class="br0">)</span> <span class="kw1">top</span> <span class="kw1">left</span> <span class="kw2">no-repeat</span><span class="sy0">,</span><br />
<span class="kw2">url</span><span class="br0">(</span>example2.jpg<span class="br0">)</span> <span class="kw1">bottom</span> <span class="kw1">left</span> <span class="kw2">no-repeat</span><span class="sy0">,</span><br />
<span class="kw2">url</span><span class="br0">(</span>example3.jpg<span class="br0">)</span> <span class="kw2">center</span> <span class="kw2">center</span> <span class="kw2">repeat-y</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>第一个图片将是离用户“最近”的那个。</p>
<p>该属性的一个更复杂的版本可以是这样的：</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4<br />
5</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;">div <span class="br0">{</span><br />
<span class="kw1">background</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">example.jpg</span><span class="br0">)</span> <span class="kw1">top</span> <span class="kw1">left</span> <span class="br0">(</span><span class="re3"><span class="nu0">100</span>%</span> <span class="re3">2em</span><span class="br0">)</span> <span class="kw2">no-repeat</span><span class="sy0">,</span><br />
<span class="kw2">url</span><span class="br0">(</span>example2.jpg<span class="br0">)</span> <span class="kw1">bottom</span> <span class="kw1">left</span> <span class="br0">(</span><span class="re3"><span class="nu0">100</span>%</span> <span class="re3">2em</span><span class="br0">)</span> <span class="kw2">no-repeat</span><span class="sy0">,</span><br />
<span class="kw2">url</span><span class="br0">(</span>example3.jpg<span class="br0">)</span> <span class="kw2">center</span> <span class="kw2">center</span> <span class="br0">(</span><span class="re3">10em</span> <span class="re3">10em</span><span class="br0">)</span> <span class="kw2">repeat-y</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>在这里，(100% 2em) 是background-size 的值；第一个背景图片将会出现在左上角并会被拉伸至该div的100%宽度和2em的高度。</p>
<p>因为只有少数的浏览器支持它，又因为在网站上不显示背景有损网站的视觉效果，所以，这并不是一个被广泛应用了的属性。尽管如此，它显然能够大大地提高设计师的工作流并显著减少标签数量——相对于用其它方式实现同样的效果。</p>
<p><strong>浏览器支持:</strong> 目前，多背景图片只在Safari/chrome 和Konqueror中有效</p>
<h4>扩展阅读：</h4>
<ul>
<li><a href="http://www.w3.org/TR/css3-background/#layering" target="_blank">Layering multiple background images</a></li>
<li><a href="http://www.css3.info/preview/multiple-backgrounds/" target="_blank">Multiple backgrounds with CSS3 and CSS3.info</a></li>
<li><a href="http://designshack.co.uk/tutorials/introduction-to-css3-part-6-backgrounds" target="_blank">Introduction to CSS3, Part 6: Backgrounds</a></li>
</ul>
<h3>5. Word Wrap</h3>
<p>word-wrap 属性用来防止太长的字符串溢出的。可以用两个属性值normal 和break-word。normal 值(默认的) 只在允许的断点截断文字，如连字符。如果使用了break-word ，文字可以在任何需要的地方截断以匹配分配的空间并防止溢出。</p>
<p><strong><a href="http://wordpress.org/" target="_blank"><img src="http://blog.bingo929.com/wp-content/uploads/2009/07/CSS3-new-tech/css3-13.jpg" alt="css3-word-wrap" /></a><br />
</strong><em>WordPress 后台在数据表中使用了word-wrap</em>.</p>
<p>在<a href="http://wordpress.org/" target="_blank">WordPress</a> 的控制面板中，word-wrap 属性被用于表格中的元素；比如在日志和页面的列表中：</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;"><span class="re1">.widefat</span> <span class="sy0">*</span> <span class="br0">{</span><br />
word-wrap<span class="sy0">:</span> break-word<span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p><strong><strong>浏览器支持：</strong> </strong>word-wrap 被Internet Explorer 和Safari/chrome支持。Firefox 将在3.5版本中支持它。</p>
<h4><strong>扩展阅读：</strong></h4>
<ul>
<li><strong><a href="http://www.w3.org/TR/css3-text/#word-wrap" target="_blank">Force Wrapping: the ‘word-wrap’ property — CSS Text Level 3: W3C Working Draft</a></strong></li>
<li><strong><a href="http://www.css3.info/preview/word-wrap/" target="_blank">word-wrap: CSS3.info</a></strong></li>
<li><strong><a href="http://www.css3.com/css-word-wrap/" target="_blank">CSS word-wrap</a></strong></li>
<li><strong><a href="https://developer.mozilla.org/en/CSS/word-wrap" target="_blank">word-wrap: Mozilla Developer Center</a></strong></li>
</ul>
<h3><strong>6. 文字阴影</strong></h3>
<p>尽管在CSS2中就已经存在，text-shadow是一个未被广泛应用的CSS属性。但是它将在CSS3中被广泛采用。这个属性给设计师一个新的跨浏览器的工具来为设计添加一个维度以使文字醒目。</p>
<p>尽管这样，你需要确认，你的设计中的文字是可读的，以防用户的浏览器不支持CSS3高级属性。给文字和背景色彩足够的对比度以防text-shadow 属性不能被浏览器正确渲染或理解。</p>
<p><strong><a href="http://beakapp.com/" target="_blank"><img src="http://blog.bingo929.com/wp-content/uploads/2009/07/CSS3-new-tech/css3-05.gif" alt="css3-文字阴影" /></a><br />
</strong><em>Beakapp 在它的网站中使用了text-shadow 属性：内容区域</em>.</p>
<p><a href="http://beakapp.com/" target="_blank">BeakApp.com</a> 为内容区域使用了text-shadow 属性，为文字添加深度和维度 并让它变得醒目——而不是使用某种图片替换技术。该属性目前只在Safari和Chrome中可用。</p>
<p>该网站的主菜单使用的CSS如下：</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;"><span class="re1">.signup_area</span> p <span class="br0">{</span><br />
<span class="kw1">text-shadow</span><span class="sy0">:</span> rgba<span class="br0">(</span>0<span class="sy0">,</span>0<span class="sy0">,</span>0<span class="sy0">,</span>.8<span class="br0">)</span> 0 <span class="re3">1px</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>这里我们使用阴影颜色(使用了RGBA，前面有描述)， 然后是右(x 坐标) 和底部(y 坐标) 偏移，最后是模糊半径</p>
<p>如果要在一个文字上使用多阴影，可以使用逗号分开。比如：</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4<br />
5</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;">p <span class="br0">{</span><br />
<span class="kw1">text-shadow</span><span class="sy0">:</span> <span class="kw2">red</span> <span class="re3">4px</span> <span class="re3">4px</span> <span class="re3">2px</span><span class="sy0">,</span><br />
<span class="kw2">yellow</span> <span class="re3">-4px</span> <span class="re3">-4px</span> <span class="re3">2px</span><span class="sy0">,</span><br />
<span class="kw2">green</span> <span class="re3">-4px</span> <span class="re3">4px</span> <span class="re3">2px</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p><strong>浏览器支持: </strong>Webkit核心浏览器和Opera 9.5 支持text-shadow。Internet Explorer 不支持它，Firefox 将在即将发行的3.5版本中支持。</p>
<h4><strong>扩展阅读：</strong></h4>
<ul>
<li><a href="http://www.w3.org/TR/css3-text/#text-shadow" target="_blank">Text Shadows: the ‘text-shadow’ property — W3C Working Draft</a></li>
<li><a href="http://www.w3.org/Style/Examples/007/text-shadow" target="_blank">Text shadows: Web Style Sheets CSS tips and tricks</a></li>
<li><a href="http://www.css3.info/preview/text-shadow/" target="_blank">Text-shadow, Photoshop like effects using CSS — CSS3.info</a></li>
<li><a href="http://www.kremalicious.com/2008/04/make-cool-and-clever-text-effects-with-css-text-shadow/" target="_blank">Make Cool And Clever Text Effects With CSS Text-Shadow</a></li>
<li><a href="http://sam.brown.tc/entry/348/safaris-text-shadow-anti-aliasing-css-hack" target="_blank">Safari’s Text-Shadow Anti-Aliasing CSS Hack</a></li>
<li><a href="http://reference.sitepoint.com/css/text-shadow" target="_blank">text-shadow</a></li>
<li><a href="https://developer.mozilla.org/en/CSS/text-shadow" target="_blank">text-shadow: Mozilla Developer Center</a></li>
</ul>
<h3><strong>7. @font-face属性</strong></h3>
<p>尽管是最被期待的CSS3 特性 (甚至它在CSS2中就已经被引入了)， @font-face在网站上仍然没有像其它CSS3属性那样被广泛采用.这主要因为字体授权和版权问题：嵌入的字体很容易从网站上下载到，这是字体厂商的主要顾虑。</p>
<p>尽管如此，授权我呢提貌似已经开始解决了。<a href="http://blog.typekit.com/2009/05/27/introducing-typekit/" target="_blank">TypeKit</a> 承诺将制定一个方案，以使设计师和字体厂商更容易的统一授权问题，这将显著的充实网站设计中的排版并使@font-face 属性在实际工作中可用。</p>
<p><strong><a href="https://jetpack.mozillalabs.com/" target="_blank"><img src="http://blog.bingo929.com/wp-content/uploads/2009/07/CSS3-new-tech/css3-06.jpg" alt="css3-font-face属性" width="500" height="397" /></a><br />
</strong><em>Mozilla实验室JetPack 网站采用font-face规则来使用DroidSans 字体。</em></p>
<p>少数使用该属性的网站之一是新上线的<a href="https://jetpack.mozillalabs.com/" target="_blank">JetPack MozillaLabs</a>.</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;"><span class="co1">@font-face{</span><br />
<span class="kw1">font-family</span><span class="sy0">:</span> <span class="st0">&#8216;DroidSans&#8217;</span><span class="sy0">;</span><br />
src<span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="st0">&#8216;../fonts/DroidSans.ttf&#8217;</span><span class="br0">)</span> format<span class="br0">(</span><span class="st0">&#8216;truetype&#8217;</span><span class="br0">)</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>要想在你的网站中使用嵌入字体，你必须独立的生命每个样式(比如， <em>normal</em>, <em>bold</em> 和<em>italic</em>)。请确保只使用被授权为使用到网站的字体并在需要的时候给字体的设计师一些表扬。</p>
<p>在定义了@font-face 规则之后，你就可以用普通的font-family 属性来引用该字体了：</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;">p <span class="br0">{</span><br />
<span class="kw1">font-family</span><span class="sy0">:</span> <span class="st0">&#8220;DroidSans&#8221;</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>如果一个浏览器不支持@font-face，它将使用font-family(CSS 字体库)属性中指定的下一个字体。对支持的浏览器来说，如果@font-face 字体是一个奢侈品（只有少数元素用到），这对一些网站是可行的；但是如果该字体在设计中占有一个主要的角色或者是公司的视觉特征的一部分，你就可能想使用 其它的解决方案，比如<a href="http://wiki.novemberborn.net/sifr3/" target="_blank">sIFR</a> 或<a href="http://wiki.github.com/sorccu/cufon/about" target="_blank">Cufón</a>。尽管如此，请记住，这些工具对标题或较短的文字更适合，复制和粘贴此类内容比较困难而且对用户并不友好。</p>
<p><strong><a href="http://mezzoblue.com/archives/2009/05/07/font_embeddi/" target="_blank"><img src="http://blog.bingo929.com/wp-content/uploads/2009/07/CSS3-new-tech/css3-07.gif" alt="css3-新技术" width="500" height="337" /></a><br />
</strong><em>在网站中使用此类字体不是很好吗？Dave Shea 使用<a href="http://wiki.github.com/sorccu/cufon/about" target="_blank">Cufón</a> 和<a href="http://www.josbuivenga.demon.nl/museosans.html" target="_blank">Museo Sans</a>来做的实验。很漂亮！</em></p>
<p>浏览器支持: @font-face 被Safari 3.1+和chrome支持。Internet Explorer 支持<abbr title="Embedded OpenType">EOT</abbr> 字体。 Opera 10 和Firefox 3.5 将会支持它。</p>
<h4><strong>扩展阅读：</strong></h4>
<ul>
<li><a href="http://www.w3.org/TR/css3-webfonts/#font-descriptions" target="_blank">Font Descriptions and @font-face — W3C Working Draft</a></li>
<li><a href="http://www.css3.info/preview/web-fonts-with-font-face/" target="_blank">Web fonts with @font-face</a></li>
<li><a href="http://reference.sitepoint.com/css/at-fontface" target="_blank">@font-face — Sitepoint</a></li>
<li><a href="http://webfonts.info/wiki/index.php?title=Fonts_available_for_%40font-face_embedding">Fonts available for @font-face embedding</a></li>
<li><a href="http://nickcowie.com/2008/font-face/" target="_blank">@font-face</a></li>
<li><a href="http://hacks.mozilla.org/2009/06/beautiful-fonts-with-font-face/" target="_blank">beautiful fonts with @font-face</a></li>
<li><a href="http://blog.typekit.com/2009/05/27/introducing-typekit/" target="_blank">Introducing Typekit</a></li>
</ul>
<h3><strong>8. 圆角（边框半径）</strong></h3>
<p>Border-radius 无需背景图片就能给HTML元素添加圆角。现在，它可能是使用最多的CSS3属性了，很简单的原因是使用圆角比较好而且不会对设计和可用性有冲突。</p>
<p>不同于添加Javascript或多于的HTML标签，仅仅需要添加一些CSS属性并从好的方面考虑。这个方案是清晰的和比较有效的，而且可以让你免于花费几个小时来寻找精巧的浏览器方案和基于Javascript圆角。</p>
<p><strong><a href="http://sam.brown.tc/" target="_blank"><img src="http://blog.bingo929.com/wp-content/uploads/2009/07/CSS3-new-tech/css3-08.jpg" alt="css3-圆角" width="500" height="106" /></a><br />
</strong><em>Sam Brown的博客在标题、分类和链接处使用了border-radius</em>.</p>
<p><a href="http://sam.brown.tc/" target="_blank">Sam Brown</a>在他的博客的标题、分类、链接和div中大量的使用了border-radius属性。使用图片来实现该效果将会比较费时的，这是在项目中使用CSS3属性是提高开发效率的重要步骤的原因之一</p>
<p>为了给类别链接添加圆角，Sam 使用了下面的CSS片段：</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;">h2 span <span class="br0">{</span><br />
<span class="kw1">color</span><span class="sy0">:</span> <span class="re0">#1a1a1a</span><span class="sy0">;</span><br />
<span class="kw1">padding</span><span class="sy0">:</span> <span class="re3">.5em</span><span class="sy0">;</span><br />
-webkit-border-radius<span class="sy0">:</span> <span class="re3">6px</span><span class="sy0">;</span><br />
-moz-border-radius<span class="sy0">:</span> <span class="re3">6px</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>我们可以做的更进一步，添加原始的CSS3 属性和Konqueror 属性扩展，如下:</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;">h2 span <span class="br0">{</span><br />
<span class="kw1">color</span><span class="sy0">:</span> <span class="re0">#1a1a1a</span><span class="sy0">;</span><br />
<span class="kw1">padding</span><span class="sy0">:</span> <span class="re3">.5em</span><span class="sy0">;</span><br />
-webkit-border-radius<span class="sy0">:</span> <span class="re3">6px</span><span class="sy0">;</span><br />
-moz-border-radius<span class="sy0">:</span> <span class="re3">6px</span><span class="sy0">;</span><br />
-khtml-border-radius<span class="sy0">:</span> <span class="re3">6px</span><span class="sy0">;</span><br />
border-radius<span class="sy0">:</span> <span class="re3">6px</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>如果我们想在我们的元素中的某个特定的角上应用此属性，我们可以单独的指定每个角：</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11<br />
12<br />
13<br />
14</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;">div <span class="br0">{</span><br />
-moz-border-radius-topright<span class="sy0">:</span> <span class="re3">6px</span><span class="sy0">;</span><br />
-moz-border-radius-topleft<span class="sy0">:</span> <span class="re3">6px</span><span class="sy0">;</span><br />
-moz-border-radius-bottomright<span class="sy0">:</span> <span class="re3">6px</span><span class="sy0">;</span><br />
-moz-border-radius-bottomleft<span class="sy0">:</span> <span class="re3">6px</span><span class="sy0">;</span><br />
-webkit-border-top-right-radius<span class="sy0">:</span> <span class="re3">6px</span><span class="sy0">;</span><br />
-webkit-border-top-left-radius<span class="sy0">:</span> <span class="re3">6px</span><span class="sy0">;</span><br />
-webkit-border-bottom-right-radius<span class="sy0">:</span> <span class="re3">6px</span><span class="sy0">;</span><br />
-webkit-border-bottom-left-radius<span class="sy0">:</span> <span class="re3">6px</span><span class="sy0">;</span><br />
border-top-right-radius<span class="sy0">:</span> <span class="re3">6px</span><span class="sy0">;</span><br />
border-top-left-radius<span class="sy0">:</span> <span class="re3">6px</span><span class="sy0">;</span><br />
border-bottom-right-radius<span class="sy0">:</span> <span class="re3">6px</span><span class="sy0">;</span><br />
border-bottom-left-radius<span class="sy0">:</span> <span class="re3">6px</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>浏览器支持： border-radius只有所有版本的IE浏览器和Opera不支持，Webkit和Gecko核心的浏览器都支持。</p>
<h4><strong>扩展阅读：</strong></h4>
<ul>
<li><a href="http://www.w3.org/TR/css3-background/#border-radius" target="_blank">border-radius: W3C Working Draft</a></li>
<li><a href="http://www.css3.info/preview/rounded-border/" target="_blank">Border-radius: create rounded corners with CSS! — CSS3.info</a></li>
<li><a href="http://designshack.co.uk/tutorials/introduction-to-css3-part-2-borders" target="_blank">Introduction to CSS3, Part 2: Borders</a></li>
<li><a href="http://webdesignernotebook.com/css/an-ode-to-border-radius/" target="_blank">An Ode to border-radius</a></li>
<li><a href="http://www.zenelements.co.uk/blog/css3-border-radius-rounded-corners/" target="_blank">CSS3 Border-Radius and Rounded Corners</a></li>
</ul>
<h3><strong>9. 边框图片</strong></h3>
<p>border-image 属性允许你在元素的边框上设定图片， 让你从通常的solid, dotted 和其它边框样式中解放出来。该属性给设计师一个更好的工具，用它可以方便的定义设计元素的边框样式，比background-image 属性(对高级设计来说) 或枯燥的默认边框样式更好用。我们也可以明确的定义一个边框可以被如何缩放或平铺。</p>
<p><strong><a href="http://www.blog.spoongraphics.co.uk/" target="_blank"><img src="http://blog.bingo929.com/wp-content/uploads/2009/07/CSS3-new-tech/css3-09.jpg" alt="CSS3-边框-图片" width="500" height="171" /></a><br />
<em>SpoonGraphics 博客为它的图片边框使用了border-image 属性。</em></strong></p>
<p><strong>在<a href="http://www.blog.spoongraphics.co.uk/" target="_blank">SpoonGraphis blog</a>中，border-image被用于图片边框，如下所示：</strong></p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;"><span class="re0">#content</span> <span class="re1">.post</span> img <span class="br0">{</span><br />
<span class="kw1">border</span><span class="sy0">:</span> <span class="re3">6px</span> <span class="kw2">solid</span> <span class="re0">#f2e6d1</span><span class="sy0">;</span><br />
-webkit-border-image<span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">main-border.png</span><span class="br0">)</span> 6 <span class="kw2">repeat</span><span class="sy0">;</span><br />
-moz-border-image<span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">main-border.png</span><span class="br0">)</span> 6 <span class="kw2">repeat</span><span class="sy0">;</span><br />
border-image<span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">main-border.png</span><span class="br0">)</span> 6 <span class="kw2">repeat</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>要想定义border-image，我们必须指定图片地址，图片的那部分将被剪切并用于元素的每一个边上，以及图片是否被缩放或平铺。</p>
<p>为了制作一个使用下面的图片作为边框的div ，我们应该使用下面的代码(我们将为这个例子添加Opera 和Konqueror 支持):</p>
<p><strong><img src="http://blog.bingo929.com/wp-content/uploads/2009/07/CSS3-new-tech/css3-10.gif" alt="CSS3-边框" width="361" height="240" /></strong></p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;">div <span class="br0">{</span><br />
<span class="kw1">border-width</span><span class="sy0">:</span> <span class="re3">18px</span> <span class="re3">25px</span> <span class="re3">25px</span> <span class="re3">18px</span><span class="sy0">;</span><br />
-webkit-border-image<span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">example.png</span><span class="br0">)</span> 18 25 25 18 stretch stretch<span class="sy0">;</span><br />
-moz-border-image<span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">example.png</span><span class="br0">)</span> 18 25 25 18 stretch stretch<span class="sy0">;</span><br />
-o-border-image<span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">example.png</span><span class="br0">)</span> 18 25 25 18 stretch stretch<span class="sy0">;</span><br />
-khtml-border-image<span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">example.png</span><span class="br0">)</span> 18 25 25 18 stretch stretch<span class="sy0">;</span><br />
border-image<span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">example.png</span><span class="br0">)</span> 18 25 25 18 stretch stretch<span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>该属性的最后一个值可以是stretch (默认), round (只有一个平铺了整数倍的图片被填充在允许的地方) 或repeat。在我们的例子中，上下左右边框图片被拉伸。如果我们只想顶部和底部边框被拉伸，我们可以使用下面的CSS:</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;">div <span class="br0">{</span><br />
<span class="br0">(</span>&#8230;<span class="br0">)</span><br />
border-image<span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">example.png</span><span class="br0">)</span> 18 25 25 18 stretch <span class="kw2">repeat</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>我们可以可以单独的指定每一个角，如果我们想为每一个角使用不同的图片：</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;">div <span class="br0">{</span><br />
border-top-image<span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">example.png</span><span class="br0">)</span> 5 5 stretch<span class="sy0">;</span><br />
border-right-image<span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">example.png</span><span class="br0">)</span> 5 5 stretch<span class="sy0">;</span><br />
border-bottom-image<span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">example.png</span><span class="br0">)</span> 5 5 stretch<span class="sy0">;</span><br />
border-left-image<span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">example.png</span><span class="br0">)</span> 5 5 stretch<span class="sy0">;</span><br />
border-top-left-image<span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">example.png</span><span class="br0">)</span> 5 5 stretch<span class="sy0">;</span><br />
border-top-right-image<span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">example.png</span><span class="br0">)</span> 5 5 stretch<span class="sy0">;</span><br />
border-bottom-left-image<span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">example.png</span><span class="br0">)</span> 5 5 stretch<span class="sy0">;</span><br />
border-bottom-right-image<span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">example.png</span><span class="br0">)</span> 5 5 stretch<span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>如果浏览器不支持border-image 属性，它将无视这些属性，并只应用定义的其它边框属性，比如border-width 和border-color.</p>
<p>浏览器支持: border-image 目前只有Webkit核心浏览器支持。不太确定Firefox的下一个版本是否支持。</p>
<h4><strong>扩展阅读：</strong></h4>
<ul>
<li><a href="http://www.w3.org/TR/css3-background/#the-border-image" target="_blank">The ‘border-image’ property: W3C Working Draft</a></li>
<li><a href="http://www.css3.info/preview/border-image/" target="_blank">Border-image: using images for your border — CSS3.info</a></li>
<li><a href="http://ejohn.org/blog/border-image-in-firefox/" target="_blank">border-image in Firefox</a></li>
<li><a href="http://www.lrbabe.com/sdoms/borderImage/index.html" target="_blank">border-image demonstration page</a></li>
<li><a href="http://www.launchpadhq.com/blog/2007/07/07/replicating-iphone-buttons-the-webkit-way/" target="_blank">Replicating iPhone Buttons the “webkit” way!</a></li>
</ul>
<h3><strong>10. 盒阴影</strong></h3>
<p>box-shadow 属性可以对HTML元素添加阴影 而不用额外的标签或背景图片。类似text-shadow 属性，它增强设计的细节；而且因为它不影响内容的可读性，随意他可以是增加那种额外感觉/效果的一种很好的方法。</p>
<p><a href="http://10to1.be/" target="_blank"><img src="http://blog.bingo929.com/wp-content/uploads/2009/07/CSS3-new-tech/css3-11.jpg" alt="CSS3-盒-阴影" width="500" height="127" /><br />
<em>10to1 为它的导航北京和hover状态使用了box-shadow 属性</em>.</a></p>
<p><a href="http://10to1.be/" target="_blank">10to1</a> 为其导航区域增加的一个简单的阴影并将该属性应用于导航链接的hover效果:</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;"><span class="re0">#navigation</span> <span class="br0">{</span><br />
-webkit-box-shadow<span class="sy0">:</span> 0 0 <span class="re3">10px</span> <span class="re0">#000</span><span class="sy0">;</span><br />
-moz-box-shadow<span class="sy0">:</span> 0 0 <span class="re3">10px</span> <span class="re0">#000</span><span class="sy0">;</span><br />
<span class="br0">}</span><br />
<span class="re0">#navigation</span> li a<span class="re2">:hover</span><span class="sy0">,</span><br />
<span class="re0">#navigation</span> li a<span class="re2">:focus </span><span class="br0">{</span><br />
-webkit-box-shadow<span class="sy0">:</span> 0 0 <span class="re3">5px</span> <span class="re0">#111</span><span class="sy0">;</span><br />
-moz-box-shadow<span class="sy0">:</span> 0 0 <span class="re3">5px</span> <span class="re0">#111</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>box-shadow属性可以用多个值：水平偏移、垂直偏移、模糊半径、伸展半径和阴影颜色。水平和垂直偏移和阴影色使用的最多。</p>
<p>在一个div上应用红色阴影，右边和下边偏移4px，无模糊，我们可以使用下面的代码：</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4<br />
5</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;">div <span class="br0">{</span><br />
-moz-box-shadow<span class="sy0">:</span> <span class="re3">4px</span> <span class="re3">4px</span> 0 <span class="re0">#f00</span><span class="sy0">;</span><br />
-webkit-box-shadow<span class="sy0">:</span> <span class="re3">4px</span> <span class="re3">4px</span> 0 <span class="re0">#f00</span><span class="sy0">;</span><br />
box-shadow<span class="sy0">:</span> <span class="re3">4px</span> <span class="re3">4px</span> 0 <span class="re0">#f00</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>浏览器支持: box-shadow目前只有Webkit核心浏览器支持，但是即将发布的Firefox 3.5 也将提供很好的支持。</p>
<h4><strong>扩展阅读：</strong></h4>
<ul>
<li><strong><a href="http://www.w3.org/TR/css3-background/#the-box-shadow" target="_blank">The ‘box-shadow’ property — W3C Working Draft</a></strong></li>
<li><strong><a href="http://www.css3.info/preview/box-shadow/" target="_blank">Box-shadow, one of CSS3’s best new features — CSS3.info</a></strong></li>
<li><strong><a href="http://westciv.com/style_master/blog/apples-navigation-bar-using-only-css" target="_blank">Apple’s Navigation bar using only CSS</a></strong></li>
<li><strong><a href="http://webkit.org/blog/86/box-shadow/" target="_blank">Box Shadow — Surfin’ Safari blog</a></strong></li>
</ul>
<h3><strong>11. 盒子大小</strong></h3>
<p>根据CSS 2.1 规范，在计算盒子的总大小的时候，元素的边框和padding应该被加入到宽度和高度之中的。但是众所周知，旧的浏览器却以它们自己的非常有“创意”的方式来解释这个规范。box-sizing属性允许你指定浏览器如何计算一个元素的宽度和高度。</p>
<p><strong><a href="http://wordpress.org/" target="_blank"><img src="http://blog.bingo929.com/wp-content/uploads/2009/07/CSS3-new-tech/css3-12.jpg" alt="CSS3-新特性" width="500" height="263" /></a><br />
</strong>WordPress 在控制面板的所有的输入框元素中使用border-box 属性。</p>
<p><a href="http://wordpress.org/" target="_blank">WordPress</a> 后台区域在它的所有text类型的input标签和textarea标签上使用了该属性:</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;">input<span class="br0">[</span>type<span class="sy0">=</span><span class="st0">"text"</span><span class="br0">]</span><span class="sy0">,</span><br />
textarea <span class="br0">{</span><br />
-moz-box-sizing<span class="sy0">:</span> border-box<span class="sy0">;</span><br />
-webkit-box-sizing<span class="sy0">:</span> border-box<span class="sy0">;</span><br />
-ms-box-sizing<span class="sy0">:</span> border-box<span class="sy0">;</span><br />
box-sizing<span class="sy0">:</span> border-box<span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>第三个属性(-ms-box-sizing) 只有在Internet Explorer 8下有效。通过其他选择器，WordPress 的样式表同样添加了Konqueror 属性： -khtml-box-sizing。</p>
<p>box-sizing 属性可以两个值中的一个：border-box 和content-box。 Content-box如CSS2.1中的定义的那样渲染宽度。Border-box 从设定的宽度和高度中扣除padding和边框(如老式浏览器那样。)。</p>
<p>浏览器支持：box-sizing 被IE8、Opera、Gecko核心和Webkit核心浏览器支持。</p>
<h4><strong>扩展阅读：</strong></h4>
<ul>
<li><strong><a href="http://www.w3.org/TR/css3-ui/#box-sizing" target="_blank">‘box-sizing’ property: W3C Candidate Recommendation</a></strong></li>
<li><strong><a href="http://www.css3.info/preview/box-sizing/" target="_blank">Box-sizing, box-model fixes for the simple people: CSS3.info</a></strong></li>
<li><strong><a href="http://helephant.com/2008/10/css3-box-sizing-attribute/" target="_blank">CSS3 box-sizing attribute</a></strong></li>
</ul>
<h3><strong>12. 媒体查询</strong></h3>
<p>媒体查询（media queries）可以让你为不同的设备基于它们的能力定义不同的样式。比如，在可视区域小于480像素的时候，你可能想让网站的侧栏显示在主内容的下边，这样它就不应该浮动并显示在右侧了：</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9<br />
10<br />
11</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;"><span class="re0">#sidebar</span> <span class="br0">{</span><br />
<span class="kw1">float</span><span class="sy0">:</span> <span class="kw1">right</span><span class="sy0">;</span><br />
<span class="kw1">display</span><span class="sy0">:</span> <span class="kw2">inline</span><span class="sy0">;</span> <span class="coMULTI">/* IE Double-Margin Bugfix */</span><br />
<span class="br0">}</span></p>
<p><span class="co1">@media all and (max-width:480px) {</span><br />
<span class="re0">#sidebar</span> <span class="br0">{</span><br />
<span class="kw1">float</span><span class="sy0">:</span> <span class="kw2">none</span><span class="sy0">;</span><br />
<span class="kw1">clear</span><span class="sy0">:</span> <span class="kw2">both</span><span class="sy0">;</span><br />
<span class="br0">}</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p><strong>你也可以指定使用虑色屏的设备：</strong></p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6<br />
7<br />
8<br />
9</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;">a <span class="br0">{</span><br />
<span class="kw1">color</span><span class="sy0">:</span> grey<span class="sy0">;</span><br />
<span class="br0">}</span></p>
<p><span class="co1">@media screen and (color) {</span><br />
a <span class="br0">{</span><br />
<span class="kw1">color</span><span class="sy0">:</span> <span class="kw2">red</span><span class="sy0">;</span><br />
<span class="br0">}</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>潜力是无限的。这个属性是很有用的因为你你不在需要必须为不同的设备写独立的样式表了，而且你也无需使用JS来确定每个用户的浏览器的属性和功能。一个实现一个灵活的布局的更加流行的基于Javascript的方案是使用<a href="http://www.smashingmagazine.com/2009/06/09/smart-fixes-for-fluid-layouts/" target="_blank">智能的流体布局</a>，让布局对于用户的浏览器分辨率更加灵活。</p>
<p>浏览器支持： 媒体查询被基于webkit核心的浏览器和Opera支持。Firefox将在3.5版本中支持它。IE目前不支持这些属性而且在将来的版本中，也没有支持的计划。</p>
<h4><strong>扩展阅读：</strong></h4>
<ul>
<li><strong><a href="http://www.w3.org/TR/css3-mediaqueries/" target="_blank">媒体查询: W3C 候选推荐</a></strong></li>
<li><strong><a href="http://webkit.org/specs/MediaQueriesExtensions.html" target="_blank">扩展到CSS 3 媒体查询</a></strong></li>
<li><strong><a href="http://www.css3.info/preview/media-queries/" target="_blank">媒体查询: CSS3.info</a></strong></li>
<li><strong><a href="http://helephant.com/2008/07/the-bleeding-edge-of-web-media-queries/" target="_blank">The bleeding edge of web: media queries</a></strong></li>
<li><strong><a href="http://dev.opera.com/articles/view/safe-media-queries/" target="_blank">安全的媒体查询</a></strong></li>
<li><strong><a href="http://www.howtocreate.co.uk/tutorials/css/mediatypes" target="_blank">媒体类型</a></strong></li>
</ul>
<h3><strong>13. 语音</strong></h3>
<p>CSS3的语音模块CSS3可以让你为屏幕阅读者指定语音样式。你可以控制语音的不同设置，比如:</p>
<ul>
<li>voice-volume<br />
使用从0到100的数字(0 即静音)、百分数或关键词(silent,x-soft,soft,medium,loud 和x-loud等)来设置音量。</li>
<li>voice-balance<br />
控制来自哪个声道(如果用户的音箱系统支持立体声)。</li>
<li>Speak<br />
指示屏幕阅读器阅读相关的文字、数字或标点符号。可用的关键词为none, normal, spell-out, digits, literal-punctuation, no-punctuation 和inherit.</li>
<li>Pauses and rests<br />
在一个元素的被读完之前或之后设定暂停或停止。你可以使用时间单位(比如, “2s” 表示2 秒钟) 或关键词(none,x-weak, weak, medium, strong 和x-strong)。</li>
<li>Cues<br />
使用声音限制特定元素并控制器音量。</li>
<li>voice-family<br />
设定特定的声音类型和声音合成(就像font-family)。</li>
<li>voice-rate<br />
控制阅读的速度。可以设置为百分数或关键词: x-slow, slow,medium, fast 和x-fast.</li>
<li>voice-stress<br />
指示应该使用的任何重音(强语气)，使用不同的关键词: none, moderate,strong 和 reduced.</li>
</ul>
<p>比如，告诉屏幕阅读器使用男声读取所有的h2 标签，用左边的喇叭，用软调按照指定的声音，可以像下面这样指定样式：</p>
<div class="codecolorer-container css mac-classic" style="overflow: auto; white-space: nowrap; width: 500px;">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td class="line-numbers">
<div>1<br />
2<br />
3<br />
4<br />
5<br />
6</div>
</td>
<td>
<div class="css codecolorer" style="white-space: nowrap;">h2 <span class="br0">{</span><br />
<span class="kw1">voice-family</span><span class="sy0">:</span> female<span class="sy0">;</span><br />
voice-balance<span class="sy0">:</span> <span class="kw1">left</span><span class="sy0">;</span><br />
voice-<span class="kw1">volume</span><span class="sy0">:</span> <span class="kw2">soft</span><span class="sy0">;</span><br />
<span class="kw1">cue-after</span><span class="sy0">:</span> <span class="kw2">url</span><span class="br0">(</span><span class="co2">sound.au</span><span class="br0">)</span><span class="sy0">;</span><br />
<span class="br0">}</span></div>
</td>
</tr>
</tbody>
</table>
</div>
<p>不幸的是，这个属性现在只有非常少的支持，但是显然值得关注因为我们可以在将来提高我们网站的易用性。</p>
<p><strong>浏览器支持:</strong> 现在，只有Opera 浏览器（Windows XP and 2000）支持语音模块的部分属性。为了使用它们，需要使用-xv- 前缀，比如-xv-voice-balance: right。</p>
<h4><strong>扩展阅读：</strong></h4>
<ul>
<li><a href="http://www.w3.org/TR/css3-speech/" target="_blank">CSS3 语音模块——W3C 工作草案</a></li>
<li><a href="http://www.css3.info/preview/speech/" target="_blank">CSS3 语音 — CSS3.info</a></li>
<li><a href="http://lab.dotjay.co.uk/notes/css/aural-speech/" target="_blank">听觉CSS: 支持CSS 2 听觉样式表 / CSS 3 语音模块</a></li>
</ul>
<h3><strong>结尾</strong></h3>
<p><strong>CSS3 属性可以极大的提高你的工作流</strong>，让一些最耗时的CSS任务不费吹灰之力就能搞定，并且可以使用更好、更简洁和更轻的代码标签。一些属性尚未被广泛的支持，甚至是最新的浏览器，但这并不意味着我们不能用它们进行试验或者为使用先进浏览器的用户更高级的功能和CSS样式。</p>
<p>在这点儿上，请记住，<strong>培养我们的用户</strong> 也同样是有用和必须的：网站无需看起来在每个浏览器里都要保持一致，而且如果一个差异不（负面）影响美学和网站的可用性，它就应该是被考虑的。如果我们继续浪费大量的时间和金钱以使每个细节<strong>绝对一致</strong>(而不是采用更灵活的和未来导向的方案)， 用户将没有升级他们的浏览器的任何需要/动机，这样我们就不得不在旧的浏览器变为古董级浏览器以及强大的现代浏览器变为标准之前等待很长的时间</p>
<p>我们试验和使用新的CSS3属性越早，它们就被流行的浏览器支持的更早，我们也就能够更早的广泛使用它们。</p>
<h3><strong>推荐阅读及资源：</strong></h3>
<ul>
<li><strong><a href="http://www.css3.info/preview/" target="_blank">CSS3 Previews: CSS3.info</a></strong></li>
<li><strong><a href="http://www.noupe.com/css3/css3-exciting-functions-and-features-30-useful-tutorials.html" target="_blank">CSS 3: Exciting Function and Features: 30 Useful Tutorials</a></strong></li>
<li><strong><a href="http://www.noupe.com/jquery/5-css3-techniques-for-major-browsers-using-the-power-of-jquery.html" target="_blank">5 CSS3 Techniques For Major Browsers using the Power of jQuery</a></strong></li>
<li><strong><a href="http://designshack.co.uk/tutorials/introduction-to-css3-part-1-what-is-it" target="_blank">Introduction to CSS3 – Part 1: What is it?</a></strong></li>
<li><strong><a href="http://en.wikipedia.org/wiki/Comparison_of_layout_engines_%28CSS%29" target="_blank">Comparison of layout engines (Cascading Style Sheets) and Wikipedia</a></strong></li>
<li><strong><a href="http://en.wikipedia.org/wiki/Progressive_enhancement" target="_blank">Progressive enhancement</a></strong></li>
<li><strong><a href="http://forabeautifulweb.com/blog/about/five_css_design_browser_differences_i_can_live_with/" target="_blank">Five CSS design browser differences I can live with</a></strong></li>
<li><strong><a href="http://www.alistapart.com/articles/progressiveenhancementwithcss/" target="_blank">Progressive Enhancement with CSS</a></strong></li>
<li><strong><a href="http://www.opera.com/docs/specs/opera95/css/" target="_blank">CSS support in Opera 9.5</a></strong></li>
</ul>
<h3><strong>关于原作者</strong></h3>
<p><em><strong><a href="http://yaili.com/" target="_blank">Inayaili de León</a></strong>是一个葡萄牙的网页设计师。她对网页设计和前端编码真的非常感兴趣，而且喜欢漂亮和简洁的网站。她居住在伦敦。你可以在<a href="http://webdesignernotebook.com/" target="_blank">Web Designer Notebook</a>上看到她的更多文章，并follow her on <a href="http://twitter.com/yaili" target="_blank">Twitter</a>.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xincss.com/?feed=rss2&amp;p=89</wfw:commentRss>
		</item>
	</channel>
</rss>
