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

<channel>
	<title>张鑫旭-鑫空间-鑫生活</title>
	<atom:link href="http://www.zhangxinxu.com/wordpress/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.zhangxinxu.com/wordpress</link>
	<description>it&#039;s my whole life!</description>
	<lastBuildDate>Fri, 03 Sep 2010 08:59:27 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>js写的打方块小游戏</title>
		<link>http://www.zhangxinxu.com/wordpress/?p=1067</link>
		<comments>http://www.zhangxinxu.com/wordpress/?p=1067#comments</comments>
		<pubDate>Wed, 01 Sep 2010 15:49:49 +0000</pubDate>
		<dc:creator>张 鑫旭</dc:creator>
				<category><![CDATA[jquery实例]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flash页面传参]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js相关]]></category>
		<category><![CDATA[快捷键]]></category>
		<category><![CDATA[游戏]]></category>

		<guid isPermaLink="false">http://www.zhangxinxu.com/wordpress/?p=1067</guid>
		<description><![CDATA[本文只要展示我近两天突然冲动写的个游戏，用的是js写的，使用的js库位jQuery，其中还有一点音效是与flash交互实现的。其实没有什么内容，就是希望有人可以试着玩玩这个游戏。就这些，里面有不少关于游戏的截图，如果您有兴趣，可以试着玩一下，欢迎提出建议与提出bug。]]></description>
			<content:encoded><![CDATA[<p>by <a href="http://www.zhangxinxu.com/">zhangxinxu</a> from <a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a><br />
本文地址：<a href=" http://www.zhangxinxu.com/wordpress/?p=1067">http://www.zhangxinxu.com/wordpress/?p=1067</a></p>
<p>游戏页面：<a class="a_link" target="_bank" href="http://www.zhangxinxu.com/sp/game-shot.php">掐我一下</a></p>
<h3>一、游戏简介</h3>
<p>灵感来自小时候小霸王游戏机里面的打蜘蛛(长得像蜘蛛)游戏。<br />
<a href="http://www.zhangxinxu.com/sp/game-shot.php"><img alt="打方块小游戏 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201009/2010-09-01_225751.png" title="打方块小游戏 张鑫旭-鑫空间-鑫生活" class="alignnone" width="483" height="360" /></a></p>
<p>主角，也就是你了，是绿色（绿色表示自然，正义）的有炮口的方框框，通过发射子弹消灭黑色以及灰色的框框（黑色一般代表邪恶）。当页面上全部的灰色系的方框框消灭干净的时候，你就可以进入下一级别了。</p>
<p>右上角有与您相关的一些信息，有当前的级别，性命个数，还有就是分值了。见下图：<br />
<img alt="右上角的游戏信息 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201009/2010-09-01_230525.png" title="右上角的游戏信息 张鑫旭-鑫空间-鑫生活" class="alignnone" width="238" height="81" /></p>
<p>游戏界面背景白色，宽度960像素，高度为浏览器窗口的高度，所以此游戏的战绩与浏览器的尺寸有很大关系。宽屏浏览器有更好的游戏体验。</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1067">http://www.zhangxinxu.com/wordpress/?p=1067</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>二、游戏具体操作</h3>
<p>游戏比较粗糙，大致使用步骤如下：</p>
<p><strong>打开</strong><br />
您可以狠狠地点击这里：<a class="a_link" target="_blank" href="http://www.zhangxinxu.com/sp/game-shot.php">打方块小游戏页面</a></p>
<p><strong>开始</strong><br />
点击“开始游戏”按钮，如下图：<br />
<img alt="打方块小游戏开始按钮 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201009/2010-09-01_231349.png" title="打方块小游戏开始按钮 张鑫旭-鑫空间-鑫生活" class="alignnone" width="415" height="228" /></p>
<p><strong>战斗</strong><br />
您可以使用&#8221;←&#8221;和&#8221;→&#8221;方向键水平移动躲避敌人的子弹攻击，然后按下空格键向敌人发动攻击。一次只能发射一颗子弹，在子弹未出界或是未击中目标时是不能发射第二颗子弹的。干掉页面上48个敌人，你就可以升级了，第二关，对付另外48个敌人，此时敌人攻击速度已经提高了不少，可要当心哦。</p>
<p><strong>退出 or 挂掉</strong><br />
如果你无心恋战，又觉得把辛辛苦苦打来的分数扔掉可惜，您可以按下&#8221;ESC&#8221;键退出，选择“确定”，就可以保存您的分数了。<br />
<img alt="按钮esc键后 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201009/2010-09-01_232340.png" title="按钮esc键后 张鑫旭-鑫空间-鑫生活" class="alignnone" width="459" height="208" /><br />
<img alt="按下确定后 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201009/2010-09-01_232702.png" title="按下确定后 张鑫旭-鑫空间-鑫生活" class="alignnone" width="409" height="237" /></p>
<p>如果您的三条生命都死掉了，也会出现上面的弹出框，提示你保存您的分数，输入您的姓名，点击“保存”按钮，你就可以保存你的分数，同时看到自己的世界排名了，哇哈哈！<br />
<img alt="分数保存成功后 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201009/2010-09-01_232942.png" title="分数保存成功后 张鑫旭-鑫空间-鑫生活" class="alignnone" width="446" height="225" /></p>
<p>现在20分就是世界排名第2了，基本上就这些了，还有些挂掉的提示，升级的提示等，就不一一展示了，您自己摸索吧。</p>
<p><strong>得分</strong><br />
干掉一个灰色的框框20分，干掉一个黑色的框框40分。现在我写此文的时候得分记录是1200分，是我自己创造了，哈哈，这个记录很好破的，只要能够进入第二关基本上就没有问题了。</p>
<p><strong>注意</strong><br />
这是纯客户端的游戏，千万不要刷新页面，否则，要重玩啦。<br />
为了有点效果，在击中目标的时候，我增加了爆炸的音效（js与as3交互），希望您喜欢。</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1067">http://www.zhangxinxu.com/wordpress/?p=1067</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<p><strong>可使用的键</strong><br />
本游戏共可以使用四个键：左右方向键，空格键以及Esc退出键。</p>
<h3>三、欢迎提交bug</h3>
<p>虽然游戏比较简单，但是我毕竟功力尚浅，难免会出现一些bug，欢迎通过评论的形式提出来，或是到<a class="a_link" target="_blank" href="http://www.zhangxinxu.com/php/advise.php">这里</a>提交bug。也欢迎其他形式的交流。</p>
<p>原创文章，转载请注明来自<a href="http://www.zhangxinxu.com/">张鑫旭-鑫空间-鑫生活</a>[<a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a>]<br />
本文地址：<a href=" http://www.zhangxinxu.com/wordpress/?p=1067">http://www.zhangxinxu.com/wordpress/?p=1067</a></p>
<p>（本篇完）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhangxinxu.com/wordpress/?feed=rss2&amp;p=1067</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS3下的147个颜色名称及对应颜色值</title>
		<link>http://www.zhangxinxu.com/wordpress/?p=1064</link>
		<comments>http://www.zhangxinxu.com/wordpress/?p=1064#comments</comments>
		<pubDate>Mon, 30 Aug 2010 11:55:50 +0000</pubDate>
		<dc:creator>张 鑫旭</dc:creator>
				<category><![CDATA[css相关]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[RGB]]></category>
		<category><![CDATA[关键字]]></category>
		<category><![CDATA[颜色]]></category>

		<guid isPermaLink="false">http://www.zhangxinxu.com/wordpress/?p=1064</guid>
		<description><![CDATA[色名称也称为颜色关键字，像我们熟悉的black表示黑色，white表示白色，blue表示蓝色等。实际上，在CSS的颜色定义中，总共有147种颜色关键字，所有者147种颜色名字均取自X Windows 系统，X 颜色名，所以即使这147个颜色名看上去不是很标准，支持也是非常不错的。

需要注意的是，在IE下，关于灰色，其中的字母"e"是不认的，它只认gray中的"a"而不认grey中的"e"，所以IE浏览器下，CSS3中的颜色名实际上只有140个，而不是147个。]]></description>
			<content:encoded><![CDATA[<p>by <a href="http://www.zhangxinxu.com/">zhangxinxu</a> from <a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a><br />
本文地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1064">http://www.zhangxinxu.com/wordpress/?p=1064</a></p>
<p>颜色名称也称为颜色关键字，像我们熟悉的black表示黑色，white表示白色，blue表示蓝色等。实际上，在CSS的颜色定义中，总共有147种颜色关键字，所有者147种颜色名字均取自X Windows 系统，X 颜色名，所以即使这147个颜色名看上去不是很标准，支持也是非常不错的。</p>
<p>需要注意的是，在IE下，关于灰色，其中的字母&#8221;e&#8221;是不认的，它只认gray中的&#8221;a&#8221;而不认grey中的&#8221;e&#8221;，所以IE浏览器下，CSS3中的颜色名实际上只有140个，而不是147个。</p>
<p>其他就不多说了，关于这147个颜色名称关键字，请看下表：</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1064">http://www.zhangxinxu.com/wordpress/?p=1064</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<style type="text/css">
.css3_color_names td{background:#fff; padding:0 5px;}
.css3_color_names .tr_title td{background-color:#486aaa;}
</style>
<table class="css3_color_names" style="font-size:12px; font-family:Arial, Helvetica, sans-serif; background:#a0b3d6; max-width:660px; _width:600px;" cellpadding="0" cellspacing="1" summary="147个CSS3颜色名称和值表">
<colgroup>
<col style="width: 100px;" />
<col />
<col />
<col />
<col />
<col style="text-align: center;" />
</colgroup>
<tr class="tr_title" height="30px" style="color: #fff; font-weight: bold; font-size:12px;">
<td>名称</td>
<td>16进制</td>
<td>百分值</td>
<td>整数值</td>
<td>16进制缩写</td>
<td>示例</td>
</tr>
<tr>
<td>aliceblue</td>
<td>#f0f8ff</td>
<td>rgb(94.1%,96.9%,100%)</td>
<td>rgb(240,248,255)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #f0f8ff;" alt="Color Example" /></td>
</tr>
<tr>
<td>antiquewhite</td>
<td>#faebd7</td>
<td>rgb(98%,92.2%,84.3%)</td>
<td>rgb(250,235,215)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #faebd7;" alt="Color Example" /></td>
</tr>
<tr>
<td>aqua</td>
<td>#00ffff</td>
<td>rgb(0%,100%,100%)</td>
<td>rgb(0,255,255)</td>
<td>#0ff</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #00ffff;" alt="Color Example" /></td>
</tr>
<tr>
<td>aquamarine</td>
<td>#7fffd4</td>
<td>rgb(49.8%,100%,83.1%)</td>
<td>rgb(127,255,212)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #7fffd4;" alt="Color Example" /></td>
</tr>
<tr>
<td>azure</td>
<td>#f0ffff</td>
<td>rgb(94.1%,100%,100%)</td>
<td>rgb(240,255,255)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #f0ffff;" alt="Color Example" /></td>
</tr>
<tr>
<td>beige</td>
<td>#f5f5dc</td>
<td>rgb(96.1%,96.1%,86.3%)</td>
<td>rgb(245,245,220)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #f5f5dc;" alt="Color Example" /></td>
</tr>
<tr>
<td>bisque</td>
<td>#ffe4c4</td>
<td>rgb(100%,89.4%,76.9%)</td>
<td>rgb(255,228,196)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ffe4c4;" alt="Color Example" /></td>
</tr>
<tr>
<td>black</td>
<td>#000000</td>
<td>rgb(0%,0%,0%)</td>
<td>rgb(0,0,0)</td>
<td>#000</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #000000;" alt="Color Example" /></td>
</tr>
<tr>
<td>blanchedalmond</td>
<td>#ffebcd</td>
<td>rgb(100%,92.2%,80.4%)</td>
<td>rgb(255,235,205)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ffebcd;" alt="Color Example" /></td>
</tr>
<tr>
<td>blue</td>
<td>#0000ff</td>
<td>rgb(0%,0%,100%)</td>
<td>rgb(0,0,255)</td>
<td>#00f</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #0000ff;" alt="Color Example" /></td>
</tr>
<tr>
<td>blueviolet</td>
<td>#8a2be2</td>
<td>rgb(54.1%,16.9%,88.6%)</td>
<td>rgb(138,43,226)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #8a2be2;" alt="Color Example" /></td>
</tr>
<tr>
<td>brown</td>
<td>#a52a2a</td>
<td>rgb(64.7%,16.5%,16.5%)</td>
<td>rgb(165,42,42)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #a52a2a;" alt="Color Example" /></td>
</tr>
<tr>
<td>burlywood</td>
<td>#deb887</td>
<td>rgb(87.1%,72.2%,52.9%)</td>
<td>rgb(222,184,135)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #deb887;" alt="Color Example" /></td>
</tr>
<tr>
<td>cadetblue</td>
<td>#5f9ea0</td>
<td>rgb(37.3%,62%,62.7%)</td>
<td>rgb(95,158,160)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #5f9ea0;" alt="Color Example" /></td>
</tr>
<tr>
<td>chartreuse</td>
<td>#7fff00</td>
<td>rgb(49.8%,100%,0%)</td>
<td>rgb(127,255,0)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #7fff00;" alt="Color Example" /></td>
</tr>
<tr>
<td>chocolate</td>
<td>#d2691e</td>
<td>rgb(82.4%,41.1%,11.8%)</td>
<td>rgb(210,105,30)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #d2691e;" alt="Color Example" /></td>
</tr>
<tr>
<td>coral</td>
<td>#ff7f50</td>
<td>rgb(100%,49.8%,31.4%)</td>
<td>rgb(255,127,80)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ff7f50;" alt="Color Example" /></td>
</tr>
<tr>
<td>cornflowerblue</td>
<td>#6495ed</td>
<td>rgb(39.2%,58.4%,92.9%)</td>
<td>rgb(100,149,237)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #6495ed;" alt="Color Example" /></td>
</tr>
<tr>
<td>cornsilk</td>
<td>#fff8dc</td>
<td>rgb(100%,97.3%,86.3%)</td>
<td>rgb(255,248,220)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #fff8dc;" alt="Color Example" /></td>
</tr>
<tr>
<td>crimson</td>
<td>#dc143c</td>
<td>rgb(86.3%,7.8%,23.5%)</td>
<td>rgb(220,20,60)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #dc143c;" alt="Color Example" /></td>
</tr>
<tr>
<td>cyan</td>
<td>#00ffff</td>
<td>rgb(0%,100%,100%)</td>
<td>rgb(0,255,255)</td>
<td>#0ff</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #00ffff;" alt="Color Example" /></td>
</tr>
<tr>
<td>darkblue</td>
<td>#00008b</td>
<td>rgb(0%,0%,54.5%)</td>
<td>rgb(0,0,139)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #00008b;" alt="Color Example" /></td>
</tr>
<tr>
<td>darkcyan</td>
<td>#008b8b</td>
<td>rgb(0%,54.5%,54.5%)</td>
<td>rgb(0,139,139)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #008b8b;" alt="Color Example" /></td>
</tr>
<tr>
<td>darkgoldenrod</td>
<td>#b8860b</td>
<td>rgb(72.2%,52.5%,4.3%)</td>
<td>rgb(184,134,11)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #b8860b;" alt="Color Example" /></td>
</tr>
<tr>
<td>darkgray</td>
<td>#a9a9a9</td>
<td>rgb(66.3%,66.3%,66.3%)</td>
<td>rgb(169,169,169)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #a9a9a9;" alt="Color Example" /></td>
</tr>
<tr>
<td>darkgreen</td>
<td>#006400</td>
<td>rgb(0%,39.2%,0%)</td>
<td>rgb(0,100,0)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #006400;" alt="Color Example" /></td>
</tr>
<tr>
<td>darkgrey</td>
<td>#a9a9a9</td>
<td>rgb(66.3%,66.3%,66.3%)</td>
<td>rgb(169,169,169)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #a9a9a9;" alt="Color Example" /></td>
</tr>
<tr>
<td>darkkhaki</td>
<td>#bdb76b</td>
<td>rgb(74.1%,71.8%,42%)</td>
<td>rgb(189,183,107)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #bdb76b;" alt="Color Example" /></td>
</tr>
<tr>
<td>darkmagenta</td>
<td>#8b008b</td>
<td>rgb(54.5%,0%,54.5%)</td>
<td>rgb(139,0,139)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #8b008b;" alt="Color Example" /></td>
</tr>
<tr>
<td>darkolivegreen</td>
<td>#556b2f</td>
<td>rgb(33.3%,42%,18.4%)</td>
<td>rgb(85,107,47)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #556b2f;" alt="Color Example" /></td>
</tr>
<tr>
<td>darkorange</td>
<td>#ff8c00</td>
<td>rgb(100%,54.9%,0%)</td>
<td>rgb(255,140,0)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ff8c00;" alt="Color Example" /></td>
</tr>
<tr>
<td>darkorchid</td>
<td>#9932cc</td>
<td>rgb(60%,19.6%,80%)</td>
<td>rgb(153,50,204)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #9932cc;" alt="Color Example" /></td>
</tr>
<tr>
<td>darkred</td>
<td>#8b0000</td>
<td>rgb(54.5%,0%,0%)</td>
<td>rgb(139,0,0)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #8b0000;" alt="Color Example" /></td>
</tr>
<tr>
<td>darksalmon</td>
<td>#e9967a</td>
<td>rgb(91.4%,58.8%,47.8%)</td>
<td>rgb(233,150,122)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #e9967a;" alt="Color Example" /></td>
</tr>
<tr>
<td>darkseagreen</td>
<td>#8fbc8f</td>
<td>rgb(56.1%,73.7%,56.1%)</td>
<td>rgb(143,188,143)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #8fbc8f;" alt="Color Example" /></td>
</tr>
<tr>
<td>darkslateblue</td>
<td>#483d8b</td>
<td>rgb(28.2%,23.9%,54.5%)</td>
<td>rgb(72,61,139)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #483d8b;" alt="Color Example" /></td>
</tr>
<tr>
<td>darkslategray</td>
<td>#2f4f4f</td>
<td>rgb(18.4%,31%,31%)</td>
<td>rgb(47,79,79)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #2f4f4f;" alt="Color Example" /></td>
</tr>
<tr>
<td>darkslategrey</td>
<td>#2f4f4f</td>
<td>rgb(18.4%,31%,31%)</td>
<td>rgb(47,79,79)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #2f4f4f;" alt="Color Example" /></td>
</tr>
<tr>
<td>darkturquoise</td>
<td>#00ced1</td>
<td>rgb(0%,80.8%,82%)</td>
<td>rgb(0,206,209)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #00ced1;" alt="Color Example" /></td>
</tr>
<tr>
<td>darkviolet</td>
<td>#9400d3</td>
<td>rgb(58%,0%,82.7%)</td>
<td>rgb(148,0,211)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #9400d3;" alt="Color Example" /></td>
</tr>
<tr>
<td>deeppink</td>
<td>#ff1493</td>
<td>rgb(100%,7.8%,57.6%)</td>
<td>rgb(255,20,147)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ff1493;" alt="Color Example" /></td>
</tr>
<tr>
<td>deepskyblue</td>
<td>#00bfff</td>
<td>rgb(0%,74.9%,100%)</td>
<td>rgb(0,191,255)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #00bfff;" alt="Color Example" /></td>
</tr>
<tr>
<td>dimgray</td>
<td>#696969</td>
<td>rgb(41.1%,41.1%,41.1%)</td>
<td>rgb(105,105,105)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #696969;" alt="Color Example" /></td>
</tr>
<tr>
<td>dimgrey</td>
<td>#696969</td>
<td>rgb(41.1%,41.1%,41.1%)</td>
<td>rgb(105,105,105)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #696969;" alt="Color Example" /></td>
</tr>
<tr>
<td>dodgerblue</td>
<td>#1e90ff</td>
<td>rgb(11.8%,56.5%,100%)</td>
<td>rgb(30,144,255)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #1e90ff;" alt="Color Example" /></td>
</tr>
<tr>
<td>firebrick</td>
<td>#b22222</td>
<td>rgb(69.8%,13.3%,13.3%)</td>
<td>rgb(178,34,34)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #b22222;" alt="Color Example" /></td>
</tr>
<tr>
<td>floralwhite</td>
<td>#fffaf0</td>
<td>rgb(100%,98%,94.1%)</td>
<td>rgb(255,250,240)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #fffaf0;" alt="Color Example" /></td>
</tr>
<tr>
<td>forestgreen</td>
<td>#228b22</td>
<td>rgb(13.3%,54.5%,13.3%)</td>
<td>rgb(34,139,34)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #228b22;" alt="Color Example" /></td>
</tr>
<tr>
<td>fuchsia</td>
<td>#ff00ff</td>
<td>rgb(100%,0%,100%)</td>
<td>rgb(255,0,255)</td>
<td>#f0f</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ff00ff;" alt="Color Example" /></td>
</tr>
<tr>
<td>gainsboro</td>
<td>#dcdcdc</td>
<td>rgb(86.3%,86.3%,86.3%)</td>
<td>rgb(220,220,220)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #dcdcdc;" alt="Color Example" /></td>
</tr>
<tr>
<td>ghostwhite</td>
<td>#f8f8ff</td>
<td>rgb(97.3%,97.3%,100%)</td>
<td>rgb(248,248,255)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #f8f8ff;" alt="Color Example" /></td>
</tr>
<tr>
<td>gold</td>
<td>#ffd700</td>
<td>rgb(100%,84.3%,0%)</td>
<td>rgb(255,215,0)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ffd700;" alt="Color Example" /></td>
</tr>
<tr>
<td>goldenrod</td>
<td>#daa520</td>
<td>rgb(85.5%,64.7%,12.5%)</td>
<td>rgb(218,165,32)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #daa520;" alt="Color Example" /></td>
</tr>
<tr>
<td>gray</td>
<td>#808080</td>
<td>rgb(50.2%,50.2%,50.2%)</td>
<td>rgb(128,128,128)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #808080;" alt="Color Example" /></td>
</tr>
<tr>
<td>green</td>
<td>#008000</td>
<td>rgb(0%,50.2%,0%)</td>
<td>rgb(0,128,0)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #008000;" alt="Color Example" /></td>
</tr>
<tr>
<td>greenyellow</td>
<td>#adff2f</td>
<td>rgb(67.8%,100%,18.4%)</td>
<td>rgb(173,255,47)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #adff2f;" alt="Color Example" /></td>
</tr>
<tr>
<td>grey</td>
<td>#808080</td>
<td>rgb(50.2%,50.2%,50.2%)</td>
<td>rgb(128,128,128)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #808080;" alt="Color Example" /></td>
</tr>
<tr>
<td>honeydew</td>
<td>#f0fff0</td>
<td>rgb(94.1%,100%,94.1%)</td>
<td>rgb(240,255,240)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #f0fff0;" alt="Color Example" /></td>
</tr>
<tr>
<td>hotpink</td>
<td>#ff69b4</td>
<td>rgb(100%,41.1%,70.6%)</td>
<td>rgb(255,105,180)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ff69b4;" alt="Color Example" /></td>
</tr>
<tr>
<td>indianred</td>
<td>#cd5c5c</td>
<td>rgb(80.4%,36%,36%)</td>
<td>rgb(205,92,92)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #cd5c5c;" alt="Color Example" /></td>
</tr>
<tr>
<td>indigo</td>
<td>#4b0082</td>
<td>rgb(29.4%,0%,51%)</td>
<td>rgb(75,0,130)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #4b0082;" alt="Color Example" /></td>
</tr>
<tr>
<td>ivory</td>
<td>#fffff0</td>
<td>rgb(100%,100%,94.1%)</td>
<td>rgb(255,255,240)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #fffff0;" alt="Color Example" /></td>
</tr>
<tr>
<td>khaki</td>
<td>#f0e68c</td>
<td>rgb(94.1%,90.2%,54.9%)</td>
<td>rgb(240,230,140)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #f0e68c;" alt="Color Example" /></td>
</tr>
<tr>
<td>lavender</td>
<td>#e6e6fa</td>
<td>rgb(90.2%,90.2%,98%)</td>
<td>rgb(230,230,250)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #e6e6fa;" alt="Color Example" /></td>
</tr>
<tr>
<td>lavenderblush</td>
<td>#fff0f5</td>
<td>rgb(100%,94.1%,96.1%)</td>
<td>rgb(255,240,245)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #fff0f5;" alt="Color Example" /></td>
</tr>
<tr>
<td>lawngreen</td>
<td>#7cfc00</td>
<td>rgb(48.6%,98.8%,0%)</td>
<td>rgb(124,252,0)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #7cfc00;" alt="Color Example" /></td>
</tr>
<tr>
<td>lemonchiffon</td>
<td>#fffacd</td>
<td>rgb(100%,98%,80.4%)</td>
<td>rgb(255,250,205)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #fffacd;" alt="Color Example" /></td>
</tr>
<tr>
<td>lightblue</td>
<td>#add8e6</td>
<td>rgb(67.8%,84.7%,90.2%)</td>
<td>rgb(173,216,230)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #add8e6;" alt="Color Example" /></td>
</tr>
<tr>
<td>lightcoral</td>
<td>#f08080</td>
<td>rgb(94.1%,50.2%,50.2%)</td>
<td>rgb(240,128,128)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #f08080;" alt="Color Example" /></td>
</tr>
<tr>
<td>lightcyan</td>
<td>#e0ffff</td>
<td>rgb(87.8%,100%,100%)</td>
<td>rgb(224,255,255)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #e0ffff;" alt="Color Example" /></td>
</tr>
<tr>
<td>lightgoldenrodyellow</td>
<td>#fafad2</td>
<td>rgb(98%,98%,82.4%)</td>
<td>rgb(250,250,210)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #fafad2;" alt="Color Example" /></td>
</tr>
<tr>
<td>lightgray</td>
<td>#d3d3d3</td>
<td>rgb(82.7%,82.7%,82.7%)</td>
<td>rgb(211,211,211)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #d3d3d3;" alt="Color Example" /></td>
</tr>
<tr>
<td>lightgreen</td>
<td>#90ee90</td>
<td>rgb(56.5%,93.3%,56.5%)</td>
<td>rgb(144,238,144)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #90ee90;" alt="Color Example" /></td>
</tr>
<tr>
<td>lightgrey</td>
<td>#d3d3d3</td>
<td>rgb(82.7%,82.7%,82.7%)</td>
<td>rgb(211,211,211)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #d3d3d3;" alt="Color Example" /></td>
</tr>
<tr>
<td>lightpink</td>
<td>#ffb6c1</td>
<td>rgb(100%,71.4%,75.7%)</td>
<td>rgb(255,182,193)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ffb6c1;" alt="Color Example" /></td>
</tr>
<tr>
<td>lightsalmon</td>
<td>#ffa07a</td>
<td>rgb(100%,62.7%,47.8%)</td>
<td>rgb(255,160,122)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ffa07a;" alt="Color Example" /></td>
</tr>
<tr>
<td>lightseagreen</td>
<td>#20b2aa</td>
<td>rgb(12.5%,69.8%,66.7%)</td>
<td>rgb(32,178,170)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #20b2aa;" alt="Color Example" /></td>
</tr>
<tr>
<td>lightskyblue</td>
<td>#87cefa</td>
<td>rgb(52.9%,80.8%,98%)</td>
<td>rgb(135,206,250)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #87cefa;" alt="Color Example" /></td>
</tr>
<tr>
<td>lightslategray</td>
<td>#778899</td>
<td>rgb(46.7%,53.3%,60%)</td>
<td>rgb(119,136,153)</td>
<td>#789</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #778899;" alt="Color Example" /></td>
</tr>
<tr>
<td>lightslategrey</td>
<td>#778899</td>
<td>rgb(46.7%,53.3%,60%)</td>
<td>rgb(119,136,153)</td>
<td>#789</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #778899;" alt="Color Example" /></td>
</tr>
<tr>
<td>lightsteelblue</td>
<td>#b0c4de</td>
<td>rgb(69%,76.9%,87.1%)</td>
<td>rgb(176,196,222)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #b0c4de;" alt="Color Example" /></td>
</tr>
<tr>
<td>lightyellow</td>
<td>#ffffe0</td>
<td>rgb(100%,100%,87.8%)</td>
<td>rgb(255,255,224)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ffffe0;" alt="Color Example" /></td>
</tr>
<tr>
<td>lime</td>
<td>#00ff00</td>
<td>rgb(0%,100%,0%)</td>
<td>rgb(0,255,0)</td>
<td>#0f0</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #00ff00;" alt="Color Example" /></td>
</tr>
<tr>
<td>limegreen</td>
<td>#32cd32</td>
<td>rgb(19.6%,80.4%,19.6%)</td>
<td>rgb(50,205,50)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #32cd32;" alt="Color Example" /></td>
</tr>
<tr>
<td>linen</td>
<td>#faf0e6</td>
<td>rgb(98%,94.1%,90.2%)</td>
<td>rgb(250,240,230)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #faf0e6;" alt="Color Example" /></td>
</tr>
<tr>
<td>magenta</td>
<td>#ff00ff</td>
<td>rgb(100%,0%,100%)</td>
<td>rgb(255,0,255)</td>
<td>#f0f</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ff00ff;" alt="Color Example" /></td>
</tr>
<tr>
<td>maroon</td>
<td>#800000</td>
<td>rgb(50.2%,0%,0%)</td>
<td>rgb(128,0,0)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #800000;" alt="Color Example" /></td>
</tr>
<tr>
<td>mediumaquamarine</td>
<td>#66cdaa</td>
<td>rgb(40%,80.4%,66.7%)</td>
<td>rgb(102,205,170)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #66cdaa;" alt="Color Example" /></td>
</tr>
<tr>
<td>mediumblue</td>
<td>#0000cd</td>
<td>rgb(0%,0%,80.4%)</td>
<td>rgb(0,0,205)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #0000cd;" alt="Color Example" /></td>
</tr>
<tr>
<td>mediumorchid</td>
<td>#ba55d3</td>
<td>rgb(72.9%,33.3%,82.7%)</td>
<td>rgb(186,85,211)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ba55d3;" alt="Color Example" /></td>
</tr>
<tr>
<td>mediumpurple</td>
<td>#9370db</td>
<td>rgb(57.6%,43.9%,85.9%)</td>
<td>rgb(147,112,219)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #9370db;" alt="Color Example" /></td>
</tr>
<tr>
<td>mediumseagreen</td>
<td>#3cb371</td>
<td>rgb(23.5%,70.2%,44.3%)</td>
<td>rgb(60,179,113)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #3cb371;" alt="Color Example" /></td>
</tr>
<tr>
<td>mediumslateblue</td>
<td>#7b68ee</td>
<td>rgb(48.2%,40.8%,93.3%)</td>
<td>rgb(123,104,238)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #7b68ee;" alt="Color Example" /></td>
</tr>
<tr>
<td>mediumspringgreen</td>
<td>#00fa9a</td>
<td>rgb(0%,98%,60.4%)</td>
<td>rgb(0,250,154)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #00fa9a;" alt="Color Example" /></td>
</tr>
<tr>
<td>mediumturquoise</td>
<td>#48d1cc</td>
<td>rgb(28.2%,82%,80%)</td>
<td>rgb(72,209,204)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #48d1cc;" alt="Color Example" /></td>
</tr>
<tr>
<td>mediumvioletred</td>
<td>#c71585</td>
<td>rgb(78%,8.2%,52.2%)</td>
<td>rgb(199,21,133)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #c71585;" alt="Color Example" /></td>
</tr>
<tr>
<td>midnightblue</td>
<td>#191970</td>
<td>rgb(9.8%,9.8%,43.9%)</td>
<td>rgb(25,25,112)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #191970;" alt="Color Example" /></td>
</tr>
<tr>
<td>mintcream</td>
<td>#f5fffa</td>
<td>rgb(96.1%,100%,98%)</td>
<td>rgb(245,255,250)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #f5fffa;" alt="Color Example" /></td>
</tr>
<tr>
<td>mistyrose</td>
<td>#ffe4e1</td>
<td>rgb(100%,89.4%,88.2%)</td>
<td>rgb(255,228,225)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ffe4e1;" alt="Color Example" /></td>
</tr>
<tr>
<td>moccasin</td>
<td>#ffe4b5</td>
<td>rgb(100%,89.4%,71%)</td>
<td>rgb(255,228,181)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ffe4b5;" alt="Color Example" /></td>
</tr>
<tr>
<td>navajowhite</td>
<td>#ffdead</td>
<td>rgb(100%,87.1%,67.8%)</td>
<td>rgb(255,222,173)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ffdead;" alt="Color Example" /></td>
</tr>
<tr>
<td>navy</td>
<td>#000080</td>
<td>rgb(0%,0%,50.2%)</td>
<td>rgb(0,0,128)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #000080;" alt="Color Example" /></td>
</tr>
<tr>
<td>oldlace</td>
<td>#fdf5e6</td>
<td>rgb(99.2%,96.1%,90.2%)</td>
<td>rgb(253,245,230)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #fdf5e6;" alt="Color Example" /></td>
</tr>
<tr>
<td>olive</td>
<td>#808000</td>
<td>rgb(50.2%,50.2%,0%)</td>
<td>rgb(128,128,0)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #808000;" alt="Color Example" /></td>
</tr>
<tr>
<td>olivedrab</td>
<td>#6b8e23</td>
<td>rgb(42%,55.7%,13.7%)</td>
<td>rgb(107,142,35)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #6b8e23;" alt="Color Example" /></td>
</tr>
<tr>
<td>orange</td>
<td>#ffa500</td>
<td>rgb(100%,64.7%,0%)</td>
<td>rgb(255,165,0)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ffa500;" alt="Color Example" /></td>
</tr>
<tr>
<td>orangered</td>
<td>#ff4500</td>
<td>rgb(100%,27.1%,0%)</td>
<td>rgb(255,69,0)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ff4500;" alt="Color Example" /></td>
</tr>
<tr>
<td>orchid</td>
<td>#da70d6</td>
<td>rgb(85.5%,43.9%,83.9%)</td>
<td>rgb(218,112,214)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #da70d6;" alt="Color Example" /></td>
</tr>
<tr>
<td>palegoldenrod</td>
<td>#eee8aa</td>
<td>rgb(93.3%,91%,66.7%)</td>
<td>rgb(238,232,170)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #eee8aa;" alt="Color Example" /></td>
</tr>
<tr>
<td>palegreen</td>
<td>#98fb98</td>
<td>rgb(59.6%,98.4%,59.6%)</td>
<td>rgb(152,251,152)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #98fb98;" alt="Color Example" /></td>
</tr>
<tr>
<td>paleturquoise</td>
<td>#afeeee</td>
<td>rgb(68.6%,93.3%,93.3%)</td>
<td>rgb(175,238,238)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #afeeee;" alt="Color Example" /></td>
</tr>
<tr>
<td>palevioletred</td>
<td>#db7093</td>
<td>rgb(85.9%,43.9%,57.6%)</td>
<td>rgb(219,112,147)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #db7093;" alt="Color Example" /></td>
</tr>
<tr>
<td>papayawhip</td>
<td>#ffefd5</td>
<td>rgb(100%,93.7%,83.5%)</td>
<td>rgb(255,239,213)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ffefd5;" alt="Color Example" /></td>
</tr>
<tr>
<td>peachpuff</td>
<td>#ffdab9</td>
<td>rgb(100%,85.5%,72.5%)</td>
<td>rgb(255,218,185)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ffdab9;" alt="Color Example" /></td>
</tr>
<tr>
<td>peru</td>
<td>#cd853f</td>
<td>rgb(80.4%,52.2%,24.7%)</td>
<td>rgb(205,133,63)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #cd853f;" alt="Color Example" /></td>
</tr>
<tr>
<td>pink</td>
<td>#ffc0cb</td>
<td>rgb(100%,75.3%,79.6%)</td>
<td>rgb(255,192,203)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ffc0cb;" alt="Color Example" /></td>
</tr>
<tr>
<td>plum</td>
<td>#dda0dd</td>
<td>rgb(86.7%,62.7%,86.7%)</td>
<td>rgb(221,160,221)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #dda0dd;" alt="Color Example" /></td>
</tr>
<tr>
<td>powderblue</td>
<td>#b0e0e6</td>
<td>rgb(69%,87.8%,90.2%)</td>
<td>rgb(176,224,230)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #b0e0e6;" alt="Color Example" /></td>
</tr>
<tr>
<td>purple</td>
<td>#800080</td>
<td>rgb(50.2%,0%,50.2%)</td>
<td>rgb(128,0,128)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #800080;" alt="Color Example" /></td>
</tr>
<tr>
<td>red</td>
<td>#ff0000</td>
<td>rgb(100%,0%,0%)</td>
<td>rgb(255,0,0)</td>
<td>#f00</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ff0000;" alt="Color Example" /></td>
</tr>
<tr>
<td>rosybrown</td>
<td>#bc8f8f</td>
<td>rgb(73.7%,56.1%,56.1%)</td>
<td>rgb(188,143,143)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #bc8f8f;" alt="Color Example" /></td>
</tr>
<tr>
<td>royalblue</td>
<td>#4169e1</td>
<td>rgb(25.5%,41.1%,100%)</td>
<td>rgb(65,105,225)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #4169e1;" alt="Color Example" /></td>
</tr>
<tr>
<td>saddlebrown</td>
<td>#8b4513</td>
<td>rgb(54.5%,27.1%,7.5%)</td>
<td>rgb(139,69,19)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #8b4513;" alt="Color Example" /></td>
</tr>
<tr>
<td>salmon</td>
<td>#fa8072</td>
<td>rgb(98%,50.2%,44.7%)</td>
<td>rgb(250,128,114)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #fa8072;" alt="Color Example" /></td>
</tr>
<tr>
<td>sandybrown</td>
<td>#f4a460</td>
<td>rgb(95.7%,64.3%,37.6%)</td>
<td>rgb(244,164,96)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #f4a460;" alt="Color Example" /></td>
</tr>
<tr>
<td>seagreen</td>
<td>#2e8b57</td>
<td>rgb(18%,54.5%,34.1%)</td>
<td>rgb(46,139,87)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #2e8b57;" alt="Color Example" /></td>
</tr>
<tr>
<td>seashell</td>
<td>#fff5ee</td>
<td>rgb(100%,96.1%,93.3%)</td>
<td>rgb(255,245,238)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #fff5ee;" alt="Color Example" /></td>
</tr>
<tr>
<td>sienna</td>
<td>#a0522d</td>
<td>rgb(62.7%,32.2%,17.6%)</td>
<td>rgb(160,82,45)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #a0522d;" alt="Color Example" /></td>
</tr>
<tr>
<td>silver</td>
<td>#c0c0c0</td>
<td>rgb(75.3%,75.3%,75.3%)</td>
<td>rgb(192,192,192)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #c0c0c0;" alt="Color Example" /></td>
</tr>
<tr>
<td>skyblue</td>
<td>#87ceeb</td>
<td>rgb(52.9%,80.8%,92.2%)</td>
<td>rgb(135,206,235)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #87ceeb;" alt="Color Example" /></td>
</tr>
<tr>
<td>slateblue</td>
<td>#6a5acd</td>
<td>rgb(41.6%,35.3%,80.4%)</td>
<td>rgb(106,90,205)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #6a5acd;" alt="Color Example" /></td>
</tr>
<tr>
<td>slategray</td>
<td>#708090</td>
<td>rgb(43.9%,50.2%,56.5%)</td>
<td>rgb(112,128,144)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #708090;" alt="Color Example" /></td>
</tr>
<tr>
<td>slategrey</td>
<td>#708090</td>
<td>rgb(43.9%,50.2%,56.5%)</td>
<td>rgb(112,128,144)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #708090;" alt="Color Example" /></td>
</tr>
<tr>
<td>snow</td>
<td>#fffafa</td>
<td>rgb(100%,98%,98%)</td>
<td>rgb(255,250,250)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #fffafa;" alt="Color Example" /></td>
</tr>
<tr>
<td>springgreen</td>
<td>#00ff7f</td>
<td>rgb(0%,100%,49.8%)</td>
<td>rgb(0,255,127)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #00ff7f;" alt="Color Example" /></td>
</tr>
<tr>
<td>steelblue</td>
<td>#4682b4</td>
<td>rgb(27.5%,51%,70.6%)</td>
<td>rgb(70,130,180)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #4682b4;" alt="Color Example" /></td>
</tr>
<tr>
<td>tan</td>
<td>#d2b48c</td>
<td>rgb(82.4%,70.6%,54.9%)</td>
<td>rgb(210,180,140)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #d2b48c;" alt="Color Example" /></td>
</tr>
<tr>
<td>teal</td>
<td>#008080</td>
<td>rgb(0%,50.2%,50.2%)</td>
<td>rgb(0,128,128)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #008080;" alt="Color Example" /></td>
</tr>
<tr>
<td>thistle</td>
<td>#d8bfd8</td>
<td>rgb(84.7%,74.9%,84.7%)</td>
<td>rgb(216,191,216)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #d8bfd8;" alt="Color Example" /></td>
</tr>
<tr>
<td>tomato</td>
<td>#ff6347</td>
<td>rgb(100%,38.8%%,27.8%)</td>
<td>rgb(255,99,71)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ff6347;" alt="Color Example" /></td>
</tr>
<tr>
<td>turquoise</td>
<td>#40e0d0</td>
<td>rgb(25.1%,87.7%,81.6%)</td>
<td>rgb(64,224,208)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #40e0d0;" alt="Color Example" /></td>
</tr>
<tr>
<td>violet</td>
<td>#ee82ee</td>
<td>rgb(93.3%,51%,93.3%)</td>
<td>rgb(238,130,238)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ee82ee;" alt="Color Example" /></td>
</tr>
<tr>
<td>wheat</td>
<td>#f5deb3</td>
<td>rgb(96.1%,87.1%,70.2%)</td>
<td>rgb(245,222,179)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #f5deb3;" alt="Color Example" /></td>
</tr>
<tr>
<td>white</td>
<td>#ffffff</td>
<td>rgb(100%,100%,100%)</td>
<td>rgb(255,255,255)</td>
<td>#fff</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ffffff;" alt="Color Example" /></td>
</tr>
<tr>
<td>whitesmoke</td>
<td>#f5f5f5</td>
<td>rgb(96.1%,96.1%,96.1%)</td>
<td>rgb(245,245,245)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #f5f5f5;" alt="Color Example" /></td>
</tr>
<tr>
<td>yellow</td>
<td>#ffff00</td>
<td>rgb(100%,100%,0%)</td>
<td>rgb(255,255,0)</td>
<td>#ff0</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #ffff00;" alt="Color Example" /></td>
</tr>
<tr>
<td>yellowgreen</td>
<td>#9acd32</td>
<td>rgb(60.4%,80.4%,19.6%)</td>
<td>rgb(154,205,50)</td>
<td>&nbsp;</td>
<td style="text-align: center;"><img src="http://www.zhangxinxu.com/study/image/color_cover.png" width="50px" height="50px" style="background: #9acd32;" alt="Color Example" /></td>
</tr>
</table>
<p>关于此表，我还专门独立出来了一个页面，专门用来放置这个表格，方面查阅与收藏，您有兴趣可以狠狠地点击这里：<a class="a_link" target="_blank" href="http://www.zhangxinxu.com/study/201008/css3-color-names.php">CSS3下的147个颜色名称独立页面</a></p>
<p>数据来源：<a target="_blank" href="http://www.codenique.com/web_color/css3_color_names.php">http://www.codenique&#8230;es.php</a></p>
<p>原创文章，转载请注明来自<a href="http://www.zhangxinxu.com/">张鑫旭-鑫空间-鑫生活</a>[<a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a>]<br />
本文地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1064">http://www.zhangxinxu.com/wordpress/?p=1064</a></p>
<p>（完）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhangxinxu.com/wordpress/?feed=rss2&amp;p=1064</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>翻译-你必须知道的28个HTML5特征、窍门和技术</title>
		<link>http://www.zhangxinxu.com/wordpress/?p=1058</link>
		<comments>http://www.zhangxinxu.com/wordpress/?p=1058#comments</comments>
		<pubDate>Fri, 27 Aug 2010 13:50:28 +0000</pubDate>
		<dc:creator>张 鑫旭</dc:creator>
				<category><![CDATA[外文翻译]]></category>
		<category><![CDATA[audio]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[Firefox3.6]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[Safari]]></category>
		<category><![CDATA[video]]></category>
		<category><![CDATA[兼容性]]></category>
		<category><![CDATA[本地存储]]></category>
		<category><![CDATA[正则表达式]]></category>
		<category><![CDATA[浏览器]]></category>

		<guid isPermaLink="false">http://www.zhangxinxu.com/wordpress/?p=1058</guid>
		<description><![CDATA[前端的发展如此之迅猛，一不留神，大侠你可能就会被远远地甩在后面了。如果你不想被HTML5的改变/更新搅得不知所措的话，可以把本文的内容作为必须了解的热身课程。
本文为翻译内容，介绍了28个HTML5相关的技术，知识点等。内容较多，不少内容，我都重新制作了demo页面，并配以截图，希望能对您的学习有所帮助。]]></description>
			<content:encoded><![CDATA[<p>by <a href="http://www.zhangxinxu.com/">zhangxinxu</a> from <a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a><br />
本文地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1058">http://www.zhangxinxu.com/wordpress/?p=1058</a></p>
<div id="link">
原文地址：<a href="http://net.tutsplus.com/tutorials/html-css-techniques/25-html5-features-tips-and-techniques-you-must-know/" target="_blank">http://net&#8230;html5-features-tips-and-techniques&#8230;/</a><br />
原文作者：<a href="http://net.tutsplus.com/author/jeffreyway/" target="_blank">Jeffrey Way</a><br />
翻译小编：<a href="http://www.zhangxinxu.com/">张鑫旭</a>
</div>
<p><span class="s">//zxx:以下为翻译全文，本着语言生动和本土化之原则，内容有编辑</span></p>
<p><em>注意：每周有那么几次，此列表会更新一些新的窍门，最终，本文会成为超级有用的资源。</em><br /><span class="s">//zxx:丑话说在前头，我可没功夫更新，所以，即使到您女儿出嫁那天，本文还是28项内容</span></p>
<p>前端的发展如此之迅猛，一不留神，大侠你可能就会被远远地甩在后面了。如果你不想被HTML5的改变/更新搅得不知所措的话，可以把本文的内容作为必须了解的热身课程。</p>
<h3>一、新的Doctype</h3>
<div><span class="s">//zxx:&#8221;doctype&#8221;中文意思指“文档类型”</span></div>
<p>仍在使用麻烦的，不可能记得住的XHTML文档类型？</p>
<div class="zxx_code">
<pre>
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
</pre>
</div>
<p>如果是，为什么还在用呢？使用新的HTML5文档类型代替吧。你会活得更久的——正如Douglas Quaid说的</p>
<div class="zxx_code">
<pre>
&lt;!DOCTYPE html>
</pre>
</div>
<p>我就琢磨着，为了HTML5搞个这厮代码，您可能会对这段代码究竟靠不靠谱表示怀疑。不用担心，如今这是可行的，只有老的浏览器需要一个特定的doctype（文档类型）。浏览器如果不知道doctype，就会很简单的以标准模式对包含的标签进行渲染。所以，妹妹你大胆的向前冲，把小心谨慎都抛到九霄云外，去拥抱新的HTML5文档类型吧。</p>
<h3>二、图形元素(The Figure Element )</h3>
<p>看看下面给图片添加的标示：</p>
<div class="zxx_code">
<pre>
&lt;img src="path/to/image" alt="About image" />
<span class="tag">&lt;</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>Image&nbsp;of&nbsp;Mars.&nbsp;</span><span class="tag">&lt;/</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span>
</pre>
</div>
<p>文字裹在p标签里，与img标签各行其道，很难让人联想到这就是标题。HTML5通过采用<code>&lt;figure&gt;</code>元素对此进行了改正。当合<code>&lt;figcaption&gt;</code>元素组合使用时，我们就可以语义化地联想到这就是图片相对应的标题</p>
<div class="zxx_code">
<pre>
&lt;figure&gt;
    &lt;img src="path/to/image" alt="About image" /&gt;
    &lt;figcaption&gt;
        &lt;p&gt;This is an image of something interesting. &lt;/p&gt;
    &lt;/figcaption&gt;
&lt;/figure&gt;
</pre>
</div>
<h3>三、&lt;small&gt;重新定义</h3>
<p>还在不久前，<code>&lt;small&gt;</code>元素被用来创建靠近logo且相关的副标题。这是个很有用的表现元素，但是，现在，这种用法可能就不正确了。<code>&lt;small&gt;</code>元素已经被重新定义了，指小字，因而更具可用性。试想下你网站底部的版权状态，根据对此元素新的HTML5定义，<code>&lt;small&gt;</code>可以正确地包裹这些信息。</p>
<blockquote><p>
small元素专指“小字”。
</p></blockquote>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1058">http://www.zhangxinxu.com/wordpress/?p=1058</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>四、脚本(scripts)和链接(links)无需<span style="font-family:'Courier New';">type</span></h3>
<p>您可能现在仍在给link和script标签增加type属性。</p>
<div class="zxx_code">
<pre>
&lt;link rel="stylesheet" href="path/to/stylesheet.css" type="text/css" /&gt;
&lt;script type="text/javascript" src="path/to/script.js"&gt;&lt;/script&gt;
</pre>
</div>
<p>这已经是老黄花菜，非必需品了。这意味着，这些标签都各自指向样式表和脚本。因此，我们可以把type属性一起干掉。</p>
<div class="zxx_code">
<pre>
&lt;link rel="stylesheet" href="path/to/stylesheet.css" /&gt;
&lt;script src="path/to/script.js"&gt;&lt;/script&gt;
</pre>
</div>
<h3>五、引号还是不要引号</h3>
<div>&#8230;这确实是个问题。记住，HTML5不是XHTML，要是你不愿意，你没有必要非得用引号标记包裹你的属性，没有必要非得闭合元素。换句话说，只要你自己觉得舒服，就没有什么对错之分。对于我自己来说就是如此。</div>
<div class="zxx_code">
<pre>&lt;p class=myClass id=someId> Start the reactor. </pre>
</div>
<p>对此取舍你还得自己拿主意。如果你更倾向于结构化的文档，就算天塌下来，也要把引号牢牢拽在怀里。</p>
<h3>六、内容可编辑</h3>
<p><img width="380" height="129" title="HTML5内容可编辑 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-26_143154.png" alt="HTML5内容可编辑 张鑫旭-鑫空间-鑫生活" /><img src="http://image.zhangxinxu.com/image/blog/201008/2010-08-26_143302.png" width="396" height="128" title="HTML5内容可编辑 张鑫旭-鑫空间-鑫生活" alt="HTML5内容可编辑 张鑫旭-鑫空间-鑫生活" /></p>
<p>最新的浏览器有个很赞的新属性可以应用到元素上，叫做<code>contenteditable</code>。顾名思意，就是允许用户编辑元素内容包含的任意文本，包括子元素。类似的用途还有很多，像是简单的待办事项清单应用程序，可大大利用其本地存储的优势。</p>
<div class="zxx_code">
<pre>&lt;ul contenteditable="true">
    &lt;li>悼念遇难香港同胞 &lt;/li>
    &lt;li>深圳特区30周年&lt;/li>
    &lt;li>伊春空难&lt;/li>
&lt;/ul></pre>
</div>
<p>或者，根据前面所学到的一些技巧，我们可以把它写成：</p>
<div class="zxx_code">
<pre>&lt;ul contenteditable=true></pre>
</div>
<p>您可以狠狠地点击这里：<a target="_blank" class="a_link" href="http://www.zhangxinxu.com/study/201008/html5-content-editable.html">HTML5内容可编辑demo</a></p>
<h3>七、Email输入(Inputs)</h3>
<p>如果我们给表单输入框应用名为&#8221;email&#8221;的type属性，我们可以命令浏览器只允许符合有效的电子邮件地址结构的字符串。没错，内置表单验证即将到来，由于一些显而易见的原因，我们还不能100%依赖内置验证，较旧的浏览器不认识这个&#8221;email&#8221;型，它们会简单地退回到普通文本框。</p>
<div class="zxx_code">
<pre>
&lt;form action="" method="get">
    &lt;label for="email">邮箱:&lt;/label>&lt;input id="email" name="email" type="email" />
    &lt;button type="submit">确定&lt;/button>
&lt;/form>
</pre>
</div>
<p>您可以狠狠地点击这里：<a target="_blank" class="a_link" href="http://www.zhangxinxu.com/study/201008/html5-build-in-email-validation.html">HTML5邮箱内置验证demo</a></p>
<p><span class="s">//zxx:经我小测了下，貌似仅在Chrome浏览器下有效果(xp系统)，当输入内容不是合法邮箱格式，点击“确定”按钮是没有反应的；当输入为合法邮箱，点击“确定”按钮才会提交刷新页面。</span></p>
<p><img src="http://image.zhangxinxu.com/image/blog/201008/2010-08-26_170948.png" width="304" height="73" title="HTML5邮箱内置验证 张鑫旭-鑫空间-鑫生活" alt="HTML5邮箱内置验证 张鑫旭-鑫空间-鑫生活" /></p>
<div style="width:180px; padding:16px; margin-top:-50px; margin-left:30px; font-family:'华文新魏, 华文行楷, 微软雅黑'; border:1px solid #cadceb; background:#f0f3f9; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; float:right;">目前而言，我们不能依赖浏览器验证，客户端/服务器验证还是必须的。</div>
<p>还应当指出，当谈到哪些元素和属性支持和不支持时，当前所有的浏览器都有点靠不住的。例如，Opera似乎支持电子邮件验证，但仅在name属性被指定的时候。而且，它不支持占位符属性，这个我们将会在后面学到。底线是不依赖于这种形式的验证&#8230;但你仍然可以使用它！</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1058">http://www.zhangxinxu.com/wordpress/?p=1058</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>八、占位符(Placeholders)</h3>
<div><span class="s">//zxx:此处内容非直译，有删改</span></div>
<p>Placeholders什么意思呢，就是文本框/文本域空间默认会有个文字提示，获得焦点时，此提示文字消失；失去焦点时如果内容为空，提示文字又出现。如下图所示：</p>
<div><img width="520" height="123" class="alignnone" title="淘宝首页的搜索提示信息 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201006/2010-06-07_202027.png" alt="淘宝首页的搜索提示信息 张鑫旭-鑫空间-鑫生活" /></div>
<p><img width="543" height="127" class="alignnone" title="flickr网站的搜索提示 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201006/2010-06-07_202641.png" alt="flickr网站的搜索提示 张鑫旭-鑫空间-鑫生活" /></p>
<p>这些表单控件里面显示的些提示性的文字就是占位符。按照以往的做法，我们需要使用一点JavaScript代码实现占位符效果，例如我之前的“<a href="http://www.zhangxinxu.com/wordpress/?p=854">文本框/域文字提示自动显示隐藏jQuery小插件</a>”一文所展示的。当然，你需要设定一个初始的默认的value值，然后根据输入内容进行判断，从而决定文本框值的改变与否。如果您使用占位符(placeholders)属性，一切就轻松了。</p>
<div class="zxx_code">
<pre>
&lt;label for="email">邮箱:&lt;/label>
&lt;input id="email" type="email" placeholder="zhangxinxu@zhangxinxu.com" size="26" />
</pre>
</div>
<p>根据我的测试，目前仅webkit核心的浏览器支持placeholders属性，像是Chrome5，Safari4，结果如下所示：</p>
<div><img src="http://image.zhangxinxu.com/image/blog/201008/2010-08-26_180543.png" width="303" height="81" title="Safari HTML5 placeholders属性 张鑫旭-鑫空间-鑫生活" align="Safari HTML5 placeholders属性 张鑫旭-鑫空间-鑫生活" /><img src="http://image.zhangxinxu.com/image/blog/201008/2010-08-26_180622.png" width="286" height="85" title="Safari HTML5 placeholders属性 张鑫旭-鑫空间-鑫生活" alt="Safari HTML5 placeholders属性 张鑫旭-鑫空间-鑫生活" /></div>
<p>您可以狠狠地点击这里：<a target="_blank" class="a_link" href="http://www.zhangxinxu.com/study/201008/html5-placeholders.html">HTML5占位符Demo</a></p>
<h3>九、本地存储(Local Storage)</h3>
<div>多亏了本地存储(非正式的HTML5，本着方便归纳的目的)，我们可以让高级浏览器记住我们的编辑后的内容，即使浏览器被关掉或是页面刷新。</div>
<p><span class="s">//zxx:原视频默认展示的是YouTube视频，不翻墙看不了，所以，这里展示来自另外一个网站的video。建议全屏观看，以看清其中的HTML与JavaScript代码</span></p>
<div><object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,115,0' width='560' height='345'><param name='movie' value='http://screenr.com/Content/assets/screenr_1116090935.swf' /><param name='flashvars' value='i=60965' /><param name='allowFullScreen' value='true' /><embed src='http://screenr.com/Content/assets/screenr_1116090935.swf' flashvars='i=60965' allowFullScreen='true' width='560' height='345' pluginspage='http://www.macromedia.com/go/getflashplayer'></embed></object></div>
<p><span class="s">//zxx:根据视频内容，我自己做了个demo，关于本地存储的。</span></p>
<p>您可以狠狠地点击这里：<a target="_blank" class="a_link" href="http://www.zhangxinxu.com/study/201008/html5-local-storage.html">HTML5本地存储Demo</a></p>
<p>IE8浏览器已经支持了本地存储，如下截图所示：</p>
<div><img src="http://image.zhangxinxu.com/image/blog/201008/2010-08-26_200302.png" width="353" height="127" title="HTML5本地存储IE8下效果 张鑫旭-鑫空间-鑫生活" alt="HTML5本地存储IE8下效果 张鑫旭-鑫空间-鑫生活" /></div>
<p>尽管显然不支持所有的浏览器，我们可以在Internet Explorer8时，Safari 4和Firefox 3.5下期待此工作方式。请注意，为了弥补旧的浏览器将无法识别本地存储，你应该先测试，以确定window.localStorage是否存在。</p>
<p><img src="http://image.zhangxinxu.com/image/blog/201008/local-storage.jpg" width="550" height="114" title="各个浏览器对HTML5本地存储支持情况一览表 张鑫旭-鑫空间-鑫生活" alt="各个浏览器对HTML5本地存储支持情况一览表 张鑫旭-鑫空间-鑫生活" /></p>
<h3>十、语义的Header和Footer</h3>
<p>那些过往的日子：</p>
<div class="zxx_code">
<pre>&lt;div id="header"&gt;
	...
&lt;/div&gt;

&lt;div id="footer"&gt;
	...
&lt;/div&gt;
</pre>
</div>
<p>div嘛，很自然的，没有语义化的结构——即使在应用了id后。现在，通过HTML5，我们可以使用&lt;header>和&lt;footer>元素。以上的代码可以替换成：</p>
<div class="zxx_code">
<pre>
&lt;header&gt;
	...
&lt;/header&gt;

&lt;footer&gt;
	...
&lt;/footer&gt;
</pre>
</div>
<blockquote><p>它完全适合您有多个页眉和页脚的项目。</p></blockquote>
<p>尽量不要混淆&#8221;header&#8221;和&#8221;footer&#8221;这些元素。他们只是指他们的容器。因此，将博客底部的，例如，元信息放在footer元素内部是说得通的。这同样也适用于header。</p>
<h3>十一、更多HTML5表单特征(More HTML5 Form Features )</h3>
<p>通过下面视频学习更多有用的HTML5表单特征：<span class="s">//zxx:TouTuBe视频，需要翻墙</span></p>
<div style="width:600px; border:1px solid #ddd;"><object width="600" height="267"><param name="movie" value="http://www.youtube.com/v/spjOAFGxOP0&#038;hl=en_US&#038;fs=1&#038;color1=0x3a3a3a&#038;color2=0x999999&#038;hd=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/spjOAFGxOP0&#038;hl=en_US&#038;fs=1&#038;color1=0x3a3a3a&#038;color2=0x999999&#038;hd=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="600" height="267"></embed></object></div>
<h3>十二、IE和HTML5(Internet Explorer and HTML5)</h3>
<p>不幸的是，讨厌的IE浏览器需要动点小手术才能理解新的HTML5元素。</p>
<blockquote><p>
所有元素，默认的，都有个inline的display
</p></blockquote>
<p>为了确保所有新的HTML5元素能以block水平的元素正确地渲染，有必要对其做如下定义：</p>
<div class="zxx_code">
<pre>
header, footer, article, section, nav, menu, hgroup {
    display: block;
}
</pre>
</div>
<p>不幸的是，IE仍旧忽略这些样式，因为它不知道这些标签从哪里来的，好比是header元素。幸运的是，有一个简单的解决办法：</p>
<div class="zxx_code">
<pre>
document.createElement("article");
document.createElement("footer");
document.createElement("header");
document.createElement("hgroup");
document.createElement("nav");
document.createElement("menu");
</pre>
</div>
<p>奇怪的是，这段代码似乎触发IE浏览器。为了更简单将此应用到每个新的应用过程中，雷米夏普(Remy Sharp)创建了一个脚本，通常称为HTML5 shiv。该脚本同样修复了些显示问题。</p>
<div class="zxx_code">
<pre>
&lt;!--[if IE]&gt;
&lt;script src="http://html5shim.googlecode.com/svn/trunk/html5.js"&gt;&lt;/script&gt;
&lt;![endif]--&gt;
</pre>
</div>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1058">http://www.zhangxinxu.com/wordpress/?p=1058</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>十三、文档某一部分的信息(hgroup)</h3>
<div>想象一下，在我的网站的标题，我有我的站点的名称，随后立即由一个副标题。虽然我们可以使用一个&lt;h1>和&lt;h2>标签，为其分别创造标记，但是依旧没有（因为HTML4）一个简单的方法来语义上说明了两者之间的关系。此外，一个h2标记的使用提出了更多的问题，在层次结构上，当涉及到其他网页上显示的标题时。通过使用不影响文档的大纲流hgroup元素，我们可以将这些标题组合在一起。</div>
<div class="zxx_code">
<pre>
&lt;header&gt;
    &lt;hgroup&gt;
        &lt;h1&gt; Recall Fan Page &lt;/h1&gt;
        &lt;h2&gt; Only for people who want the memory of a lifetime. &lt;/h2&gt;
    &lt;/hgroup&gt;
&lt;/header&gt;
</pre>
</div>
<div style="width:468px; height:60px; padding:16px;  font-family:'华文新魏, 华文行楷, 微软雅黑'; border:1px solid #cadceb; background:#f0f3f9; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; "><script type="text/javascript">google_ad_client = "pub-0090627341039040";google_ad_slot = "6836958449";google_ad_width = 468;google_ad_height = 60;</script><script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script></div>
<h3>十四、必要的属性(Required Attribute )</h3>
<p>表单允许新的必要属性，用来指定是否需要特殊的input。这取决于你的代码偏好，你可以以下面两种方式之一申明此属性。</p>
<div class="zxx_code">
<pre>
&lt;input type="text" name="someInput" required>
</pre>
</div>
<p>或者，使用更结构化的方法：</p>
<div class="zxx_code">
<pre>
&lt;input type="text" name="someInput" required="required">
</pre>
</div>
<p>两种方法都行。有了这个代码，并且浏览器支持此属性，如果“someInput”文本框是空白，则表单不会被提交。下面是一个简单的例子，我们还将添加占位符属性，因为没有理由不这样做。</p>
<div class="zxx_code">
<pre>
&lt;form action="" method="get">
    &lt;label for="name">姓名:&lt;/label>
    &lt;input id="name" name="name" type="text" placeholder="zhangxinxu" required="required" />
    &lt;button type="submit">提交&lt;/button>
&lt;/form>
</pre>
</div>
<p>您可以狠狠地点击这里：<a target="_blank" class="a_link" href="http://www.zhangxinxu.com/study/201008/html5-required-attribute.html">HTML5必要属性Demo</a></p>
<p>如果input里面内容是空白，则表单提交的时候，文本框会高亮显示。<span class="s">//zxx:貌似仅在Chrome浏览器下有点小效果</span></p>
<p><img src="http://image.zhangxinxu.com/image/blog/201008/2010-08-26_225252.png" width="348" height="137" title="HTML5必要属性 张鑫旭-鑫空间-鑫生活" alt="HTML5必要属性 张鑫旭-鑫空间-鑫生活" /></p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1058">http://www.zhangxinxu.com/wordpress/?p=1058</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>十五、Autofocus属性</h3>
<p>同样，HTML5的解决方案消除了对JavaScript的需要。如果一个特定的输入应该是“选择”，或有重点的，默认情况下，我们现在可以利用自动获取焦点属性。</p>
<div class="zxx_code">
<pre>&lt;input type="text" name="someInput" placeholder="zhangxinxu" required autofocus></pre>
</div>
<p>有趣的是，虽然我个人更倾向于喜欢XHTML的方法（用引号，等等），写作“autofocus=autofocus”让人感到有点怪。因此，我们将坚持使用单一关键字的方法。</p>
<h3>十六、Audio支持</h3>
<p>我们无需再依赖第三方插件区渲染音频。HTML5提供了<code>&lt;audio&gt;</code>元素，嗯，至少，最终，我们将不必担心这些插件。就目前，只有最近期的的浏览器提供HTML5音频支持。在这个时候，它仍然是一个很好的做法提供一些向后兼容的形式。</p>
<div class="zxx_code">
<pre>&lt;audio autoplay="autoplay" controls="controls"&gt;
    &lt;source src="file.ogg" /&gt;
    &lt;source src="file.mp3" /&gt;
    &lt;a href="file.mp3"&gt;Download this file.&lt;/a&gt;
&lt;/audio&gt;
</pre>
</div>
<p>Mozilla和WebKit的还没有完全相处，当涉及到音频格式， Firefox会希望看到一个.ogg文件，而WebKit的浏览器支持.mp3扩展。这意味着，至少在现在，你应该创建两个版本的音频。</p>
<p>当Safari加载页面时，它不会承认.ogg格式，会跳过它并移动到的MP3版本，因此。请注意IE，每往常一样，不支持这些格式，Opera 10和以及以下版本只能使用.wav文件。</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1058">http://www.zhangxinxu.com/wordpress/?p=1058</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>十七、Video支持</h3>
<p>与<code>&lt;audio&gt;</code>元素很类似，在新的浏览器中也存在Video！事实上，就在最近，<a target="_blank" href="http://apiblog.youtube.com/2010/07/new-way-to-embed-youtube-videos.html">YouTube宣告了新的HTML5视频嵌入</a>，当然，是为支持此功能浏览器。因为HTML5的规范没有指定特定的视频编解码器，它留给了浏览器来决定。虽然Safari和Internet Explorer9可以预期支持H.264格式的视频（其中Flash播放器可以播放），Firefox和Opera是坚持开源Theora 和Vorbis格式。因此，当显示HTML5的视频，您必须提供这两种格式。</p>
<div class="zxx_code">
<pre>&lt;video controls preload&gt;
    &lt;source src="cohagenPhoneCall.ogv" type="video/ogg; codecs='vorbis, theora'" /&gt;
    &lt;source src="cohagenPhoneCall.mp4" type="video/mp4; 'codecs='avc1.42E01E, mp4a.40.2'" /&gt;
    &lt;p&gt; Your browser is old. &lt;a href="cohagenPhoneCall.mp4"&gt;Download this video instead.&lt;/a&gt; &lt;/p&gt;
&lt;/video&gt;
</pre>
</div>
<div style="width:180px; padding:16px; margin-left:30px; margin-top:20px; font-family:'华文新魏, 华文行楷, 微软雅黑'; border:1px solid #cadceb; background:#f0f3f9; -moz-border-radius:5px; -webkit-border-radius:5px; border-radius:5px; float:right;">无论是&#8221;ogg&#8221;格式还是&#8221;mp4&#8243;格式的视频Chrome浏览器都能正确编码</div>
<p>还有一个值得注意的一些事情：</p>
<ol style="padding-left:30px; list-style:decimal; margin:0;">
<li>我们技术上不需要来设置type属性，但是，如果我们不这样做，浏览器不得不自己去寻找类型。节省一些带宽，还是你自己声明下吧。</li>
<li>不是所有的浏览器理解HTML5视频。在资源元素的下面，我们可以提供一个下载链接，或嵌入视频的Flash版本代替。这取决于你。</li>
<li>controls和preload属性就会在下面提及。</li>
<li>有方法可以让所有的浏览器支持video标签，具体参见我前面的“<a title="让所有浏览器支持HTML5 video视频标签" href="http://www.zhangxinxu.com/wordpress/?p=661">让所有浏览器支持HTML5 video视频标签</a>”一文。</li>
</ol>
<h3>十八、视频预载(Preload Videos)</h3>
<p>预载属性不完全是你想的那个样子，虽然，你应该先决定是否要在浏览器预装的视频。是否有必要？或许吧。如果访问者访问一个专门展示了一个视频的页面，你一定要预载的视频，节约参观者等待的一部分时间。影片可以通过设置 preload=&#8221;preload&#8221;或是简单地添加preload进行预载。我更喜欢后者的解决方案，它少了一点多余的东西。</p>
<div class="zxx_code">
<pre>&lt;video preload></pre>
</div>
<h3>十九、显示控制条</h3>
<p>如果你使用过上面的每一个提到的技术点，你可能已经注意到，使用上面的代码，视频仅仅显示的是张图片，没有控制条。为了渲染出播放控制条，我们必须在video元素内指定controls属性。</p>
<div class="zxx_code">
<pre>&lt;video preload controls></pre>
</div>
<p><img class="imgpad" src="http://image.zhangxinxu.com/image/blog/201008/video.jpg" width="526" height="277" title="video控制条 张鑫旭-鑫空间-鑫生活" alt="video控制条 张鑫旭-鑫空间-鑫生活" /></p>
<p>请注意，不同浏览器渲染出来的进度条的模样都是不一样的。</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1058">http://www.zhangxinxu.com/wordpress/?p=1058</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>二十、正则表达式</h3>
<p>你发现自己多久匆匆编写一些正则表达式验证一个特定的文本。多亏了新的pattern属性，我们可以在标签处直接插入一个正则表达式。</p>
<div class="zxx_code">
<pre>
&lt;form action="" method="get">
    &lt;label for="username">姓名:&lt;/label>
    &lt;input id="username" name="username" type="text" placeholder="4-10个英文字母" pattern="[A-Za-z]{4,10}" required="required" autofocus />
    &lt;button type="submit">提交&lt;/button>
&lt;/form>
</pre>
</div>
<p>如果你熟悉正则表达式，那么应该清楚<code>[A-Za-z]{4,10}</code>表示接受4-10位不区分大小写的英文字母。如果浏览器支持pattern属性，则提交表单时，如果文本框中的内容不符合其正则表达式，文本框会高亮显示。如下图所示。</p>
<p><img src="http://image.zhangxinxu.com/image/blog/201008/2010-08-27_134423.png" width="335" height="98" title="HTML5正则表达式 张鑫旭-鑫空间-鑫生活" alt="HTML5正则表达式 张鑫旭-鑫空间-鑫生活" /></p>
<p>您可以狠狠地点击这里：<a target="_blank" class="a_link" href="http://www.zhangxinxu.com/study/201008/html5-regular-expressions.html">HTML5正则表达式Demo</a></p>
<p><span class="s">//zxx:我自己小测了下，貌似目前只在Chrome下有效(win系统)</span></p>
<p>注意到，我们已经开始组合使用这些很棒的属性。</p>
<p>如果您对正则表达式概念模糊了，可以<a target="_blank" href="http://net.tutsplus.com/tutorials/javascript-ajax/you-dont-know-anything-about-regular-expressions/">参见这里</a>。</p>
<h3>二十一、属性支持检测</h3>
<p>如果我们没有方法检测浏览器是否支持这些属性，这些就不能称之为好的属性。恩，不错的观点，事实上我们是有几种方法的，这里我们讨论2个。第一个是利用优秀的<a href="http://modernizr.com/" target="_blank">Modernizr</a>库，或者，我们可以创建和分析这些元素，以确定浏览器的能力。例如，在我们前面的例子，如果我们要确定浏览器是否能使用pattern的属性，我们可以添加一小段JavaScript到我们的页面上：</p>
<div class="zxx_code">
<pre>alert( 'pattern' in document.createElement('input') ); <span style="color:green;">// boolean </span> </pre>
</div>
<p>事实上，这是一种确定浏览器兼容的常用方法。jQuery库了利用这种伎俩。在上面，我们创建了一个新的input元素，并确定了里面的pattern属性浏览器是否认得。如果是，浏览器则支持此功能。否则，当然就不支持了。</p>
<div class="zxx_code">
<pre>&lt;script&gt;
if (!'pattern' in document.createElement('input') ) {
    <span style="color:green;">// do client/server side validation</span>
}
&lt;/script&gt;
</pre>
</div>
<p>谨记此方法依赖于JavaScript。</p>
<h3>二十二、mark元素(Mark Element )</h3>
<p>试想<code>&lt;mark&gt;</code>元素作为高亮。此标签包裹的字符串应该与用户当前的行动相关联。例如，我在一些博客上搜索“北川景子”，我就可以使用一些JavaScript将当前的每个结果字符串用mark标签包裹。</p>
<div class="zxx_code">
<pre>&lt;h3&gt; 搜索结果 &lt;/h3&gt;
&lt;p&gt; 我很喜欢《零秒出手》里面那个拉小提琴的女孩，原来她叫做 &lt;mark&gt;北川景子&lt;/mark&gt;。 &lt;/p&gt;
</pre>
</div>
<h3>二十三、什么时候使用div</h3>
<p>我们有些人开始质问到底何时该使用div。现在我们可以使用header, article, section, 和footer，还有机会使用div&#8230;吗？当然可以。</p>
<blockquote><p>div应该用在没有更好的元素的时候。</p></blockquote>
<p>例如，如果你发现你需要包裹一段代码块在对内容定位处理的包装单元内。不过如果你是包裹一个博客文章，或者，可能是，底部的链接列表，则需考虑分别使用&lt;article>和&lt;nav>元素，因为其更具语义。</p>
<p>二十四、什么可以开始立即使用</p>
<p>一直谈论到现在的HTML5要到2022年才能全部完成，许多人完全忽视它，这是个巨大的错误。事实上，有少量的HTML5的功能，我们可以在我们所有的项目中使用！更简单，更干净的代码总是一件好事。在今天的视频快速展示的技巧中，我将告诉你一些可用的选项。</p>
<div style="width:600px; border:1px solid #ccc;">
<object width="600" height="375"><param name="movie" value="http://www.youtube.com/v/HzCkSv3s0-k&#038;hl=en_US&#038;hd=1&#038;fs=1&#038;color1=0x3a3a3a&#038;color2=0x999999"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/HzCkSv3s0-k&#038;hl=en_US&#038;hd=1&#038;fs=1&#038;color1=0x3a3a3a&#038;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="600" height="375"></embed></object>
</div>
<p><span class="s">//zxx:YouTuBe视频，需要翻墙。</span></p>
<h3>二十五、哪些不是HTML5(What is Not HTML5)</h3>
<p>那些仅凭自己的假设形象将JavaScript变少的过渡被全部归为HTML5的人是可以理解的，嘿，甚至苹果无意中推动这一想法。对于非开发人员，谁管这个呢，它是一个简单的方法适用于现代网页标准。不过，对于我们来说，尽管它可能只是语义，重要的是要准确理解什么不是HTML5。</p>
<ol style="padding-left:30px; margin:10px; list-style:decimal;">
<li><strong>SVG:</strong>不是HTML5，至少5岁了。</li>
<li><strong>CSS3:</strong>不是HTML5，它是&#8230;CSS。</li>
<li><strong>Geolocation:</strong>不是HTML5.<span class="s ml10">//zxx:Geolocation（地理位置）：通过HTML 5，您应该能够使Web应用程序可确定您的位置，并为您提供更多的相关信息。</span></li>
<li><strong>Client Storage(客户端存储):</strong>非HTML5，虽说有一点切合，但被排除在规范之外，原因在于，担忧其作为一个整体，会变得过于复杂。它现在有自己的规范。</li>
<li><strong>Web Sockets:</strong>不是HTML5，同样的，有着自己的一套准则。</li>
</ol>
<p>不管你需求有多大的区别，所有这些技术可以归为现代网络堆栈。事实上，不少这些分支规范的管理着还是同一人。</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1058">http://www.zhangxinxu.com/wordpress/?p=1058</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>二十六、data属性(The Data Attribute)</h3>
<p>我们现在可以很正式地让所有的HTML元素支持自定义属性。然而，以前，我们可能会这样：</p>
<div class="zxx_code">
<pre>&lt;h1 id=someId customAttribute=value&gt; 小样，胆儿挺肥的呢 &lt;/h1&gt;</pre>
</div>
<p>&#8230;校验器会小题大做！但是现在，只要我们以&#8221;data&#8221;为前缀定义我们的自定义属性，盗版属性立马变成正牌的了。如果你发现你曾经把一个重要的数据附加在诸如class的属性上，可能为了JavaScript之用，那么，本属性将大有帮助啊。</p>
<p><strong>HTML片段</strong></p>
<div class="zxx_code">
<pre>&lt;div id="myDiv" data-custom-attr="My Value"&gt; 巴拉巴拉，lady 嘎嘎 &lt;/div&gt;
</pre>
</div>
<p><strong>检索自定义属性的价值</strong></p>
<div class="zxx_code">
<pre>
var theDiv = document.getElementById('myDiv');
var attr = theDiv.getAttribute('data-custom-attr');
alert(attr); <span style="color:green;">// My Value</span>
</pre>
</div>
<p>此属性还可以用在CSS中，例如下面这个有些傻里傻气的CSS文字改变的例子：</p>
<div class="zxx_code">
<pre>
<strong style="display:inline-block;" class="mb10">CSS代码：</strong>
.data_custom { display:inline-block; position: relative; }
.data_custom:hover { color: transparent; }
.data_custom:hover:after {
    content: attr(data-hover-response);
    color: black;
    position: absolute;
    left: 0;
}
</pre>
</div>
<div class="zxx_code">
<pre>
<strong style="display:inline-block;" class="mb10">HTML代码：</strong>
&lt;a class="data_custom" data-hover-response="我说过不要碰我！" href="#">不要碰我，雅蠛蝶~~&lt;/a>
</pre>
</div>
<p>如果你的浏览器支持after伪类，以及content的attr属性，则可以看到类似下面的效果(IE8不一样)：</p>
<p><img src="http://image.zhangxinxu.com/image/blog/201008/2010-08-27_192547.png" width="338" height="125" title="CSS与HTML5自定义属性 张鑫旭-鑫空间-鑫生活" alt="CSS与HTML5自定义属性 张鑫旭-鑫空间-鑫生活" /></p>
<p>要查看上图所示的效果，您可以狠狠地点击这里：<a href="http://www.zhangxinxu.com/study/201008/html5-data-custom-value.html" class="a_link" target="_blank">CSS与HTML5自定义属性demo</a></p>
<p>还有，content属性其实是一个非常强大的属性，由于低版本的IE不支持，所以此属性尚未流行，关于content内容生成技术，可以参见我之前的“<a title="CSS content内容生成技术以及应用" href="http://www.zhangxinxu.com/wordpress/?p=739">CSS content内容生成技术以及应用</a>”这篇文章。</p>
<h3>二十七、Output元素</h3>
<p>正如你可能预料到的，output元素被用来显示部分计算，例如，如果你想显示一个鼠标的位置，或者是一系列数字的总和坐标，这个数据应被插入到output元素中。</p>
<p>举个简单的例子，当提交按钮被按下，我们用JavaScript将两个数字相加值插入到空的output中。</p>
<div class="zxx_code">
<pre>
&lt;form action="" method="get">
    &lt;p>
        10 + 5 = &lt;output name="sum">&lt;/output>
    &lt;/p>
    &lt;button type="submit">计算&lt;/button>
&lt;/form>

(function() {
    var f = document.forms[0];

    if ( typeof f['sum'] !== 'undefined' ) {
        f.addEventListener('submit', function(e) {
            f['sum'].value = 15;
            e.preventDefault();
        }, false);
    } else {
        alert('你的浏览器尚未准备好！');
    }
})();
</pre>
</div>
<p>自己测试了下，貌似现在只有在Opera浏览器下有上佳的效果：</p>
<div><img src="http://image.zhangxinxu.com/image/blog/201008/2010-08-27_205242.png" width="244" height="134" title="HTML5结果输出框 张鑫旭-鑫空间-鑫生活" alt="HTML5结果输出框 张鑫旭-鑫空间-鑫生活" /></div>
<p>如果您现在使用的是较新版本的Opera浏览器，您可以狠狠地点击这里：<a href="/study/201008/html5-output-element.html" class="a_link" target="_blank">HTML5结果输出框demo</a></p>
<p>此元素也可以接受一个属性，它反映了输出相关元素的名称，类似label工作原理。</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1058">http://www.zhangxinxu.com/wordpress/?p=1058</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>二十八、使用区域input创建滑块(Create Sliders with the Range Input)</h3>
<p>HTML5引进了<code>range</code>类型的input。</p>
<div class="zxx_code">
<pre>
&lt;input type="range">
</pre>
</div>
<p>最值得注意的是，它可以接收 min, max, step, 和value 属性，等等。虽然现在似乎只有Opera浏览器充分支持这种输入类型，但是当我们可以实际使用时，这将是美妙无比的！</p>
<p>参见下面的快速演示：</p>
<p><strong>第一步：标签</strong></p>
<div>首先，创建标签</div>
<div class="zxx_code">
<pre>
&lt;form method="post">
    &lt;h4>音量控制&lt;/h4>
    &lt;input type="range" name="range" min="0" max="10" step="1" value="" />
    &lt;output name="result">  &lt;/output>
&lt;/form>
</pre>
</div>
<div class="mt20"><strong>第二步：CSS</strong></div>
<div>下面，我们要使用一点点的样式。我们将使用:before和:after去告知用户我们制定的最大值和最小值。</div>
<div class="zxx_code">
<pre>
input { font-size: 14px; font-weight: bold;  }

input[type=range]:before { content: attr(min); padding-right: 5px; }
input[type=range]:after { content: attr(max); padding-left: 5px;}

output {
    display: block;
    font-size: 5.5em;
    font-weight: bold;
}
</pre>
</div>
<div class="mt20"><strong>第三步：JavaScript</strong></div>
<div>最后，我们</div>
<ul id="ul">
<li>检测我们的浏览器是否认识range input，如果不，显示提示。</li>
<li>当用户移动滑块的时候，动态改变output的值。</li>
<li>监听，当用户离开滑块，插入值，同时本地存储。</li>
<li>然后，下次用户刷新页面的时候，选择的区域和值会自动地设置成他们最后一次选择。</li>
</ul>
<div class="zxx_code">
<pre>
(function() {
    var f = document.forms[0],
        range = f['range'],
        result = f['result'],
        cachedRangeValue = localStorage.rangeValue ? localStorage.rangeValue : 5; 

    <span style="color:green;">// 检测浏览器是否是足够酷</span>
    <span style="color:green;">// 识别range input.</span>
    var o = document.createElement('input');
    o.type = 'range';
    if ( o.type === 'text' ) alert('不好意思，你的浏览器还不够酷，试试最新的Opera浏览器吧。');

    <span style="color:green;">// 设置初始值</span>
    <span style="color:green;">// 无论是否本地存储了，都设置值为5</span>
    range.value = cachedRangeValue;
    result.value = cachedRangeValue;

    <span style="color:green;">// 当用户选择了个值，更新本地存储</span>
    range.addEventListener("mouseup", function() {
        alert("你选择的值是：" + range.value + ". 我现在正在用本地存储保存此值。在现代浏览器上刷新并检测。");
        localStorage ? (localStorage.rangeValue = range.value) : alert("数据保存到了数据库或是其他什么地方。");
    }, false);

    <span style="color:green;">// 滑动时显示选择的值</span>
    range.addEventListener("change", function() {
        result.value = range.value;
    }, false);

})();
</pre>
</div>
<p>您可以狠狠地点击这里：<a href="http://www.zhangxinxu.com/study/201008/html5-range-input.html" class="a_link" target="_blank">HTML5 range input炫酷效果demo</a></p>
<p>我的电脑是xp系统，默认主题，在滑块松开后Opera下的效果如下图所示，酷吧：</p>
<div><img src="http://image.zhangxinxu.com/image/blog/201008/2010-08-27_212908.png" width="522" height="354" title="HTML5 range input炫酷效果 张鑫旭-鑫空间-鑫生活" alt="HTML5 range input炫酷效果 张鑫旭-鑫空间-鑫生活" /></div>
<p>感谢您的阅读！我们已经讨论了很多，但可能只是触及到HTML5的皮毛，全当抛砖引玉，希望能对您的学习有所帮助！</p>
<p><span class="s">//zxx:以上是翻译/编辑的全部内容，内容已经够多了，我就不多说什么了。</span></p>
<p>原创文章，转载请注明来自<a href="http://www.zhangxinxu.com/">张鑫旭-鑫空间-鑫生活</a>[<a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a>]<br />
本文地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1058">http://www.zhangxinxu.com/wordpress/?p=1058</a></p>
<p>（本篇完）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhangxinxu.com/wordpress/?feed=rss2&amp;p=1058</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Apple iphone4官网图片“视网膜”放大效果实现</title>
		<link>http://www.zhangxinxu.com/wordpress/?p=1052</link>
		<comments>http://www.zhangxinxu.com/wordpress/?p=1052#comments</comments>
		<pubDate>Wed, 25 Aug 2010 12:17:41 +0000</pubDate>
		<dc:creator>张 鑫旭</dc:creator>
				<category><![CDATA[jquery实例]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[border-radius]]></category>
		<category><![CDATA[box-shadow]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[iphone4]]></category>
		<category><![CDATA[png]]></category>
		<category><![CDATA[交互]]></category>
		<category><![CDATA[图片放大]]></category>
		<category><![CDATA[图片放大显示]]></category>
		<category><![CDATA[背景图片]]></category>
		<category><![CDATA[苹果]]></category>

		<guid isPermaLink="false">http://www.zhangxinxu.com/wordpress/?p=1052</guid>
		<description><![CDATA[<a href="http://www.zhangxinxu.com/wordpress/?p=1052"><img class="mb10 imgpad" title="Apple iphone4官网图片'视网膜'放大效果实现" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-25_201914.jpg" /></a>
本文的内容就是展示苹果(Apple) iphone 官网上帅气的图片放大显示效果，同时并对其实现进行一番简单的讲解。内容主要涉及CSS3以及一些交互效果的实现，一如既往，巨丰富的页面截图，必要的代码展示，还是就是效果精湛的demo页面，但是，由于自身的懒惰，本文不提供打包的源文件下载。
本文的内容还是有一定的实际意义的，在实际的项目中是可以试试这种交互体验上佳的效果的。就技术而言，里面关于CSS3的一些内容，以及图片放大显示的实现，都有一定的学习价值的。总之，希望本文的内容能够对您的学习有所帮助。]]></description>
			<content:encoded><![CDATA[<p>by <a href="http://www.zhangxinxu.com/">zhangxinxu</a> from <a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a><br />
本文地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1052">http://www.zhangxinxu.com/wordpress/?p=1052</a></p>
<h3>一、ihpone4官方页面帅气的图片放大效果</h3>
<p>这里所说的放大效果不是单纯的显示一张大图（如下）：<br />
<img alt="图片放大的显示 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-25_174434.jpg" title="图片放大的显示 张鑫旭-鑫空间-鑫生活" class="alignnone" width="346" height="229" /></p>
<p>如果您对此放大效果，看见参见我之前的“<a href="http://www.zhangxinxu.com/wordpress/?p=281">jQuery-鼠标经过显示大图并跟随鼠标效果插件</a>”这篇文章。</p>
<p>这里要说的放大效果，类似于放大镜的一种图片放大效果，就像凡客诚品上的衣服鞋子局部大图查看的效果：<br />
<img alt="凡客诚品上图片放大显示效果 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-25_175045.jpg" title="凡客诚品上图片放大显示效果 张鑫旭-鑫空间-鑫生活" class="alignnone" width="536" height="270" /></p>
<p>不过，凡客这里效果实现的技术含量，以及体验效果要比Apple iphone4官方页面的图片放大效果要逊色不少，节约口水，不多说，先一睹为快：<br />
<img alt="iphone4官网上图片放大显示效果 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-25_175455.jpg" title="iphone4官网上图片放大显示效果 张鑫旭-鑫空间-鑫生活" class="alignnone" width="499" height="338" /></p>
<p>正所谓说的不如看的，看的不如摸的，所以，想要亲自体验下官网上的效果，您可以狠狠地点击这里：<a target="_blank" style="color:#cd1100;" href="http://www.apple.com/iphone/features/retina-display.html">iphone4官网页面</a></p>
<p>设计中常有隐喻这一概念，从Apple官网对此效果相关图片的命名来看，此圆圆的圈圈其实是隐喻人的视网膜，也就是人的眼睛的意思。所以，我将此效果叫做“视网膜放大效果”，但是，读起来好生拗口，算了，又不是给儿子取名字。</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1052">http://www.zhangxinxu.com/wordpress/?p=1052</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>二、帅气的效果的实现</h3>
<p>要是几年前，我还在大学里游荡的那会儿，要让所有浏览器下都实现如此帅气的效果基本上是不可能的。为什么呢？因为那个时候的CSS3还在妈妈的怀里吃奶奶，各个现代浏览器对CSS3的支持都很薄弱。但是，树苗会长高的，钱袋会变鼓的，女朋友会有的，万物都是发展的，浏览器也不例外。因而在对CSS3支持愈发成熟的现在，实现如此帅气的图片放大显示效果是不在话下的。</p>
<p><strong>视网膜圆环效果</strong><br />
此效果实现难点也是亮点就是那个3像素白色圆环的“视网膜”模样的东西了，参见下图标注：<br />
<img alt="圆环视网膜 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-25_183905.jpg" title="圆环视网膜 张鑫旭-鑫空间-鑫生活" class="alignnone" width="449" height="274" /></p>
<p>如果您对CSS3有所了解，在现代浏览器下实现此效果应该不难，就是圆角+盒阴影(border-radius &#038; box-shadow)，这两个属性我在前面很多文章都提到，具体就不说了，一些基本的属性，您可以参见这里：“<a target="_blank" href="http://www.zhangxinxu.com/css3/css3-border-radius.php">CSS3 border-radius使用参考</a>”和“<a target="_blank" href="http://www.zhangxinxu.com/css3/css3-box-shadow.php">CSS3 box-shadow使用参考</a>”。</p>
<p>例如，实现本文实例一致的效果的CSS相关代码如下：</p>
<div class="zxx_code">
<pre>
width:220px;
height:220px;
border-width:3px;
border-style:solid;
border-color:#fff;
-moz-border-radius:110px;
-webkit-border-radius:110px;
border-radius:110px;
-moz-box-shadow:0 4px 5px rgba(0, 0, 0, 0.6), 0 0 5px rgba(0, 0, 0, 0.25) inset;
-webkit-box-shadow:rgba(0, 0, 0, 0.6) 0px 4px 5px;
box-shadow:0 4px 5px rgba(0, 0, 0, 0.6), 0 0 5px rgba(0, 0, 0, 0.25) inset;
</pre>
</div>
<p>上面这段CSS就可以实现现代浏览器（Firefox, Chrome, Safari等）下直径220像素的3像素白色边框的圆环效果，然后，将大图以background-image的形式现在在此div上，通过改变background-position的值就可以实现放大的效果了。</p>
<p>下面问题来了，对于并不支持CSS3属性的IE6/7/8浏览器，该咋办呢？实现IE浏览器下的圆角效果方法很多，我在“<a href="http://www.zhangxinxu.com/wordpress/?p=967">PIE使IE支持CSS3圆角盒阴影与渐变渲染</a>”一文中额外由提供了7种IE下圆角实现的方法，其中我们使用的是第三种方法，也就是Drew Diller的<a href="http://www.dillerdesign.com/experiment/DD_roundies/" target="_blank">DD_roundies</a>方法（见下图），这也是苹果 iphone4官方网站实现IE下圆角的方法。<br />
<img alt="IE实现圆角的方法列表 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-25_185745.png" title="IE实现圆角的方法列表 张鑫旭-鑫空间-鑫生活" class="alignnone" width="530" height="362" /></p>
<p>此方法使用很简单，例如，我们要实现一个class为retina_radiusd的div层在IE下有110像素大小的圆角，则具体操作如下：<br />
首先，调用此js文件，如下代码所示：</p>
<div class="zxx_code">
<pre>&lt;script type="text/javascript" src=http://www.zhangxinxu.com/study/js/dd_roundies.js">&lt;/script></pre>
</div>
<p>然后，清风拂面般的，一小行代码就搞定了：</p>
<div class="zxx_code">
<pre>
<span style="color:#999;">//IE圆角</span>
DD_roundies.addRule(".retina_radius", "110px");
</pre>
</div>
<p>于是乎，我们很轻松的，就把圆角的显示给搞定了。</p>
<p>但是，IE下仅仅是个圆角未免显得太寒酸了，因为人家毕竟还是有投影效果的，硬生生采了人家的黄花是不厚道的。所以，为了满足好的视觉效果，IE下我们还需要圆环投影效果的透明png图片做辅助，如下photoshop中截图所示：<br />
<img alt="白边圆环投影效果png图片 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-25_191228.png" title="白边圆环投影效果png图片 张鑫旭-鑫空间-鑫生活" class="alignnone" width="268" height="264" /></p>
<p>我们可以直接以img标签的形式写在class为retina_radiusd的div标签内，通过定位于原白色边框重合，至于IE6浏览器不支持png Alpha透明，那只能委屈IE6直接显示白色圆环边框框了。所以，IE6下的效果就是：<br />
<img alt="IE6下的白色圆环效果 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-25_192122.png" title="IE6下的白色圆环效果 张鑫旭-鑫空间-鑫生活" class="alignnone" width="359" height="127" /></p>
<p>IE7及其以上版本浏览器是：<br />
<img alt="IE7下的白边圆环效果 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-25_192341.png" title="IE7下的白边圆环效果 张鑫旭-鑫空间-鑫生活" class="alignnone" width="310" height="121" /></p>
<p><strong>移动放大效果</strong><br />
class为retina_radiusd的div层的background-image就是大图，由于是background-image所以只显示了div的大小的这部分图片。我们现在要做的就是在鼠标移动的时候，改变其background-position的值和本身的left,top值就可以了。</p>
<p>具体脚本参见实例页面，由于自己比较懒，不想写计算元素offset的方法，所以实例代码用的是jQuery写的。方法名是：fnRetinaZoom，有四个参数，为obj, target, scaleX, scaleY，如下图所示：<br />
<img alt="脚本方法与参数 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-25_193443.png" title="脚本方法与参数 张鑫旭-鑫空间-鑫生活" class="alignnone" width="523" height="115" /></p>
<p>这里的四个参数分别指小图片（或者说移动区域对象），目标对象（即圆环视网膜），横向大图的偏移比例，纵向大图的偏移比例。例如，实例中的此使用如下：</p>
<div class="zxx_code">
<pre>
var oRetina = $("#retinaImage"), tRetina = $("#retinaRadius");
var fnRetinaZoom = function(obj, target, scaleX, scaleY){
    ...
    ...
}(oRetina, tRetina, 1.524, 1.78);
</pre>
</div>
<p>至于方法内部的具体实现，除了点移动范围限制，其他都是些残念，没什么看头，这里就不喋喋了。</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1052">http://www.zhangxinxu.com/wordpress/?p=1052</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>三、demo页面</h3>
<p>当当当当，您可以狠狠地点击这里：<a target="_blank" class="a_link" href="http://www.zhangxinxu.com/study/201008/apple-picture-hover-radius-zoom.html">图片“视网膜”放大效果demo</a>，demo页面上有全部的CSS/HTML/JavaScript代码展示，所以，原谅懒惰的我，就不打包源文件了。</p>
<p>demo效果截图：<br />
<img alt="demo效果截图 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-25_200430.jpg" title="demo效果截图 张鑫旭-鑫空间-鑫生活" class="alignnone" width="411" height="759" /></p>
<h3>四、清新淡雅的结语</h3>
<p>首先，需要说明的，我所写的实例虽说效果跟苹果官方效果长得挺模子的，但是HTML的结构，实现的原理，理解的难易程度都是有着犹如凤姐与志玲姐般明显的区别。原来官方的实现很扰人的，所以呢，如果您奔着学习的目的呢，官方的脚本代码可以置之一边，不闻不问。</p>
<p>然后，今天下午，大雨倾盆了N小时，温度降下来了，人也少了份燥热，多了份清静淡雅，感觉写文章语言也变得犀利了。</p>
<p>最后，由于环境，心理，能力等诸多潜在原因，难免出现一些吐槽的或是感伤的笔误，欢迎指正。</p>
<p>原创文章，转载请注明来自<a href="http://www.zhangxinxu.com/">张鑫旭-鑫空间-鑫生活</a>[<a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a>]<br />
本文地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1052">http://www.zhangxinxu.com/wordpress/?p=1052</a></p>
<p>（本篇完）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhangxinxu.com/wordpress/?feed=rss2&amp;p=1052</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>翻译-不同CSS技术及其CSS性能</title>
		<link>http://www.zhangxinxu.com/wordpress/?p=1045</link>
		<comments>http://www.zhangxinxu.com/wordpress/?p=1045#comments</comments>
		<pubDate>Thu, 19 Aug 2010 13:22:37 +0000</pubDate>
		<dc:creator>张 鑫旭</dc:creator>
				<category><![CDATA[外文翻译]]></category>
		<category><![CDATA[css相关]]></category>
		<category><![CDATA[OOCSS]]></category>
		<category><![CDATA[SASS]]></category>
		<category><![CDATA[分离]]></category>
		<category><![CDATA[前端性能]]></category>
		<category><![CDATA[性能]]></category>
		<category><![CDATA[渲染]]></category>
		<category><![CDATA[精简]]></category>
		<category><![CDATA[选择器]]></category>
		<category><![CDATA[面向对象]]></category>

		<guid isPermaLink="false">http://www.zhangxinxu.com/wordpress/?p=1045</guid>
		<description><![CDATA[本文是篇译文，主要简单介绍了一些CSS技术，例如面向对象CSS还有就是SASS技术，然后重点是对这些技术下的CSS性能进行了测试从而得出关于CSS以及浏览器方面的一些数据。其实OOCSS以及SASS是技术的难点，和值得讲解的地方，但是本文的重点不在此，而在其CSS性能。其他就不多说了，本文有截图，有代码展示，还有演示文稿，希望能对您的学习有所帮助。]]></description>
			<content:encoded><![CDATA[<p>by <a href="http://www.zhangxinxu.com/">zhangxinxu</a> from <a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a><br />
本文地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1045">http://www.zhangxinxu.com/wordpress/?p=1045</a></p>
<div id="link">原作者：<a title="查看Dave Gregory的所有文章" href="http://screwlewse.com/author/Dave Gregory/" target="_blank">Dave Gregory</a><br />原文地址：<a target="_blank" href="http://screwlewse.com/2010/08/different-css-techniques-and-their-performance/">http://screwlewse.com/20&#8230;d-their-performance/</a><br />翻译：<a href="http://www.zhangxinxu.com/">张鑫旭</a></div>
<p><span class="s">//zxx:以下非特别标注的内容均来自原文，不代表个人观点</span></p>
<h3>一、为什么我要测试CSS的性能</h3>
<div>这是背景：</div>
<div>我是<a target="_blank" href="http://wiki.github.com/stubbornella/oocss/" style="text-decoration:underline;">OOCSS</a>(<span class="s">译者注：面向对象CSS</span>)的忠实粉丝。但是最近工作，我一直使用<a target="_blank" href="http://compass-style.org/">Compass</a>,<a target="_blank" href="http://sass-lang.com/">SASS</a>(<span class="s">译者注：SASS使CSS函数化，有诸如变量，嵌套，混合，继承等特性，需Ruby支持</span>).我有时候感觉到OOCSS和SASS似乎有点古怪。我的一个朋友把我介绍给了<a target="_blank" href="http://chriseppstein.github.com/blog/" title="Chris Eppstien的博客">Chris Eppstein</a>(Compass的创建者)，我们就SASS中的<code>@extend</code>方法进行了探讨。所以我决定创建一个CSS测试页面，用一种很原生态的方式来显示是否SASS的<code>@extend</code>方法和CSS的OOCSS方法之间有着显著的性能差异。</div>
<p><strong>译者补充</strong>，下图为SASS<code>@extend</code>继承实现的示例截图：<br /><img src="http://image.zhangxinxu.com/image/blog/201008/2010-08-19_194501.png" width="475" height="335" title="SASS @extend使用截图 张鑫旭-鑫空间-鑫生活" alt="SASS @extend使用截图 张鑫旭-鑫空间-鑫生活" /></p>
<p>关于OOCSS，Nicole Sullivan有份不错的ppt教案，具体见下面：</p>
<div style="width:425px" id="__ss_990405"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/stubbornella/object-oriented-css" title="Object Oriented CSS">Object Oriented CSS</a></strong><object id="__sse990405" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=oocss-1233786987806904-3&#038;stripped_title=object-oriented-css" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse990405" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=oocss-1233786987806904-3&#038;stripped_title=object-oriented-css" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object>
<div style="padding:5px 0 12px">查看更多<a href="http://www.slideshare.net/stubbornella">Nicole Sullivan</a>的<a href="http://www.slideshare.net/">presentations</a>.</div>
</div>
<p>本想翻译下的，结果此幻灯片被作者设置为不能下载，要是自己翻译并重新制作份幻灯片，是腾不出那么多时间的，所以作罢。其有两个主要原则：</p>
<div>* 分离结构和皮肤<br />* 分离容器和内容</div>
<p>此原则多少与自己“<a title="CSS样式分离之再分离" href="http://www.zhangxinxu.com/wordpress/?p=916">CSS样式分离之再分离</a>”一文中提到的一些思想类似。</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1045">http://www.zhangxinxu.com/wordpress/?p=1045</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>二、测试如何工作的</h3>
<p>此测试制造了差不多2000个box，所有的box都有一个独一无二的背景（样式）。有几种格式用来测试（见下面的链接），你可以逐个更改以测试器速度的差异。只要根据您的意愿点击相应的链接。</p>
<p>此测试用了一小段脚本，此段脚本来自Steve Souder的博文：<a target="_blank" href="http://www.stevesouders.com/blog/2009/03/10/performance-impact-of-css-selectors/" title="Steve CSS测试方面的相关研究">Performance Impact of CSS Selectors</a>(CSS选择器的性能影响)</p>
<p>Steve的文章可以说是进入了CSS选择器性能更细致的一个境界，非常值得阅读。</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1045">http://www.zhangxinxu.com/wordpress/?p=1045</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>三、CSS格式</h3>
<p>1. <strong>OOCSS</strong> (似乎挺快的)，双class，如：<code>class="box box-#"</code>，基本的CSS样式在class box中，然后直添加背景样式在唯一的class中。</p>
<p>2. <strong>Sass @extend</strong> (速度不确定)，一个class，如<code>class="box-3"</code>，然后在基本规则上创建一个多选择器规则，如<code>.box-1, .box-2 {generics}</code>。</p>
<p>3. <strong>嚣张的CSS</strong> 添加所有的基本CSS到一个唯一的class上，没有“瘦身”。</p>
<p>4. <strong>使用ID选择器</strong> 虽然我不建议使用ID，但是用来测试还是值得一试的。</p>
<p>5. <strong>没有CSS</strong> 很好的底线测试</p>
<p>代码示例？</p>
<p><strong>OOCSS样式:</strong>一个主class，包含所有的共同规则，然后一个独特的规则使用其他class</p>
<div class="zxx_code">
<pre>.box {padding:25px;border:1px solid #000;border-radius:5px;}
.box-1 {background-color:#FFEE00;}
.box-2 {background-color:#00FFee;}
<div class="box box-1">...</div>
</pre>
</div>
<p><strong>@extend样式:</strong>将所有的独特class归为一个，逗号分隔的使用公用属性的class列表。</p>
<div class="zxx_code">
<pre>.box-1,.box-2 {padding:25px;border:1px solid #000;border-radius:5px;}
.box-1 {background-color:#FFEE00;}
.box-2 {background-color:#00FFEE;}
<div class="box-1">...</div>
</pre>
</div>
<p><strong>长(肿胀)样式：</strong>所有的公共样式都分离到独一无二的class中。</p>
<div class="zxx_code">
<pre>.box-1 {
  padding:25px;
  border:1px solid #000;
  border-radius:5px;
  background-color:FFEE00;}
.box-2 {
  padding:25px;
  border:1px solid #000;
  border-radius:5px;
  background-color:00FFEE;}
<div class="box-1">...</div>
</pre>
</div>
<p><strong>无CSS：</strong>有点儿自我解释</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1045">http://www.zhangxinxu.com/wordpress/?p=1045</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>四、测试结果</h3>
<p>测试结果貌似挺有趣的，让我们看看一些图表好吗？</p>
<p><img src="http://image.zhangxinxu.com/image/blog/201008/oimg.png" width="450" height="320" class="imgpad" title="opera浏览器下测试结果 张鑫旭-鑫空间-鑫生活" alt="opera浏览器下测试结果 张鑫旭-鑫空间-鑫生活" /></p>
<p><img src="http://image.zhangxinxu.com/image/blog/201008/oimg_ff.png" width="450" height="320" class="imgpad" title="firefox浏览器下测试结果 张鑫旭-鑫空间-鑫生活" alt="firefox浏览器下测试结果 张鑫旭-鑫空间-鑫生活" /></p>
<p><img src="http://image.zhangxinxu.com/image/blog/201008/oimg_ch.png" width="450" height="320" class="imgpad" title="Chrome6浏览器下测试结果 张鑫旭-鑫空间-鑫生活" alt="Chrome6浏览器下测试结果 张鑫旭-鑫空间-鑫生活" /></p>
<p><img src="http://image.zhangxinxu.com/image/blog/201008/oimg_sa.png" width="450" height="320" class="imgpad" title="Safari浏览器下测试结果 张鑫旭-鑫空间-鑫生活" alt="Safari浏览器下测试结果 张鑫旭-鑫空间-鑫生活" /></p>
<p>所以让我们先讨论下CSS性能，这里有些我发现的东东：</p>
<ul id="ul">
<li>类(class)选择器和ID选择器基本上是相同的速度</li>
<li>SASS/Compass的<code>@extend</code>格式仅稍稍落后于OOCSS格式</li>
<li>臃肿的格式在大数量级速度比其他格式明显要慢</li>
<li>即使是极端的情况，最好与最坏的时间差异也在100-200毫秒之间</li>
</ul>
<p>还有浏览器性能要注意的（加分）：</p>
<ul id="ul">
<li>大多数浏览器的表现大致相同，只是略快一些</li>
<li>火狐是测试的浏览器中最慢的</li>
<li>Opera渲染快速的CSS最快，渲染慢速的CSS最慢</li>
</ul>
<p>还有就是我自己测试后的个人结论：</p>
<ul id="ul">
<li>OOCSS和@extend格式相当快</li>
<li>肿胀的CSS有害性能</li>
</ul>
<p>哦，，差点忘了，这里是<a target="_blank" href="http://www.screwlewse.com/labs/css-performance-test.php">测试页面</a>。</p>
<p><strong>更新：</strong><br />在测试中我发现有一些出入，可能影响测试，所以我删除任何外部引用的文件，和其他可能影响CSS性能的东东（像是text-shadow）。</p>
<p><span class="s">//zxx:以上是翻译的全部</span></p>
<h3>五、简短开溜的结语</h3>
<p>一般来讲，一个页面的CSS渲染效率的高低与该页面的CSS量有一定的关系。使用面对对象或是我提过的分离的思想都是精简CSS，提高CSS性能的不错的手段。</p>
<p>翻译能力有限，如果有什么不准确的地方欢迎指正。<br />就这些。</p>
<p>原创文章，转载请注明来自<a href="http://www.zhangxinxu.com/">张鑫旭-鑫空间-鑫生活</a>[<a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a>]<br />
本文地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1045">http://www.zhangxinxu.com/wordpress/?p=1045</a></p>
<p>（本篇完）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhangxinxu.com/wordpress/?feed=rss2&amp;p=1045</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>HTML5 css reset</title>
		<link>http://www.zhangxinxu.com/wordpress/?p=1043</link>
		<comments>http://www.zhangxinxu.com/wordpress/?p=1043#comments</comments>
		<pubDate>Thu, 19 Aug 2010 13:12:55 +0000</pubDate>
		<dc:creator>张 鑫旭</dc:creator>
				<category><![CDATA[css相关]]></category>
		<category><![CDATA[css reset]]></category>
		<category><![CDATA[HTML5]]></category>

		<guid isPermaLink="false">http://www.zhangxinxu.com/wordpress/?p=1043</guid>
		<description><![CDATA[本文内容很简单，就是展示了下HTML5下的CSS reset代码，希望能需要的人提供些帮助。由于本人相当鄙视这类冗余无比的CSS reset，所以，自己也就没有说什么内容。]]></description>
			<content:encoded><![CDATA[<p>by <a href="http://www.zhangxinxu.com/">zhangxinxu</a> from <a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a><br />
本文地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1043">http://www.zhangxinxu.com/wordpress/?p=1043</a></p>
<p>我个人是比较讨厌这类冗余的CSS reset（参见我“<a title="CSS reset的重新审视 &ndash; 避免样式重置" href="http://www.zhangxinxu.com/wordpress/?p=758">CSS reset的重新审视 &ndash; 避免样式重置</a>”），绝大多数是浪费代码，浪费性能。我个人建议是找到其中自己需要的，不要全盘照搬。</p>
<div class="zxx_code">
<pre>/*
html5doctor.com Reset Stylesheet
v1.4.1
2010-03-01
Author: Richard Clark - http://richclarkdesign.com
*/

html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code,
del, dfn, em, img, ins, kbd, q, samp,
small, strong, sub, sup, var,
b, i,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, summary,
time, mark, audio, video {
    margin:0;
    padding:0;
    border:0;
    outline:0;
    font-size:100%;
    vertical-align:baseline;
    background:transparent;
}

body {
    line-height:1;
}

:focus {
	outline: 1;
}

article,aside,canvas,details,figcaption,figure,
footer,header,hgroup,menu,nav,section,summary {
    display:block;
}

nav ul {
    list-style:none;
}

blockquote, q {
    quotes:none;
}

blockquote:before, blockquote:after,
q:before, q:after {
    content:'';
    content:none;
}

a {
    margin:0;
    padding:0;
    border:0;
    font-size:100%;
    vertical-align:baseline;
    background:transparent;
}

ins {
    background-color:#ff9;
    color:#000;
    text-decoration:none;
}

mark {
    background-color:#ff9;
    color:#000;
    font-style:italic;
    font-weight:bold;
}

del {
    text-decoration: line-through;
}

abbr[title], dfn[title] {
    border-bottom:1px dotted #000;
    cursor:help;
}

table {
    border-collapse:collapse;
    border-spacing:0;
}

hr {
    display:block;
    height:1px;
    border:0;
    border-top:1px solid #cccccc;
    margin:1em 0;
    padding:0;
}

input, select {
    vertical-align:middle;
}</pre>
</div>
<p>此段包含HTML5的CSS reset来自：<a href="http://html5reset.org/">http://html5reset.org/</a></p>
<p>希望能需要的人提供些帮助。</p>
<p>原创文章，转载请注明来自<a href="http://www.zhangxinxu.com/">张鑫旭-鑫空间-鑫生活</a>[<a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a>]<br />
本文地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1043">http://www.zhangxinxu.com/wordpress/?p=1043</a></p>
<p>（本篇完）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhangxinxu.com/wordpress/?feed=rss2&amp;p=1043</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>js+flash(as3)实现复制文字内容到剪切板</title>
		<link>http://www.zhangxinxu.com/wordpress/?p=1037</link>
		<comments>http://www.zhangxinxu.com/wordpress/?p=1037#comments</comments>
		<pubDate>Tue, 17 Aug 2010 13:01:45 +0000</pubDate>
		<dc:creator>张 鑫旭</dc:creator>
				<category><![CDATA[flash相关]]></category>
		<category><![CDATA[js实例]]></category>
		<category><![CDATA[ActionScript 3.0]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[flash传参]]></category>
		<category><![CDATA[flash加载外部图片]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js相关]]></category>
		<category><![CDATA[交互]]></category>
		<category><![CDATA[剪切板]]></category>
		<category><![CDATA[文字复制]]></category>

		<guid isPermaLink="false">http://www.zhangxinxu.com/wordpress/?p=1037</guid>
		<description><![CDATA[单纯的js复制文字到剪切板较啰嗦，由于考虑到安全性等原因，使用类似点击按钮这类复制文字内容的操作往往多有限制，所以，总的来看，使用js实现文字等内容的复制不是个好方法。既然，js实现文字的复制有点啰哩吧嗦的，我们可以转向其他的方法，例如JavaScript的近亲，ActionScript，在AS3下，实现文字复制到剪切板要比js轻松很多。本文就是介绍如何通过flash为媒介实现将web页面上的文字复制到剪切板中。
提供代码展示，提供demo页面，提供源文件打包下载，希望能对您的学习有所帮助。]]></description>
			<content:encoded><![CDATA[<p>by <a href="http://www.zhangxinxu.com/">zhangxinxu</a> from <a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a><br />
本文地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1037">http://www.zhangxinxu.com/wordpress/?p=1037</a></p>
<h3>一、单纯的js复制文字到剪切板较啰嗦</h3>
<p>单纯的js复制文字到剪切板较啰嗦，由于考虑到安全性等原因，使用类似点击按钮这类复制文字内容的操作往往多有限制，例如IE浏览器下可以使用类似下面的方法复制一段文字到剪切板：</p>
<div class="zxx_code">
<pre>
if(window.clipboardData) {
    window.clipboardData.clearData();
    window.clipboardData.setData("text", "这是复制的文字");
}
</pre>
</div>
<p>结果执行的时候会有类似于下面的警戒提示:<br />
<img alt="IE下复制文字的安全提示 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-17_195827.png" title="IE下js复制文字的安全提示 张鑫旭-鑫空间-鑫生活" class="alignnone" width="391" height="175" /></p>
<p>至于其他浏览器，使用js实现也是比较啰嗦的，貌似好需要对浏览器进行一些设置，例如火狐Firefox浏览器被需要在浏览器地址栏输入&#8217;about:config&#8217;并回车，然后将&#8217;signed.applets.codebase_principal_support&#8217;设置为&#8217;true&#8217;才行，显然，不是个什么好方法。</p>
<p>所以，总的来看，使用js实现文字等内容的复制不是个好方法。</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1037">http://www.zhangxinxu.com/wordpress/?p=1037</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>二、使用Flash做媒介轻松实现复制</h3>
<p>既然，js实现文字的复制有点啰哩吧嗦的，我们可以转向其他的方法，例如JavaScript的近亲，ActionScript。一般而言，Flash是不存在兼容性的问题，只有支持与不支持。在AS3下，实现文字复制的方法有几个，我这里使用的是：</p>
<div class="zxx_code">
<pre>Clipboard.generalClipboard.setData(ClipboardFormats.TEXT_FORMAT, "这里是复制的文字内容");</pre>
</div>
<p>很简单吧。现在有些麻烦的是与页面js的传参与交互。</p>
<p>AS3下获取外部传递的参数，可以使用：</p>
<div class="zxx_code">
<pre>var paramObj:Object = LoaderInfo(this.root.loaderInfo).parameters;</pre>
</div>
<p>然后通过paramObj["参数名"]就可以获得外部具体的参数了。</p>
<p>我们还需要给js一个回调，告诉使用者是否复制成功。可以使用：</p>
<div class="zxx_code">
<pre>ExternalInterface.call("js方法");</pre>
</div>
<p>我们可以使用flashvars将要复制的文字传给Flash，通过Flash讲文字复制到剪切板上，同时回调给页面上的js。</p>
<p>然后，还有一点，由于安全性的原因，后来的Flash版本只支持点击事件以及键盘事件的复制，所以考虑到兼容性，我决定使用Flash按钮触发复制文字内容到剪切板。同时考虑到扩展性，所以按钮图片从外部使用Loader类调用。于是，我们总共需要两个参数，一是要复制的文字内容，二是按钮图片路径。</p>
<p>关于Flash接受参数，复制，回调等我都已经写好了，您所要所的就是在js脚本上设置些参数就好了，具体使用见下面。</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1037">http://www.zhangxinxu.com/wordpress/?p=1037</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>三、js+flash(cs3)实现复制文字内容到剪切板</h3>
<p>本实例我的是使用SWFObject2.0脚本转载Flash，关于SWFObject2.0，您可以参见网易的“<a target="_blank" title="SWFObject2.0: 基于Javascript的Flash媒体版本检测与嵌入模块"  href="http://www.ued163.com/?p=592">SWFObject2.0: 基于Javascript的Flash媒体版本检测与嵌入模块</a>”这篇文章，对于此脚本的使用里面有着非常详细的介绍。</p>
<p>具体步骤如下，<br />
<strong>1.</strong>调用SWFObject2.0脚本，如下：</p>
<div class="zxx_code">
<pre>&lt;script src="http://www.zhangxinxu.com/Scripts/swfobject_modified.js" type="text/javascript">&lt;/script></pre>
</div>
<p>我上面的这个swfobject脚本是由Dreamweaver生成的。</p>
<p><strong>2.</strong> 给设定Flash的一些参数，假设我们要复制的值来自一个id为“zxxTestArea”的文本域，则一些设置如下：</p>
<div class="zxx_code">
<pre>var copyCon = document.getElementById("zxxTestArea").value;
var flashvars = {
    content: encodeURIComponent(copyCon),
    uri: '../image/flash_copy_btn.png'
};
var params = {
    wmode: "transparent",
    allowScriptAccess: "always"
};</pre>
</div>
<p>其中，flashvars中content指的是要复制的文字内容，uri是按钮图片的路径。params是设置Flash本身的一些属性，其中wmode不是必须的，但是allowScriptAccess是需要的，跨域处理安全沙箱等问题需要。</p>
<p><strong>3.</strong> 传参并显示Flash</p>
<div class="zxx_code">
<pre>swfobject.embedSWF("../js/clipboard.swf", "forLoadSwf", "52", "25", "9.0.0", null, flashvars, params);</pre>
</div>
<p>上面参数分别表示的是“flash的地址”，“用以装载并替换的HTML节点id”，“flash的宽”，“flash的高”，“flash版本”，“flash Player更新安装的swf调用地址”，“传给flash的参数”，“flash本身的一些参数”。</p>
<p>例如页面上有这么段HTML：</p>
<div class="zxx_code">
<pre>&lt;span id="forLoadSwf">&lt;/span></pre>
</div>
<p>则此span标签就会被替换成flash，id也赋予给flash。</p>
<p><strong>4.</strong> 回调给js<br />
我在swf文件中给了js一个回调方法，方法名为“copySuccess”，例如：</p>
<div class="zxx_code">
<pre>function copySuccess(){
    //flash回调
    alert("复制成功！");
}</pre>
</div>
<p>查看具体实际的效果，您可以狠狠地点击这里：<a class="a_link" target="_blank" href="http://www.zhangxinxu.com/study/201008/js-as3-copy-words-to-clipboard.html">js+flash(cs3)复制文字到剪切板demo</a></p>
<p><strong>下载</strong><br />
关于此flash文件以及demo页面我已经打包成zip文件了，您可以狠狠地点击这里：<a class="a_link" target="_blank" href="http://www.zhangxinxu.com/study/down/zxx_clipboard.zip">zxx_clipboard.zip</a>(右键-[目标|链接]另存为)</p>
<h3>四、其他一些说明</h3>
<p>1、我已经设置了舞台元素大小不随着flash大小改变而拉伸，同时按钮图片左上角显示，所以，您可以放心大胆的将swf的高宽设置成按钮图片的高宽。<br />
2、可能是自己多事，我给按钮添加了一个透明度改变的hover效果，也就是移到flash装载的图片按钮上时，此按钮透明度为变成80%，移出时又变成100%透明度。<br />
3、由于使用语调用都非常简单明了，不像同样采用flash交互的uploadify插件复杂，所以，这里没有将其插件化。<br />
4、参数名以及回调函数的名称都是固定的，如果您使用其他的参数名则不会有效果的。其中您可以在回调的copySuccess方法添加一些更加人性化的提示方式。<br />
5、demo页面第二个文本域是方便您测试的，可以随时通过粘贴的方式检测是否确实复制成功。<br />
6、就这些，谢谢！</p>
<p>原创文章，转载请注明来自<a href="http://www.zhangxinxu.com/">张鑫旭-鑫空间-鑫生活</a>[<a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a>]<br />
本文地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1037">http://www.zhangxinxu.com/wordpress/?p=1037</a></p>
<p>（本篇完）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhangxinxu.com/wordpress/?feed=rss2&amp;p=1037</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CSS页面重构之“门派”之分</title>
		<link>http://www.zhangxinxu.com/wordpress/?p=1022</link>
		<comments>http://www.zhangxinxu.com/wordpress/?p=1022#comments</comments>
		<pubDate>Sat, 14 Aug 2010 14:49:46 +0000</pubDate>
		<dc:creator>张 鑫旭</dc:creator>
				<category><![CDATA[css相关]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[QQ邮箱]]></category>
		<category><![CDATA[兼容性]]></category>
		<category><![CDATA[圆角按钮]]></category>
		<category><![CDATA[宽度自适应]]></category>
		<category><![CDATA[扩展性]]></category>
		<category><![CDATA[流体布局]]></category>
		<category><![CDATA[渐进增强]]></category>
		<category><![CDATA[理论]]></category>
		<category><![CDATA[腾讯]]></category>
		<category><![CDATA[腾讯微博]]></category>
		<category><![CDATA[重用性]]></category>
		<category><![CDATA[页面重构]]></category>
		<category><![CDATA[高度自适应]]></category>

		<guid isPermaLink="false">http://www.zhangxinxu.com/wordpress/?p=1022</guid>
		<description><![CDATA[本文是我CSS理论方面又一篇重磅的文章。文中提出了CSS页面重构一个非常新颖的“门派”观点，主要指出了当下CSS页面重构两种主要的“流派”，并通过大量的实例与图片对此观点进行了说明与验证。
对于CSS页面重构的“门派”之分，其实自己的思考还不是很成熟，借此文顺便梳理了下自己的思考。这里，我特别想汲取其他同行的一些观点与看法，以帮助自己进一步地成长。所以非常欢迎指出您觉得表达不准确的地方，也欢迎提出您自己的一些观点。]]></description>
			<content:encoded><![CDATA[<p>by <a href="http://www.zhangxinxu.com/">zhangxinxu</a> from <a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a><br />
本文地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1022">http://www.zhangxinxu.com/wordpress/?p=1022</a></p>
<h3>一、事物发展之普遍规律</h3>
<p>纵观美学史，哲学史，科学发展史，生物进化史，随着其进化与发展，无一不体现了一个普遍的规律，就所谓的“流派”与“分支”。即事物发展到一定阶段，必然会有“分支”产生。</p>
<p>例如经济学，原本的经济学，在很长一段时间内，经济学科曾经认为是伦理学的一个分支（语见阿马蒂亚·森的《伦理学与经济学》）。但是着资本主义商品经济的发展和社会分工的深化，人类经济活动的内容愈来愈复杂、丰富，专业化程度愈来愈细密;同时，各种经济活动之间、经济活动与其他社会活动之间相互依存、相互渗透的联系，也愈来愈紧密。为了适应这种情况，经济学的研究范围也愈来愈扩展。于是各类经济学分支涌现出来。最后有诸如：理论经济学，经济史，经济数量的分析、计量方法，应用经济学等分类。</p>
<p>又如发展历史较短的生物学，原来的生物学顶多动植物学，随着孟德尔发现遗传规律，百年来，生物学的发现势如破竹，现下，生物学的分类包括：分子生物学、生物分类学、习性学、微生物学、细菌学、微生物生理学、微生物遗传学、土壤微生物学、细胞学、细胞生物学、细胞化学、细胞遗传学、生理学、免疫学、胚胎学、优生学、悉生生物学、遗传学、分子遗传学、生态学、仿生学、<br />
生物物理学、生物力学、生物力能学、生物声学、生物化学、生物数学等。而我大学学的专业就属于比较崭新生物学分类——系统生物学（之生物信息学）。</p>
<p>如果你跟马云老师一样，喜欢武侠，也应该很清楚，随着“武功”这种东西不断发展，就会不断有新的门派出来。例如全真教、明教、五岳剑派、武当、崆峒派，峨嵋派等等太多太多了。当我们还是一群猩猩猴子的时候，有什么武功门派吗？估计没有吧，只有所谓“江湖”，所谓“武侠”发展了，自然就会衍生出不同的武学体系，不同的门派。</p>
<p><img alt="火影之六道仙人 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/liudao.jpg" title="火影之六道仙人 张鑫旭-鑫空间-鑫生活" class="alignleft mr10" width="200" height="88" />如果您也看《火影》，应该知道，传说现在所有的忍术都是拥有轮回眼的一个叫“六道仙人”的家伙创立的。其忍术随着后代的传承以及其他形式的传播，已经有了明显的分类，虽然这方面我十足业余，但是我知道，至少有风、活、雷、土、水五种不同性质的忍术。</p>
<p>说了这么多，无非想说明，事物发展必然会出现差异与分支。</p>
<p>按照这种规律，像互联网发展如此迅猛，其应该也产生了很多新的分支。确实如此，就社会职业来讲，随着互联网的发展，出现了输入交互设计师，网页设计师，UI设计师，还有就是我现在所从事的前端开发工程师这些职位。然而，这些显而易见的东西不是本文的论述重点。我的主要观点是关于CSS与页面重构的。</p>
<p>就目前而言，CSS的发展是短暂的，不过十几年。这大致10年的时间CSS是不断发展的，从CSS1~CSS3，名字虽然变了，功能与效用也越来越强大了，但是这个CSS还是这个CSS，其中并没有所谓的分类，例如分为（我瞎命名的）界面CSS，或是功能CSS，没有，虽然CSS属性有所分类，但是，这个CSS还是这个CSS。</p>
<p>然而，当我们将CSS应用到HTML代码上，去重构页面的时候，我渐渐发现，CSS似乎有了“流派”之分，虽然，这种“流派分支”还不是很清晰，但是我看到了其中的苗头，而且可以逐渐的理出头绪来。所以，我决定将我认为的“当前CSS页面重构存在流派之分”这个观点提炼出来并加以阐述论证。我发现，理顺了这个东西，前端的眼界开阔了，对其他同行的认识更清晰了，对于实际的工作也有很实际的指导意义。这也是本文的意义所在。</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1022">http://www.zhangxinxu.com/wordpress/?p=1022</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>二、CSS页面重构之混沌状态</h3>
<p>纵观业界，有太多的人埋头写过CSS了，包括我自己，我们根据设计图，根据CSS样式的含义，设计不同的CSS组合，然后重构页面。但是，我们都是埋头写CSS，陷在CSS的迷雾中。这就好像，我们每天上班下班，谈恋爱，购物或是ooxx，却看不到对这个大的人类社会造成了什么影响一样。因为就我们大多数人而言，这个影响微乎其微，少了我们，地球依然很坚挺的旋转，重庆依然会有42度的高温，所以，我们会忽略，这是正常的，我也是这样子的。我们中国，上万个（数据YY，表示写CSS的人多）写CSS代码的，加载一起，会对整个CSS体系没有一点影响吗？影响是有的，但是，目前状况而言，CSS仍然多混沌，要说分支，顶多一个苗头而已。</p>
<p>假设，CSS与页面重构是条直线，如下图所示：<br />
<img alt="CSS潜在分支值直线 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/zhixian.png" title="CSS潜在分支值直线 张鑫旭-鑫空间-鑫生活" class="alignnone" width="500" height="75" /></p>
<p>直线上任意一点可能会出现一个新的分支，或者说流派，或者说以后的主流与趋势。当我们某位CSS页面工程师为某个页面写了一个CSS，注意一个很重要的前提：“<strong>CSS认真书写，人非CSS菜鸟</strong>”，其在整个CSS水平线上必然有个位置，这个位置根据其CSS以及页面的重用性，兼容性，代码简洁度，效率等会有个特定的位置，我们现在在这个位置上画一个圈圈，见下图：<br />
<img alt="CSS流派 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-12_205520.png" title="CSS流派 张鑫旭-鑫空间-鑫生活" class="alignnone" width="511" height="184" /></p>
<p>现在，我们国内有上万甚至更多的优秀的CSS工程师，假设他们每写一个页面，就会根据他们CSS代码以及重构的页面的特点在这条CSS线上画一个圈，结果，当圈圈很多后，有了广泛的统计数据后，结果如何，在我看来，会类似于下面，依旧显得混乱，无规律。<br />
<img alt="CSS倾向点的广泛分布图 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-12_210717.png" title="CSS倾向点的广泛分布图 张鑫旭-鑫空间-鑫生活" class="alignnone" width="512" height="271" /></p>
<p>我们，尤其是经验丰富的CSS页面工程师，他们都有自己的一套布局方式或是书写准则，也可以说是习惯，在他们看来，我这种写法是最相当合理。当他们用自己的这套准侧去审视别人的代码或是页面的时候，如果看到不一样的地方，心中可能就会暗想：这里不应该这样写，这个页面这个按钮怎么在不同浏览器下不一样啊，这个人水平不行，离我还有差距。或许，它是狠狠地扎根在了兼容性这个点上，而对方扎在的页面扩展性这个点上，如果以自己的优势去审视别人的，结果往往就是相互鄙视，可悲啊，陷在自己的那个小葫芦里，整个CSS与页面重构是条直线，不是你自以为的一个点，所以<strong>不要轻易使用自己的那套CSS准则去评判别人的代码</strong>。</p>
<p>上图，还有些内容，没有补全，完整点的内容应该如下图所示：<br />
<img alt="混沌的CSS  张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-12_213605.png" title="混沌的CSS  张鑫旭-鑫空间-鑫生活" class="alignnone" width="511" height="410" /></p>
<p>目前的CSS是混沌的，没有明显的风格派别之分，我们会误以为CSS就是我们所掌握的那点世界。其实，可能你我都是上面那条直线上的红点，只是由于你我在直线的两端，可能就会互认为对方应该是下面那条水平线上的。</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1022">http://www.zhangxinxu.com/wordpress/?p=1022</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>三、CSS页面重构之两类风格端倪</h3>
<p>我们写页面，非常非常重要的一个重要指导思想就是<strong>有限条件下的权衡</strong>，然而，由于事物的发展，企业文化，团队前辈的继承等因素，这种权衡的侧重点是不一样的，这也就成为了CSS页面重构“流派化”的星星之火，理论基础。然而，有太多的CSS页面制作人员能够写出一个过得去的页面已经不错了，对他们来讲，完全没有CSS代码的权衡侧重点这个概念与意识。整体的参差不齐使得权衡侧重点的界限很模糊，CSS页面重构的“门派”之分也就被掩埋了。所以，要想找到“门派”之分的端倪，需去粗取精，看那些具有代表性的，真正优秀的CSS工程师的页面重构权衡侧重点。</p>
<p>我觉得我所熟知的最具有代表性的两个页面重构代表性站点是“腾讯网”和“Google”。这两个网站代表了当下两类不太明显的CSS派别，前者是“兼容体验派”，后者是“扩展性能派”，用上面的图表示就是：<br />
<img alt="qq与Google的门派之分 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-12_221417.png" title="qq与Google的门派之分 张鑫旭-鑫空间-鑫生活" class="alignnone" width="509" height="397" /></p>
<p>虽然这两大互联网公司的内容与业务有所不同，某种程度上，缺少一定的可比性，但是，我们依然可以从同类型的产品上看到一定的端倪与差异，例如非常优秀的qq邮箱和gmail邮箱。qq邮箱可以说是qq的一系列产品说最接近简洁与性能的产品了，但是，毕竟是非常重视用户体验的腾讯公司的产品，很多时候，在考虑性能成本与视觉体验上，其很明显的倾向了视觉体验上，这与将简洁之道贯彻到底且性能至尚的gmail是不同的。</p>
<p>首先，qq邮箱是兼容性非常良好的，这里所说的兼容性是指在各个浏览器的模样是非常之接近的，例如下面在Firefox3.6和IE7下，qq邮箱默认皮肤的截图：<br />
<img alt="qq邮箱Firefox3.6下截图 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-13_213317.png" title="qq邮箱Firefox3.6下截图 张鑫旭-鑫空间-鑫生活" class="alignnone" width="558" height="401" /><br />
<img alt="IE7下qq邮箱截图 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-13_213607.png" title="IE7下qq邮箱截图 张鑫旭-鑫空间-鑫生活" class="alignnone" width="568" height="410" /></p>
<p>对比可以发现，在QQ邮箱下，无论是按钮，边框，以及自定义下拉样式，位置等都是一模一样的。现在我们来看看gmail邮箱在Firefox3.6浏览器和IE7浏览器下的UI表现：<br />
<img alt="gmail在Firefox3.6浏览器下 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-13_214019.png" title="gmail在Firefox3.6浏览器下 张鑫旭-鑫空间-鑫生活" class="alignnone" width="569" height="258" /></p>
<p>现在看看gmail在IE7浏览器下的样子，如下图：<br />
<img alt="gmail在IE7下的截图 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-13_214535.png" title="gmail在IE7下的截图 张鑫旭-鑫空间-鑫生活" class="alignnone" width="571" height="270" /></p>
<p>如果以我们狭义的“兼容性”准则来评判gmail，其可能是不及格的，因为其在不同浏览器下的按钮差别不是一般的大，Firefox下是细腻的渐变质感，而IE浏览器下是略显生硬的高光质感。而实际上，在我看来，无论是兼容性良好的QQ邮箱，还是看似“兼容性”奇怪的gmail邮箱，都是非常优秀的，只是他们站立的角度与位置不同而已。在体验兼容性和性能扩展性权衡的时候，QQ邮箱则倾向于了更好的视觉体验，及牺牲一点页面代码或是加载的成本来获得更好的视觉体验；而Gmail邮箱在权衡的时候，更注重的是代码的数量，页面性能，页面的加载成本，至于视觉体验，反而是次要的。</p>
<p>这种权衡时的不同倾向代表了CSS页面重构可能的两种不同的风格与流派。</p>
<p>还是邮箱的例子，我们再具体深入点。我们通过具有代表意义的下拉来一窥QQ与Gmail在页面重构上不同的思想。<br />
<img alt="QQ邮箱下拉 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-13_220900.png" title="QQ邮箱下拉 张鑫旭-鑫空间-鑫生活" class="" width="288" height="92" /><img alt="Gmail邮箱的下拉 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-13_220925.png" title="Gmail邮箱的下拉 张鑫旭-鑫空间-鑫生活" class="" width="269" height="83" /></p>
<p>首先QQ邮箱的下拉，如下：<br />
<img alt="QQ邮箱下拉的些标注 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-13_221649.png" title="QQ邮箱下拉的些标注 张鑫旭-鑫空间-鑫生活" class="alignnone" width="363" height="323" /></p>
<p>可能是考虑到兼容性，可能是考虑到IE6下select框有些傲骨的坏脾气，或者就是为了更好的UI体验，QQ邮箱使用一个长得像下拉框的东东模拟的下拉选择，显然，这类较好的体验，同时又要兼顾兼容性，显然需要一定的成本，QQ邮箱在此的成本控制上已经很出色了，但是，还是逃不了要使用图片的命运，如上图所示。同时，为了让各个浏览器表现一致，其下拉弹出内容的背景使用的是2像素的实色来模拟的。</p>
<p>Gmail可谓极致简洁，能够不使用图片就不使用图片。Google的产品似乎没有所谓了“兼容性”的概念，他可不管什么浏览器下都要一个样子，其准则就是怎样简洁，怎样成本低，怎样页面加载速度快，同时有最大化的视觉体验就怎么来。</p>
<p>同样的下拉效果，其是如何处理，其为何在不同浏览器下会有不同的UI表现呢？体会了其页面重构的准则和思想就不难理解。Google是页面扩展性、简洁以及性能方面的专家，站在这些角度去看待其页面code，很多东西也不难理解了。Google的页面到按钮基本上都是采用的流体布局，即自适应布局，不仅宽度自适应，高度也是自适应的，会尽量避免使用图片，能够使用CSS模拟或是字符模拟的都采用这类方式实现。例如其顶部的更多后面的尖角就是使用的三角字符（QQ多邮箱切换三角也是如此）：<br />
<img alt="下拉三角 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-13_232834.png" title="下拉三角 张鑫旭-鑫空间-鑫生活" class="" width="211" height="62" /><img alt="QQ下拉字符 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-13_233120.png" title="QQ下拉字符 张鑫旭-鑫空间-鑫生活" class="" width="279" height="82" /></p>
<p>现在来看Gmail的下拉，先看Firefox3.6下的按钮，Firefox下，其圆角细腻渐变的按钮是使用CSS3实现的：<br />
<img alt="CSS3下的按钮 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-13_233455.png" title="CSS3下的按钮 张鑫旭-鑫空间-鑫生活" class="alignnone" width="421" height="216" /></p>
<p>如果想要实现各个浏览器“兼容”，要实现Firefox下的这个细腻质感的圆角按钮效果势必要使用图片或是其他耗性能的方法。但是Gmail或者说Google产品中没有所谓的“完全兼容”这个概念，其走的是“渐进增强”的路线。（关于“渐进增强”，可以参见我的“<a title="CSS  渐进增强 在web制作中常见应用举例"  href="http://www.zhangxinxu.com/wordpress/?p=788">CSS 渐进增强 在web制作中常见应用举例</a>”一文）</p>
<p>这在下拉的显示层的投影样式上也可见这种“渐进增强”的思想：<br />
<img alt="Gmail下CSS3 盒阴影效果 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-13_234658.png" title="Gmail下CSS3 盒阴影效果 张鑫旭-鑫空间-鑫生活" class="alignnone" width="365" height="287" /></p>
<p>而同样的下拉内容在IE7下就是个简单的边框：<br />
<img alt="IE下的下拉内容样式 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-13_234958.png" title="IE下的下拉内容样式 张鑫旭-鑫空间-鑫生活" class="alignnone" width="287" height="234" /></p>
<p>还有，很重要的，这里IE7下的下拉按钮，为何是个长得其实不咋地的高光按钮呢？关于这个按钮，我之前专门写过文章“<a title="关于Google圆角高光高宽自适应按钮及其拓展" href="http://www.zhangxinxu.com/wordpress/?p=292">关于Google圆角高光高宽自适应按钮及其拓展</a>”，这个高光效果按钮是100%使用CSS模拟的，从圆角到渐变，高度自适应，宽度自适应。是个高性能，高扩展的按钮，但是其视觉体验相比其技术含量就要逊色很多，然而，这就是Google前端的风格。</p>
<p><span class="s">//zxx:今年9月份之前IE6打开Gmail会看到另一番天地，过了这个时间段，就无缘再见啦~~ </span></p>
<p>这种“渐进增强”的思想也体现在了Google的图片搜索上，Firefox3.6下和IE下的图片搜索结果页真是截然不同。Firefox下的显示真是非常的强大，我一直还没明白其图片两端对齐是如何实现，回头有时间一定要好好研究研究。<br />
<img alt="火狐下搜福田麻由子 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-14_224305.jpg" title="火狐下搜福田麻由子 张鑫旭-鑫空间-鑫生活" class="alignnone" width="549" height="367" /></p>
<p>总结之，Google按钮效果坚决不使用图片，不支持CSS3的IE浏览器就采用多标签模拟不错的按钮效果，对于已经支持CSS3的Firefox等浏览器，就应用“渐进增强”，使用单标签+CSS3实现。最后，还有一点我是疑惑的，也是让我着实郁闷了一下的，我总以为Gmail中这个按钮下拉的三角是字符，与上面与左侧的三角一样是字符，其实用小bug(我对firebug昵称)一看，使用的是背景图片，一个小小的CSS Sprite(点击<a class="a_link" target="_blank" href="https://mail.google.com/mail/?ui=2&#038;view=dim&#038;iv=ysifagm6kxth&#038;it=vi">这里</a>查看此图)，对于属于Google流派的我着实不解了一把，为何不用字符呢，我用字符试了下，效果也是很ok的：<br />
<img alt="字符下的下拉按钮效果 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-14_000505.png" title="字符下的下拉按钮效果 张鑫旭-鑫空间-鑫生活" class="alignnone" width="404" height="313" /></p>
<p>兼容性与扩展性也是经常会发生冲突的对立的两个权衡点，QQ则倾向于兼容性，而Google则倾向于扩展性，这是这两个流派的主要特点。很简单的例子，QQ邮箱的下拉定高了，而Gmail的下拉没有固定高度（为了高度亦自适应，增加扩展性）：<br />
<img alt="QQ邮箱之下拉定高 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-14_001156.png" title="QQ邮箱之下拉定高 张鑫旭-鑫空间-鑫生活" class="alignnone" width="431" height="228" /></p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1022">http://www.zhangxinxu.com/wordpress/?p=1022</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>四、我是典型的“扩展”派</h3>
<p>我从小就是个特立独行的人，潜意识里总是拒绝随大流的东西，虽然这让我成为了心灵的孤独者，但是可能是运气好，总能时不时呼吸到新鲜空气。这种意识也无形中渗透到了我的代码中，随着自己渐渐地成长，越来越不是个中规中矩的代码布道者，随着时间的推移，我发现我处理CSS的方式似乎与绝大多数的网站的CSS不再一个点上，像是在一条线的两端。于是，我总是不断思考其间的不同之处，后来想通了，是页面重构的权衡点的差异，我在这段，而很多在另一端。而我这一段，与Google产品权衡点位置接近，我把自己归结为“扩展”派，我在处理页面的时候，想到是页面的重用与扩展性，其次就是性能，至于所谓的像素级的兼容性，还有一些体验细节，则是次重点。</p>
<p>举个简单的例子，您可能就会明白我在说些什么了。</p>
<p>例如，处理按钮，首先，简单样式的按钮，我会使用CSS模拟，而不使用图片，因为我觉得这样子的按钮扩展性更强，宽度随意，颜色修改方便，例如我<a href="http://www.zhangxinxu.com/" class="a_link" target="_blank">个人网站</a>上的所有圆角按钮都是用CSS模拟的。<br />
<img alt="CSS模拟的按钮 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-14_194254.png" title="CSS模拟的按钮 张鑫旭-鑫空间-鑫生活" class="alignnone" width="290" height="151" /></p>
<p>或是<a href="http://www.zhangxinxu.com/php/regist.php" class="a_link" target="_blank">注册页面</a>的注册注册按钮：<br />
<img alt="CSS模拟之按钮 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-14_194653.png" title="CSS模拟之按钮 张鑫旭-鑫空间-鑫生活" class="alignnone" width="314" height="193" /></p>
<p>如果按钮使用CSS模拟成本过高（理论上任何的按钮效果都可以使用CSS实现），我也会使用图片，但是，我会将按钮背景图片制作成这样的：<br />
<img alt="我仅制作一张长按钮图 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-14_200102.png" title="我仅制作一张长按钮图 张鑫旭-鑫空间-鑫生活" class="alignnone" width="156" height="83" /></p>
<p>我会去按钮的极限宽度作为按钮背景图的宽度，一种按钮就一行图片，然后采用自适应技术实现。也就是说一种按钮效果只要一段样式就可以了，没有必要为各种宽度的按钮分别写样式。我是完全倾向了按钮的扩展性与重用性。如果是QQ公司的页面重构师，会怎么处理了。我打开企鹅的团购页面，发现没什么像样的按钮；然后有打开了QQ校友，随便查看一个按钮背景图，结果如下所示：<br />
<img alt="QQ校友按钮 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-14_200951.png" title="QQ校友按钮 张鑫旭-鑫空间-鑫生活" class="alignnone" width="241" height="151" /><br />
<img alt="QQ按钮的背景图 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-14_201314.png" title="QQ按钮的背景图 张鑫旭-鑫空间-鑫生活" class="alignnone" width="279" height="379" /></p>
<p>您可以点击<a target="_blank" href="http://imgcache.qq.com/qzonestyle/xiaoyou_portal_v2/css/0/img/btn.png">这里</a>查看此背景图。</p>
<p>其对不同宽度按钮做了不同的背景图，不同高度的按钮也做了不同的图片。要是我的话，最为扩展性重用性至尚的我，处理这里的按钮效果只要一小段高度足够的渐变背景就够了，如下图所示：<br />
<img alt="我的处理方式 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-14_202110.png" title="我的处理方式 张鑫旭-鑫空间-鑫生活" class="alignnone" width="540" height="373" />，因为这样子处理按钮不仅宽度自适应还可以实现宽度的自适应，关于此可以参见我前面的“<a title="CSS渐变图片背景下高度亦自适应按钮"  href="http://www.zhangxinxu.com/wordpress/?p=883" target="_blank">CSS渐变图片背景下高度亦自适应按钮</a>”一文。</p>
<p>至于企鹅的校友团队页面工程师为何这么处理，我想可能是其更倾向于完美的体验吧。为何这么讲呢？按钮自适应虽然说重用性很高，可以节约不少的代码量，工作量，但是，要想实现带圆角按钮的自适应，需使用两层标签，其中有一层需要错开内部标签几像素，以便可以让圆角显示出来，但是这回带来体验上的小小问题，就是点击区域与outline虚框的不对称。如下图所示：</p>
<p><img alt="虚框不对称 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-14_202836.png" title="虚框不对称 张鑫旭-鑫空间-鑫生活" class="alignnone" width="262" height="110" /><img alt="虚框不对称 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-14_203106.png" title="虚框不对称 张鑫旭-鑫空间-鑫生活" class="alignnone" width="159" height="79" /></p>
<p>但是如果使用单标签，按钮宽度固定，则虚框区域很规整很对称：<br />
<img alt="QQ校友按钮规整的虚框 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-14_203303.png" title="QQ校友按钮规整的虚框 张鑫旭-鑫空间-鑫生活" class="alignnone" width="216" height="119" /></p>
<p>我实在无法想象pony看到自己产品有着无对称的虚框而无动于衷，对于如此重视细节与体验的腾讯公司，估计是不会放过这些显示上的瑕疵的，在加上一些完美主义的设计师。可以，文化与倾向的不同决定了我们在处理同样的页面内容时，差异巨大的处理方式。</p>
<p>再举个“扩展性”至上的常见的而又被忽略，甚至被鄙视的例子。见下图：<br />
<img alt="要实现效果的图片 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-14_205240.png" title="要实现效果的图片 张鑫旭-鑫空间-鑫生活" class="alignnone" width="514" height="115" /></p>
<p>要实现上图所示的效果，您会怎么做？我大胆估计了下，考虑到最少的HTML代码，您可那会有如下的样式：</p>
<div class="zxx_code">
<pre>
.box{width:430px; padding:20px; border:1px solid #ddd;}
</pre>
</div>
<p>HTML如下：</p>
<div class="zxx_code">
<pre>
&lt;div class="box">
    &lt;strong>温馨提示&lt;/strong>&lt;br />
    团购成功后，消费凭证将发送到手机：&lt;strong class="cr">132 0803 3621&lt;/strong>，凭短信去商家消费。
&lt;/div>
</pre>
</div>
<p>基本上使用一层标签就解决了，确实很nice，我以前也这么做过。但是，现在的我不会这么做了。考虑到扩展性，以及流体布局思想留下的习惯下，这里我会使用两层标签。将width属性与padding分离，分离再不同标签下。外层标签就负责宽度或者与之分离的margin属性，以提高CSS的重用性以及页面的容错与自适应能力。</p>
<div class="zxx_code">
<pre>
.box{width:430px;}
.box_in{padding:20px; border:1px solid #ddd;}
</pre>
</div>
<p>分离的样式，错开的标签：</p>
<div class="zxx_code">
<pre>
&lt;div class="box">
   &lt;div class="box_in">
        &lt;strong>温馨提示&lt;/strong>&lt;br />
        团购成功后，消费凭证将发送到手机：&lt;strong class="cr">132 0803 3621&lt;/strong>，凭短信去商家消费。
    &lt;/div>
&lt;/div>
</pre>
</div>
<p>上面的样式命名是示例，要是在<a target="_blank" class="a_link" href="http://www.zhangxinxu.com/wordpress/?p=944">我的CSS架构下</a>，在这类非公用功能模块上，外部box的class一定会以w470分离出来作为网站通用样式库。而padding:20px;属性可由p20代替，p20来自<a target="_blank" href="http://www.zhangxinxu.com/study/css/zxx.lib.css">CSS通用样式库</a>。这些都是无关紧要的，主要的是，为何这里需要两层标签，要将padding值放在里面一层标签上。</p>
<p>一是这是自己自适应布局多了后留下的习惯，所谓一山不容二虎，padding会增加box的占据高宽，border属性也是如此，所以padding/border一定要与width属性分离，这样页面模块会有更好的扩展性，出bug的可能性也会降低，没有计算，宽度就是宽度。</p>
<p>为何使用两层标签，将宽度标签单独剥离出来可以提高扩展性与重用性呢？举个例子吧。大家都知道模块重用的，就是一段HTML代码可能在多个地方使用。现在我们在其他页面上的某个位置，例如右侧栏，要添加同样样式以及文字的内容，但是右侧栏的宽度有限，例如像是企鹅微博的右侧栏：<br />
<img alt="企鹅微博的右侧栏 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-14_213546.png" title="企鹅微博的右侧栏 张鑫旭-鑫空间-鑫生活" class="alignnone" width="300" height="203" /></p>
<p>此时你该怎么做，如您使用上一种方法，也就是单标签的方法，well，抱歉，我想，您需要再额外写一段CSS样式了，而这段CSS样式唯一不同的就是宽度，也就是padding:20px; border:1px solid #ddd;某种意义上重复，显然，这样的CSS代码重用性是低的。而将宽度单独提出来后的双标签方法，直接将class为box_in这段HTML放在右侧栏就可以了，什么CSS都无需再写，这就是为何要使用两层标签，看似有一层标签似乎是“多余的”，但是，这种多余只是权衡后倾向于“重用性”的结果。（下图为box_in放在右侧栏后的结果：）<br />
<img alt="放在右侧栏后显示的效果 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-14_214556.png " title="放在右侧栏后显示的效果 张鑫旭-鑫空间-鑫生活" class="alignnone" width="276" height="141" /></p>
<p>所以当你看到别人的HTML代码似乎有些多余的层级的时候，请不要轻易的认为人家这里做得不好，相反的，可能是别人比你更加的深谋远虑。</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1022">http://www.zhangxinxu.com/wordpress/?p=1022</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>五、CSS页面重构“门派”意识与包容心</h3>
<p>为何要提出“门派”这个概念，我想我希望大家都能以一颗包容的心态对看到其他同行的CSS代码以及页面重构方式。就拿上面QQ校友按钮与自适应按钮的例子举例吧，可能有些同行在使用某一个按钮时发现这个按钮的虚框不对称，可能心中就会暗想，这个网站或者这个页面制作人员不重视细节，离我还是有些差距的；可能有喜欢自适应按钮的同行看到QQ校友或是其他很多网站定宽按钮时，会暗想，这些网站的前端技术真是不咋地，按钮一点重用性都没有。最后的结果可能是相互鄙视与不屑。</p>
<p>其实大可不必，我是体会到了一颗包容的海纳百川的心态对于自身的成长非常的重要。千万不要拿着自己的那套准则趋评判别人的代码，去指手划脚。您站在直线的A点，怎么能轻易的就明白B点处所包含的思想呢。我们应该做的是以一颗开放的心态去看待别人您目前看似不屑的代码与页面重构方式，并从中学习到新的东西。这种心态决定了我们成长的高度。我们要一直保持饥渴的状态，不要固守自己的那套东西，灵活，吸收与变化。</p>
<p>所以，您要是发现某个页面某处在IE6下有3像素的偏移，不要轻易断言，这里是个bug，这个页面工程师火候不够。或许是这个工程师更看重的页面扩展性与CSS代码的数量，对这种一般用户根本不会注意的问题，其没有必要再写一个hack去解决；您要是看到页面上的按钮将文字也作为图片切进去了，不要觉得这个工程师功力不够，觉得这样子按钮毫无重用性，或许人家更看重的是视觉体验，宁可多做几张图，多几个按钮，也要有更好的视觉体验效果。</p>
<h3>六、实用指导意义</h3>
<p>虽然没有明确的“门派”的概念，但是实际上，CSS届确实有隐性的“门派”之分的。知道这个也是有一定的实际意义的，例如在找工作的时候，（个人观点，仅供参考），如果您要进入腾讯公司，要清楚腾讯公司写页面更看重的是什么，作为一个颇具规模的大互联网公司，其流程规范等都已经相对非常成熟了，前辈们继承下来的东西不是你所能左右的，您所能做的就是代码风格也页面重构思想要与之相符。如果您固守你自己那一套，比如说将扩展性与重用性放在首位，对于体验尤其是兼容性（各个浏览器一致）放在次席的话，到头不幸的肯定是你自己。你需要就是对其产品页面的CSS代码（命名，风格）以及HTML重构思想进行一番研究。对于大公司，说句可能不对的话，中规中矩地写你的CSS代码，这往往反而是最好的。</p>
<p>要是，以后，我羽翼渐丰，有幸能够面试他人的话，我更看重的将会是对方的CSS与HTML代码的重用性与扩展性是否足够高，CSS代码是否足够简洁，性能是否足够高，对于所谓的兼容性（也重要）不是最先决的条件。此时，您的代码与页面要是方方正正，规规整整，就像是砖头房子一样，我一定会把你劈掉的。我要是流水般的页面布局。</p>
<h3>七、期盼已久的结语</h3>
<p>不得不说，好久没有写这么长的文章了，连续写了三个晚上写才到这里。刚boss突然出现，害得我的小鹿乱撞，没想到老板居然也加班。虽然唠叨了这么多，也不知道我的观点表达得是否足够清晰了。对于CSS页面重构的“门派”之分，其实自己的思考还不是很成熟，借此文顺便梳理了下自己的思考。这里，我特别想汲取其他同行的一些观点与看法，以帮助自己进一步地成长。所以非常欢迎指出您觉得表达不准确的地方，也欢迎提出您自己的一些观点，思想火花的碰撞是最有助于成长的了。您可以以评论的方式留下您犀利的见解或是中肯的建议或是猛烈的否定，不管如何，都不甚感谢。</p>
<p><span class="s">//zxx: 对了，貌似后天七夕了，看我有这么多时间写文章就知道我是单身了，我就琢磨着，哪位有缘的同行可以介绍个临时的或有可能成为永远的伴，在上海，要女生，包一场电影外加所有的食物~~ zhangxinxu@zhangxinxu.com</span></p>
<p>原创文章，转载请注明来自<a href="http://www.zhangxinxu.com/">张鑫旭-鑫空间-鑫生活</a>[<a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a>]<br />
本文地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1022">http://www.zhangxinxu.com/wordpress/?p=1022</a></p>
<p>（本篇完）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhangxinxu.com/wordpress/?feed=rss2&amp;p=1022</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>CSS3+js实现多彩炫酷旋转圆环时钟效果</title>
		<link>http://www.zhangxinxu.com/wordpress/?p=1016</link>
		<comments>http://www.zhangxinxu.com/wordpress/?p=1016#comments</comments>
		<pubDate>Mon, 09 Aug 2010 15:34:16 +0000</pubDate>
		<dc:creator>张 鑫旭</dc:creator>
				<category><![CDATA[web综合]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[IE滤镜]]></category>
		<category><![CDATA[js相关]]></category>
		<category><![CDATA[rotate]]></category>
		<category><![CDATA[transform]]></category>
		<category><![CDATA[倒计时]]></category>
		<category><![CDATA[动画效果]]></category>
		<category><![CDATA[效果]]></category>
		<category><![CDATA[旋转]]></category>
		<category><![CDATA[滤镜]]></category>
		<category><![CDATA[绝对定位]]></category>

		<guid isPermaLink="false">http://www.zhangxinxu.com/wordpress/?p=1016</guid>
		<description><![CDATA[<a href="http://www.zhangxinxu.com/wordpress/?p=1016"><img alt="圆环时钟效果截图 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-09_200011.png" title="圆环时钟效果截图 张鑫旭-鑫空间-鑫生活" class="alignnone" width="587" height="189" /></a>

本文介绍主要由CSS3 transform的rotate配合一些巧妙的方法实现的炫酷的时钟旋转效果。虽说没有多大实用价值，不过对于熟悉CSS3的旋转属性，以及了解IE滤镜旋转的一些知识是很有用的。本文提供源文件下载，代码展示，以及必要的demo。希望能对您的学习有所帮助。]]></description>
			<content:encoded><![CDATA[<p>by <a href="http://www.zhangxinxu.com/">zhangxinxu</a> from <a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a><br />
本文地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1016">http://www.zhangxinxu.com/wordpress/?p=1016</a></p>
<p><img alt="圆环时钟效果截图 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-09_200011.png" title="圆环时钟效果截图 张鑫旭-鑫空间-鑫生活" class="alignnone" width="587" height="189" /></p>
<h3>一、demo以及下载</h3>
<p>上图为Firefox3.6下的效果截图，在IE浏览器下也有效果，只是微微有些bug，这个后面会说的。</p>
<p>您可以狠狠地点击这里：<a class="a_link" target="_blank" href="http://www.zhangxinxu.com/study/201008/colorful-round-clock.html">炫酷圆环时钟效果demo</a></p>
<p>我还做了个简洁的demo，已打包为zip，您可以狠狠地点击这里：<a class="a_link" target="_blank" href="http://www.zhangxinxu.com/study/down/colorful-round-clock.zip">colorful-round-clock.zip</a></p>
<p>素材与创意来自：<a target="_blank" href="http://tutorialzine.com/2009/12/colorful-clock-jquery-css/">http://tutorialzine.com/2009/12/colorful-clock-jquery-css/</a></p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1016">http://www.zhangxinxu.com/wordpress/?p=1016</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>二、实现原理简介</h3>
<p>下图为我在原文原理图基础上用中文标注的原理图：<br />
<img alt="旋转原理图 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/i22.png" title="旋转原理图 张鑫旭-鑫空间-鑫生活" class="alignnone" width="620" height="460" /></p>
<p>具体点将，就是将一个完成的圆形图，用左右两个div以background-image的形式分装，其中右半区域的层级在左半区域之上。以秒举例，在前30秒，右半区域（层级较高）隐藏（否则会覆盖左半侧旋转的图形），左边区域旋转，由于左半区域之上还有一个实色背景层覆盖，所以我们只会看到从右半区域旋转出来的内容。后三十秒，原来左半区域固定旋转180度，也就是，右半区域会一直有完整的半圆。此时，原先的右半区域开始旋转，由于右半区域层级较高，于是，其旋转可以完整显示。于是前后半分钟的旋转可以完好的拼合。</p>
<p>现在的问题是，如何实现图形的旋转呢？关于CSS旋转的一些知识点，您可以参见我之前“<a target="_blank" title="图片旋转效果的一些研究、jQuery插件及实例" href="http://www.zhangxinxu.com/wordpress/?p=552">图片旋转效果的一些研究、jQuery插件及实例</a>”，里面对各个浏览器的旋转有着详细的介绍。本文的旋转所用的属性在其中就有详细的介绍。</p>
<p>其中，现代浏览器使用的是CSS3的transform属性，IE使用的是旋转滤镜。目前，现代浏览器中除了Opera浏览器外，基本上都支持了CSS3的transform属性中的rotate属性，一般用法类似下面：</p>
<div class="zxx_code">
<pre>-moz-transform:rotate(-90deg); -webkit-transform:rotate(-90deg);</pre>
</div>
<p>IE浏览器是使用其私有的滤镜，类似下面的写法：</p>
<div class="zxx_code">
<pre>filter:progid:DXImageTransform.Microsoft.Matrix(M11=cos(roation),M12=-sin(roation),M21=sin(roation),M22=cos(roation),SizingMethod='auto expand');</pre>
</div>
<p>其中roation为旋转的弧度值。</p>
<p>使用js表示则写法如下(以下表示旋转60度)：</p>
<div class="zxx_code">
<pre>
obj.style.filter = "progid:DXImageTransform.Microsoft.Matrix(M11=0.5,M12=-0.866,M21=0.866,M22=0.5,SizingMethod='auto expand')";
obj.style.MozTransform = l.style.WebkitTransform = l.style.transform = "rotate(60deg)";
</pre>
</div>
<p>有了原理，有了方法，按照常规理解，只要设置定时器，然后将时间值与角度相对应就好了。然而，在IE浏览器下，事情则没有这么简单。正如我在“<a target="_blank" title="图片旋转效果的一些研究、jQuery插件及实例" href="http://www.zhangxinxu.com/wordpress/?p=552">图片旋转效果的一些研究、jQuery插件及实例</a>”所说的，IE滤镜的旋转完全就是顶着外框的旋转，元素本身的旋转会撑大外部box的高度和宽度。例如下面视频所展示的：<br />
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="550" height="478"><param name="movie" value="http://www.zhangxinxu.com/study/flash/zxx_video_player.swf" /><param name="quality" value="high" /><param name="wmode" value="opaque" /><param name="swfversion" value="9.0.45.0" /><param name="allowFullScreen" value="true" /><param name="FlashVars" value="name=http://www.zhangxinxu.com/flash/blog/201008/ie-rotate.flv" /><embed height="478" width="550" name="FlashVars" src="http://www.zhangxinxu.com/study/flash/zxx_video_player.swf" align="middle" allowFullScreen="true" wmode="opaque" loop="false" FlashVars="name=http://www.zhangxinxu.com/flash/blog/201008/ie-rotate.flv" type="application/x-shockwave-flash"></embed></object></p>
<p>如果您的浏览器是IE或是IE内核的，您可以狠狠地点击这里：<a target="_blank" class="a_link" href="http://www.zhangxinxu.com/study/201008/how-ie-rotate-filter.html">IE旋转宽高撑开实例demo</a></p>
<p>如果直接使用js改变IE滤镜的正弦余弦值，由于旋转div所占据的宽度高度随着旋转而增大，会造成圆环的不是居中旋转的，会产生偏差。就如上面视频所示，其旋转不是以正矩形的中心旋转的。所以，要想让IE居中旋转，需要计算其中心位置的偏移，在每个时间器执行时，动态改变旋转div的位置。</p>
<p>正如上面视频所展示的，旋转中心的位置每旋转90度就是一个循环。<br />
所以，我就回到高中一样，画图，计算，得到了一个计算偏移值的方法，如下：</p>
<div class="zxx_code">
<pre>var offsety = offsetx = (200 - 200 * Math.sqrt(2) * Math.cos(Math.PI / 180 * Math.abs(angle - 45))) / 2 ;</pre>
</div>
<p>当然，参数angle一定要限制在0~90度之间。</p>
<div class="hidden">本文原地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1016">http://www.zhangxinxu.com/wordpress/?p=1016</a>，来自张鑫旭-鑫空间-鑫生活，访问原出处更多优秀技术文章。</div>
<div class="hidden">本文作者：<a href="http://www.zhangxinxu.com/">张鑫旭</a>，欢迎访问我的个人网站。</div>
<h3>三、结语</h3>
<p>个人觉得，对于实际项目而言，就目前浏览器对CSS3支持的现状而言，此效果没有多少实用价值，但是对于学习前端技能而言，确实是个不错的东西。最近团购不是很流行吗，里面有个倒计时，您有兴趣可以在那里应用应用。</p>
<p>就这些，有什么表述不准确之处欢迎指正。</p>
<p>原创文章，转载请注明来自<a href="http://www.zhangxinxu.com/">张鑫旭-鑫空间-鑫生活</a>[<a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a>]<br />
本文地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1016">http://www.zhangxinxu.com/wordpress/?p=1016</a></p>
<p>（本篇完）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhangxinxu.com/wordpress/?feed=rss2&amp;p=1016</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://www.zhangxinxu.com/flash/blog/201008/ie-rotate.flv" length="858925" type="video/x-flv" />
		</item>
		<item>
		<title>拾人牙慧 &#8211; CSS3实现Opera浏览器的logo</title>
		<link>http://www.zhangxinxu.com/wordpress/?p=1012</link>
		<comments>http://www.zhangxinxu.com/wordpress/?p=1012#comments</comments>
		<pubDate>Sat, 07 Aug 2010 14:22:51 +0000</pubDate>
		<dc:creator>张 鑫旭</dc:creator>
				<category><![CDATA[css相关]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[border-radius]]></category>
		<category><![CDATA[box-shadow]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[gradient]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[photoshop]]></category>
		<category><![CDATA[圆角]]></category>
		<category><![CDATA[渐变背景]]></category>
		<category><![CDATA[绝对定位]]></category>

		<guid isPermaLink="false">http://www.zhangxinxu.com/wordpress/?p=1012</guid>
		<description><![CDATA[<a href="http://www.zhangxinxu.com/wordpress/?p=1012"><img alt="CSS3实现Opera浏览器的logo" src="http://image.zhangxinxu.com/image/blog/201008/opera-logo-css3-effects.png" title="查看CSS3实现Opera浏览器的logo一文" class="mb10 imgpad" width="500" height="113" /></a>

本文纯粹的展示如何使用CSS3实现高逼真的Opera浏览器的logo效果，当然，如果您关注CSS3，也一定可以从中学到不少CSS3方面的知识的。延续我一贯的文章风格，丰富的截图，丰富飞代码展示，外带源文件打包下载。总之，希望能对您的学习有所帮助。]]></description>
			<content:encoded><![CDATA[<p>by <a href="http://www.zhangxinxu.com/">zhangxinxu</a> from <a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a><br />
本文地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1012">http://www.zhangxinxu.com/wordpress/?p=1012</a></p>
<div id="link">
原作者：<a target="_blank" href="http://desandro.com/">David  DeSandro</a><br />
原文地址：<a target="_blank" href="http://desandro.com/articles/opera-logo-css/">http://desandro.com/articles/opera-logo-css/</a><br />
翻译/编辑：<a href="http://www.zhangxinxu.com/">张鑫旭</a>
</div>
<h3>一、终效果图enjoy~~</h3>
<p>以下效果截图截自Firefox3.6浏览器：<br />
<img alt="CSS3 Opera logo Firefox3.6下效果图 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-07_154808.png" title="CSS3 Opera logo Firefox3.6下效果图 张鑫旭-鑫空间-鑫生活" class="alignnone" width="466" height="531" /></p>
<p>上图为CSS3实现的效果图，如果您有兴趣可以与正宗的Opera浏览器的logo图做比对，查看logo原图请狠狠地点击这里：<a target="_blank" href="http://media.opera.com/media/images/icon/Opera_512x512.png">Opera浏览器logo原图</a></p>
<p>您可能是个细心的人，可以看出其中不少差异，但是我确实是没有看出多少不同来，我只能叹服CSS的惊人潜力。</p>
<p><strong>demo与下载</strong><br />
您可以狠狠地点击这里：<a class="a_link" target="_blank" href="http://www.zhangxinxu.com/study/201008/css3-opera-logo-demo.html">CSS3实现Opera浏览器logo demo</a></p>
<p>源文件下载请狠狠地点击这里：<a  class="a_link" target="_blank" href="http://www.zhangxinxu.com/study/down/css3-opera-logo.zip">css3-opera-logo.zip</a>(右键-[目标|链接]另存为)</p>
<h3>二、效果的实现</h3>
<p>一般这类CSS3实现的效果无非那几个CSS属性，要么圆角(border-radius)，要么渐变(gradient)，要么就是盒阴影(box-shadow)。本文的实现也不例外，由于这几个属性我之前有过专门的介绍，所以这里不具体叙述，仅提供一些链接。</p>
<p>CSS3属性就像是photoshop中的图层样式，仅仅掌握一些图层样式效果不一定能够实现精湛的UI效果，例如，我们还需要知道图层原理。本文的实例可以说就是图层与图层样式结合的产物，也就是使用photoshop绘图的过程（说Illustrator的使用更贴切，因为绘出的图形都是矢量的）。而这里，图层样式就是CSS3属性，图层就是absolute绝对定位。</p>
<p>换句话说，本文的Opera logo效果，是CSS3+绝对定位实现的。</p>
<p>本实例logo由8个div层绝对定位合成的。现在我们一个一个展示出来（以下截图均截自Firefox3.6浏览器）：</p>
<p>①<strong>淡阴影</strong><br />
<img alt="Opera logo淡阴影 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-07_171517.png" title="Opera logo淡阴影 张鑫旭-鑫空间-鑫生活" class="alignnone" width="492" height="163" /></p>
<p>圆角+无距离的盒阴影实现。参见如下代码：</p>
<div class="zxx_code">
<pre>
-moz-border-radius: 152px/25px;
-webkit-border-radius: 152px 25px;
border-radius: 152px/25px;
-moz-box-shadow: 0 100px 30px hsla(0,0%,0%,.2);
-webkit-box-shadow: 0 100px 30px hsla(0,0%,0%,.2);
box-shadow: 0 100px 30px hsla(0,0%,0%,.2);
</pre>
</div>
<p>上述代码有两点值得一提：<br />
一是圆角的缩写。此值的表示方式与background-position类似，只是Mozilla使用斜线，而webkit使用空格。border-radius可以说是用得最广的CSS3属性，没有之一。关于border-radius的基本用法，以及一些相关文章可以狠狠地点击这里：<a class="a_link" target="_blank" href="http://www.zhangxinxu.com/css3/css3-border-radius.php">border-radius使用参考</a><br />
二是颜色的HSLA表示，HSLA也是CSS3中的属性，使用色调，饱和度，亮度以及透明度来表示颜色。查看HSLA基本属性，您可以狠狠地点击这里：<a class="a_link" target="_blank" href="http://www.zhangxinxu.com/css3/css3-hsla-colors.php">HSLA使用参考</a>。按照作者的说法，使用这种色调形式表示颜色，而不是RGBA是，是由于HSLA更方便对颜色进行微调。</p>
<p>关于box-shadow盒阴影的相关内容，您可以狠狠地点击这里：<a class="a_link" target="_blank" href="http://www.zhangxinxu.com/css3/css3-box-shadow.php">box-shadow使用参考指南</a>，里面有不少相关文章的集合，如下截图所示：<br />
<img alt="CSS3 盒阴影参考内容截图 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-07_211831.png" title="CSS3 盒阴影参考内容截图 张鑫旭-鑫空间-鑫生活" class="alignnone" width="449" height="235" /></p>
<p>②<strong>深色阴影</strong><br />
在上面的颜色的较淡的阴影上再覆盖一个更深一点的阴影，结果如下：<br />
<img alt="添加深色阴影 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-07_173741.png" title="添加深色阴影 张鑫旭-鑫空间-鑫生活" class="alignnone" width="474" height="153" /></p>
<p>此处的相应的CSS3代码是：</p>
<div class="zxx_code">
<pre>
-moz-border-radius: 110px/35px;
-webkit-border-radius: 110px 35px;
border-radius: 110px/35px;
-moz-box-shadow: 0 100px 15px hsla(0,0%,0%,.6);
-webkit-box-shadow: 0 100px 15px hsla(0,0%,0%,.6);
box-shadow: 0 100px 15px hsla(0,0%,0%,.6);
</pre>
</div>
<p>③<strong>外框边缘</strong><br />
<img alt="边缘边框效果截图 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-07_212104.png" title="边缘边框效果截图 张鑫旭-鑫空间-鑫生活" class="alignnone" width="481" height="509" /></p>
<p>相应的CSS3代码如下：</p>
<div class="zxx_code">
<pre>
background: #800;
background: -moz-linear-gradient(-90deg, #F88, #800);
background: -webkit-gradient(linear, 0 top, 0 bottom, from(#F88), to(#800));
border-radius: 220px;
-moz-border-radius: 220px/235px;
-webkit-border-radius: 220px 235px;
border-radius: 220px/235px;
</pre>
</div>
<p>主要内容就是圆角与渐变，圆角上面已经提及，关于渐变，您可以参见下面三篇文章：“<a href="http://www.zhangxinxu.com/wordpress/?p=727" title="CSS渐变之CSS3 gradient在Firefox3.6下的使用">CSS渐变之CSS3 gradient在Firefox3.6下的使用 </a>”、“<a href="http://www.zhangxinxu.com/wordpress/?p=734" title="CSS gradient渐变之webkit核心浏览器下的使用">CSS gradient渐变之webkit核心浏览器下的使用 </a>”、“<a href="http://www.zhangxinxu.com/wordpress/?p=743">CSS实现兼容性的渐变背景(gradient)效果</a>”其中对不同的浏览器如何应用渐变效果做了相当详细的介绍，您有兴趣可以去看看。</p>
<p>④<strong>高亮</strong><br />
高亮图层就是比边缘图层尺寸略小的渐变跨度更大更淡的渐变层。高亮层的覆盖使得背景的深色渐变只透出一点较深的边缘。如下图所示：<br />
<img alt="Opera logo效果之高亮层效果 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-07_213003.png" title="Opera logo效果之高亮层效果 张鑫旭-鑫空间-鑫生活" class="alignnone" width="481" height="523" /></p>
<p>相关的CSS3代码如下：</p>
<div class="zxx_code">
<pre>
background: #d40009;
background: -moz-linear-gradient(-90deg, #FCC, #E71616 50%, #d40009);
background: -webkit-gradient(linear, 0 top, 0 bottom, from(#FCC), color-stop(50%, #E71616), to(#d40009));
-moz-border-radius: 218px/233px;
-webkit-border-radius: 218px 233px;
border-radius: 218px/233px;
</pre>
</div>
<p>⑤<strong>填充</strong><br />
填充图层与上面高亮层属性作用类似，用来勾勒高光边框，之所以称为填充图层，因为我们看到最后的Opera logo的效果的主要颜色就是此图层的颜色，故称之为填充层。该图层覆盖在高亮层上的效果如下图：<br />
<img alt="Opera logo填充层覆盖后效果 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-07_213457.png" title="Opera logo填充层覆盖后效果 张鑫旭-鑫空间-鑫生活" class="alignnone" width="486" height="523" /></p>
<p>也是CSS3渐变和CSS3的杰作~~，代码如下所示：</p>
<div class="zxx_code">
<pre>
background: #E71616;
background: -moz-linear-gradient(-90deg, #FE878A, #E71616 50%, #800000 80%, #800000 85%, #b80304);
background: -webkit-gradient(linear, 0 top, 0 bottom, from(#FE878A), to(#b80304), color-stop(50%, #E71616), color-stop(80%, #800000), color-stop(85%, #800000) );
-moz-border-radius: 218px/228px;
-webkit-border-radius: 218px 228px;
border-radius: 218px/228px;
</pre>
</div>
<p>此处的渐变颜色断点较多，所以渐变代码稍事复杂了点。如果您对渐变的代码含义不是很了解，您可以参见我前面说过的三篇关于渐变的文章。</p>
<p>⑥<strong>内边缘</strong><br />
内边缘层继续覆盖后的效果如下：<br />
<img alt="内边缘层覆盖后的效果 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-07_213953.png" title="内边缘层覆盖后的效果 张鑫旭-鑫空间-鑫生活" class="alignnone" width="488" height="524" /></p>
<p>不变的圆角，不变的渐变，其相关参数如下所示：</p>
<div class="zxx_code">
<pre>
background: #d20000;
background: -moz-linear-gradient(-90deg, #cc3836, #d9100f 50%, #d20000);
background: -webkit-gradient(linear, 0 top, 0 bottom, from(#cc3836), color-stop(50%, #d9100f), to(#d20000));
-moz-border-radius: 99px/170px;
-webkit-border-radius: 99px 170px;
border-radius: 99px/170px;
</pre>
</div>
<p>⑦<strong>内填充</strong><br />
进一步填充，效果见下图：<br />
<img alt="进一步内填充后的Opera logo效果 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-07_214318.png" title="进一步内填充后的Opera logo效果 张鑫旭-鑫空间-鑫生活" class="alignnone" width="500" height="525" /></p>
<p>圆角以及渐变相关CSS3代码如下：</p>
<div class="zxx_code">
<pre>
background: #b80000;
background: -moz-linear-gradient(-90deg, #9a0000, #b80000);
background: -webkit-gradient(linear, 0 top, 0 bottom, from(#9a0000), to(#b80000));
-moz-border-radius: 96px/170px;
-webkit-border-radius: 96px 170px;
border-radius: 96px/170px;
</pre>
</div>
<p>⑧<strong>画龙点睛的反色</strong><br />
最后一个图层是画龙点睛之比，是个白色的反色的图层，无渐变，单纯的圆角加上纯白的背景，废话少说，见效果：<br />
<img alt="反白图层的效果 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/2010-08-07_214754.png" title="反白图层的效果 张鑫旭-鑫空间-鑫生活" class="alignnone" width="491" height="525" /></p>
<p>哇哦，我不禁起立鼓掌！so nice, so perfect, so unimaginable!就几个圆角，就几个渐变图层，最后却有了如此精湛的Opera浏览器3D的logo效果。感谢CSS3，感谢作者，感谢所有的web开发人员。<span class="s">//zxx:糟了，我记得应该先感谢国家的……</span></p>
<p>好吧，固定的流程还是要走的，最后一段CSS3代码：</p>
<div class="zxx_code">
<pre>
background: #FFF;
-moz-border-radius: 82px/170px;
-webkit-border-radius: 82px 170px;
border-radius: 82px/170px;
</pre>
</div>
<p><strong>小Tip：</strong>上述所有CSS3代码仅展示了CSS3相关部分，一些宽度高度以及绝对定位的left和top CSS属性未展示。不过您可以从打包的<a  class="a_link" target="_blank" href="http://www.zhangxinxu.com/study/down/css3-opera-logo.zip">demo页面</a>中找到完成的CSS代码。</p>
<h3>三、其他的浏览器兄弟</h3>
<p>二部分所有的效果截图均来自Firefox3.6浏览器，如果您不想麻烦，把demo页面在一个一个浏览器下看效果，您也可以直接看下图，展示了目前各个浏览器下的对此CSS3实现的Opera浏览器的logo的支持程度：<br />
<img alt="各个浏览器对CSS3实现的Opera logo的支持程度 张鑫旭-鑫空间-鑫生活" src="http://image.zhangxinxu.com/image/blog/201008/opera-logo-css3-effects.png" title="各个浏览器对CSS3实现的Opera logo的支持程度 张鑫旭-鑫空间-鑫生活" class="alignnone" width="500" height="113" /></p>
<p>对于早已让我让我无言以对的IE6/IE7/IE8浏览器，我就不说什么了。貌似IE9会支持圆角属性，虽然微软把IE9说得天花乱坠，但是我是不抱什么大的期待的~~</p>
<h3>四、关于一些前端的技术趋势</h3>
<p>从最近国外各大前端技术网站的内容来看，HTML5，CSS3，与SVG必定是趋势与主流，已经呈现势不可挡，繁荣昌盛之势。就国内死水般的现状而言，感觉又要落后人家好几年了。此现状不仅在前端，在交互、在设计都是如此。虽然，交互与设计我不够专业，但是从腾讯团队博客所嚼的些有关交互与设计方面的理论都是国外数年前的研究成果来看，滞后于国外是当前中国互联网行业的普遍现状（从互联网产品的内容与盲目借鉴也可见一斑）。</p>
<p>前端领域可以大有作为。多关注HTML5，CSS3，与SVG吧，对于未来的你必定会有受益的。但是，前提是，对于当前的XHTML与CSS2你需要足够的理解。这是一条艰苦的路程，任重而道远啊！</p>
<p>我今天看到首页上有人提问说为什么今日为更新文章，因为最近我在研究与学习另外一个js库，MooTools库，这是大众点评网使用的js库。最近迷上了这个，且学到了很多东西。精力有限，所以差不多一周的时间都没有写新文章了。</p>
<p>就说这些，我要学的还有太多太多，大家一起成长吧~~</p>
<p>原创文章，转载请注明来自<a href="http://www.zhangxinxu.com/">张鑫旭-鑫空间-鑫生活</a>[<a href="http://www.zhangxinxu.com/">http://www.zhangxinxu.com</a>]<br />
本文地址：<a href="http://www.zhangxinxu.com/wordpress/?p=1012">http://www.zhangxinxu.com/wordpress/?p=1012</a></p>
<p>（本篇完）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zhangxinxu.com/wordpress/?feed=rss2&amp;p=1012</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
