<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
<channel>
<title><![CDATA[dudo博客]]></title>
<link>http://www.dudo.org/</link>
<description><![CDATA[关注网站开发]]></description>
<language>zh-cn</language>
<copyright><![CDATA[Copyright 2005 PBlog2 v2.4]]></copyright>
<webMaster><![CDATA[dudo@dudo.org(Dudo)]]></webMaster>
<generator>PBlog2 v2.4</generator> 
<image>
	<title>dudo博客</title> 
	<url>http://www.dudo.org/images/logos.gif</url> 
	<link>http://www.dudo.org/</link> 
	<description>dudo博客</description> 
</image>

			<item>
			<link>http://www.dudo.org/default.asp?id=257</link>
			<title><![CDATA[20个优秀网站助你征服CSS]]></title>
			<author>dudo@dudo.org(dudo)</author>
			<category><![CDATA[CSS与Javasript]]></category>
			<pubDate>Sun,31 Aug 2008 18:24:23 +0800</pubDate>
			<guid>http://www.dudo.org/default.asp?id=257</guid>	
		<description><![CDATA[1. <a target="_blank" href="http://www.alistapart.com/topics/code/css/" class="quoteLink">A List Apart CSS Topics </a><br/><img src="http://www.dudo.org/attachments/month_0808/a200883118038.png" border="0" alt=""/><br/>A List Apart是一个CSS优秀文章的收集网站，从1999年开始收集文章，关注最佳网页设计。<br/><br/>2.<a target="_blank" href="http://artypapers.com/csshelppile/category.php?11" class="quoteLink">CSS Help Pile</a><br/><img src="http://www.dudo.org/attachments/month_0808/6200883118039.png" border="0" alt=""/><br/>CSS Help Pile重点关于CSS资源，技巧与手法。该网站授予良好的网页组及优秀的资源，适用于各个水平的开发人员，分类包括：初学者，浏览器解析的错误，简评CSS的书籍。<br/><br/>3.<a target="_blank" href="http://www.cssbasics.com/" class="quoteLink">CSS Basics</a><br/><img src="http://www.dudo.org/attachments/month_0808/x200883118039.png" border="0" alt=""/><br/>CSS Basics可以当成一书来看，用了18个章节来传授基本的CSS概念，对初学者相当有帮助。还有就是所有18个章节，提供打印或PDF格式下载。<br/><br/>4.<a target="_blank" href="http://dezwozhere.com/links.html" class="quoteLink">Holy CSS Zeldman!</a><br/><img src="http://www.dudo.org/attachments/month_0808/b200883118039.jpg" border="0" alt=""/><br/>Holy CSS Zeldman是关于基于标准的CSS教程、工具、布局相关链接的收集。<br/><br/>5.<a target="_blank" href="http://meyerweb.com/eric/css/" class="quoteLink">Eric Meyer: CSS</a><br/><br/><img src="http://www.dudo.org/attachments/month_0808/6200883118039.jpg" border="0" alt=""/><br/>这里主要是收集Eric Meyer (著名的开发者)的作品，在css/edge和CSS reference等页面可以找到一些相关的资源。<br/><br/>6.<a target="_blank" href="http://www.456bereastreet.com/archive/categories/css/" class="quoteLink">456 Berea Street – CSS category</a><br/><br/><img src="http://www.dudo.org/attachments/month_0808/u200883118039.jpg" border="0" alt=""/><br/>456 Berea Street下有一个CSS分类，里面有超过300篇文章，这些文章有教如果放置图片，有些是说CSS技巧。<br/><br/>7.<a target="_blank" href="http://www.positioniseverything.net/" class="quoteLink">/* Position Is Everything */</a><br/><img src="http://www.dudo.org/attachments/month_0808/4200883118039.jpg" border="0" alt=""/><br/>这里只要关注的是如何摆脱浏览器显示的错误<br/><br/>8.<a target="_blank" href="http://www.htmldog.com/" class="quoteLink">HTML Dog CSS Tutorials</a><br/><br/><img src="http://www.dudo.org/attachments/month_0808/b200883118039.png" border="0" alt=""/><br/>HTML Dog致力于教授最佳的XHTML与CSS布局，分为初级，中级，高级三个级别<br/><br/>9.<a target="_blank" href="http://www.barelyfitz.com/screencast/html-training/css/positioning/" class="quoteLink">Learn CSS Positioning in Ten Steps</a><br/><img src="http://www.dudo.org/attachments/month_0808/s200883118039.png" border="0" alt=""/><br/>如果使用CSS定位是一个棘手的问题，这里有10步，看能不能帮你解决。<br/><br/>10.<a target="_blank" href="http://www.andybudd.com/links/cssweb_standards/index.php" class="quoteLink">Andy Budd CSS/Web Standards Links</a><br/><br/><img src="http://www.dudo.org/attachments/month_0808/v20088311817.jpg" border="0" alt=""/><br/>Andy Budd有着一系列CSS/web标准的有用链接，以帮助你找到有用的资料。<br/><br/>11.<a target="_blank" href="http://www.dudo.org/W3CSchools CSS Tutorial" class="quoteLink">W3CSchools CSS Tutorial</a><br/><img src="http://www.dudo.org/attachments/month_0808/o20088311817.png" border="0" alt=""/><br/>W3CSchools有一个CSS部分，内容涵盖了初级到高级的CSS主题。<br/><br/>12.<a target="_blank" href="http://csszengarden.com/" class="quoteLink">css Zen Garden</a><br/><br/><img src="http://www.dudo.org/attachments/month_0808/b20088311817.jpg" border="0" alt=""/><br/>css Zen Garden给我们展示了CSS是怎样工作的，使用相同的HTML文件，设计师提交的外部样式来美化这个文件。用Web Developer Tool就可以检查CSS是如何进行布局工作的。这个网站在7个最好的网上CSS资源里也有介绍。<br/><br/>13.<a target="_blank" href="http://css.maxdesign.com.au/" class="quoteLink">CSS at MaxDesign</a><br/><img src="http://www.dudo.org/attachments/month_0808/q20088311817.png" border="0" alt=""/><br/>MaxDesign拥有Russ Weakley的一套CSS精彩教程，在Listmatic里，教你使用CSS格式化列表，在Floatutorial里，介绍floating元素的知识。<br/><br/>14.<a target="_blank" href="http://www.csseasy.com/" class="quoteLink">CSSeasy.com</a><br/><br/><img src="http://www.dudo.org/attachments/month_0808/j20088311817.png" border="0" alt=""/><br/>CSSEasy.com拥有丰富的经验及创意分享，让我们更好地了解CSS。<br/><br/>15.<a target="_blank" href="http://www.css-discuss.org/" class="quoteLink">CSS-Discuss</a><br/><img src="http://www.dudo.org/attachments/month_0808/a20088311817.png" border="0" alt=""/><br/>CSS-Discuss是一个CSS爱好者社区，而 CSS-Discuss Wiki是关于CSS的应用收集。<br/><br/>16.<a target="_blank" href="http://webdesignfromscratch.com/css.cfm" class="quoteLink">Web Design from Scratch: CSS</a><br/><img src="http://www.dudo.org/attachments/month_0808/t200883118140.png" border="0" alt=""/><br/>Web Design from Scratch有一章节是关于CSS的，涵盖了CSS的基本概念。 其中的Introduction to CSS对初学者很有帮助。<br/><br/>17.<a target="_blank" href="http://css-tricks.com/" class="quoteLink">CSS-Tricks</a><br/><img src="http://www.dudo.org/attachments/month_0808/k20088311817.jpg" border="0" alt=""/><br/>CSS-Tricks是一个专注CSS的博客<br/><br/>18.<a target="_blank" href="http://delicious.com/tag/css" class="quoteLink">CSS on Delicious</a><br/><img src="http://www.dudo.org/attachments/month_0808/r20088311817.png" border="0" alt=""/><br/>The CSS tag on Delicious是关于优秀CSS设计的链接收集，亮点就是让我们知道哪些好东西在被人看。<br/><br/>19.SitePoint CSS Reference<br/><img src="http://www.dudo.org/attachments/month_0808/f20088311817.png" border="0" alt=""/><br/>SitePoint有一个CSS部分，专门讨论入门水平的CSS主题<br/><br/>20. <a target="_blank" href="http://cssdog.com/index.html" class="quoteLink">CSSDog</a><br/><img src="http://www.dudo.org/attachments/month_0808/a20088311817.png" border="0" alt=""/><br/>CSSDog有一部分为初学者与高级开发者设计的，其中的开发经验及参考，个人认为是最有价值的部分。<br/><br/>原文地址：<a href="http://sixrevisions.com/css/20_websites_learn_master_css/" target="_blank">http://sixrevisions.com/css/20_websites_learn_master_css/</a><br/>译文地址：<a href="http://www.jianbitou.com/post/20_websites-learn-master-css.html" target="_blank">http://www.jianbitou.com/post/20_websites-learn-master-css.html</a>]]></description>
		</item>
		
			<item>
			<link>http://www.dudo.org/default.asp?id=256</link>
			<title><![CDATA[工作了，发现时间真的是个大问题]]></title>
			<author>dudo@dudo.org(dudo)</author>
			<category><![CDATA[个人生活]]></category>
			<pubDate>Thu,14 Aug 2008 19:15:59 +0800</pubDate>
			<guid>http://www.dudo.org/default.asp?id=256</guid>	
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;很久之前就想整一下<a target="_blank" href="http://www.dudo.org/" class="quoteLink">自己的博客</a>，而且已经有了比较好的想法，但是时间是个在问题，下了班之后想休息，加之没有电脑又不想去网吧（越来越不喜欢那种环境了）所以就连更新都已经很少了。很想把程序升级一下，但是这需要大把的时间和精力，我真不知道，过了这么长时间自己还能不能写出一个像样的程序来。原来打算发布一个“博客分家”程序，估计要被推迟了，可能是明年？我不知道！<br/><br/>&nbsp;&nbsp; 工作之后爱好也可能成了一种负担，我喜欢从事IT，可是机缘的不巧合让我始终无法进入到这个行业（在这里我要特别感谢<a target="_blank" href="http://www.cssforest.org/" class="quoteLink">Ghost</a>的推荐，但是由于很长一段时间我无法上网以至错过了，sorry）。<br/><br/>&nbsp;&nbsp; 每次更新的时候总是那么匆匆，我已经有好长时间没有上QQ了，两三个月甚至更长，我很想念我的朋友们。]]></description>
		</item>
		
			<item>
			<link>http://www.dudo.org/default.asp?id=255</link>
			<title><![CDATA[离开一段时间（Absent for a long time）]]></title>
			<author>dudo@dudo.org(dudo)</author>
			<category><![CDATA[个人生活]]></category>
			<pubDate>Wed,30 Jul 2008 19:39:28 +0800</pubDate>
			<guid>http://www.dudo.org/default.asp?id=255</guid>	
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;最近一直在进行封闭式培训，没有时间出来上网，基本上是过着与世隔绝的日子。这样的生活已经持续了一个月，还将继续持续到8月7号，天呢，我快受不了了。<br/>&nbsp;&nbsp;&nbsp;&nbsp;<a target="_blank" href="http://www.pjhome.net/article/884.htm" class="quoteLink">PJBlog已经更新</a>，但是我也还没有时间更新，估计也要半个月之后的事情的了，还好在6月底我已经体验了一下内测版了。<br/>&nbsp;&nbsp;&nbsp;&nbsp;谢谢朋友们的关心，祝大家都快乐！]]></description>
		</item>
		
			<item>
			<link>http://www.dudo.org/default.asp?id=254</link>
			<title><![CDATA[内联格式化模式（line-height原理）]]></title>
			<author>dudo@dudo.org(dudo)</author>
			<category><![CDATA[CSS与Javasript]]></category>
			<pubDate>Fri,27 Jun 2008 23:05:04 +0800</pubDate>
			<guid>http://www.dudo.org/default.asp?id=254</guid>	
		<description><![CDATA[<p>英文原文：<a href="http://meyerweb.com/eric/css/inline-format.html">http://meyerweb.com/eric/css/inline-format.html</a><br />
中文翻译：<a href="http://www.dudo.org/article.asp?id=254">http://www.dudo.org/article.asp?id=254</a></p>
<div style="border-right: #666 3px solid; padding-right: 5px; border-top: #666 3px solid; padding-left: 5px; padding-bottom: 5px; border-left: #666 3px solid; border-bottom: #666 3px solid; background-color: #ccc">
<h3>重要提示：</h3>
<hr />
<p>&nbsp;&nbsp;&nbsp; 本文并非一篇简单地介绍内联格式模型（inline formatting model）的文章。相反，它是对内联格式（inline formatting）本质规则和过程 的扼要剖析，是对CSS2中规则的总结。本文的知识点十分密集，即使错过其中一个小小的知识点也可会导致根本性地误解。本文经过了CSS工作 组（CSS Working Group）和多个CSS组织（CSS cmmounity）反复推敲和检查，但是这并是说本文已经做到至善至美了。也可能有些情况这里没 有涉及到，同时有可能文中提到的一些名词术语对于新手来说存在一定理解上的困难。但是我坚信本文得出的结论是正确无疑的。如果你确定 本文存在某方面的谬误，请把你的观点写下来发信到www-style@w3.org进行讨论。谢谢！</p>
</div>
<h3>前言：</h3>
<p>&nbsp;&nbsp;&nbsp; 为了清晰地描述内联格式模型（inline formatting model）的工作原理，弄清使用到的专业术语的具体含义非常重要。首先来看几个等式，然后是对这些术语的解释。</p>
<ul>
    <li>&nbsp;&nbsp;&nbsp;&nbsp; em-box =<u> font-size </u>= <span style="color: #000080">content-area</span></li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #000080">content-area </span>+ (half-)<span style="color: #800080">leading </span>= <span style="color: #339966">inline box</span></li>
    <li>&nbsp;&nbsp;&nbsp;&nbsp; <span style="color: #339966">inline box</span>(min/max) = <span style="color: #800000">line-box</span></li>
</ul>
<p>其中，&nbsp;</p>
<ul>
    <li><strong>em-box </strong>= 指定字体中定义的em-box（文本本身盒模型的大小）</li>
    <li><u>font-size </u>＝ em-box中指定用于度量字体显示大小的数值</li>
    <li><span style="color: #000080">content-area </span>= 在非置换元素中，盒模型是使用元素内每个字符的<u>font-size</u>的整体大小来描述的；在可置换元素中，则中元素的实际高度加上margin、border、padding的值；</li>
    <li>（half-）<span style="color: #800080">leading</span> ＝ 每个元素由于<u>font-size</u>和<u>line-height</u>的不同，在<span style="color: #000080">content-area</span>的上方和下方产生的差值，并且上下方的差值相等的</li>
    <li><span style="color: #339966">inline box </span>＝ 每个元素的(half-)l<span style="color: #800080">eading</span>和<span style="color: #000080">content-area</span>之和；对于非转换元素，一个元素的<u>inline-box</u>的高度恰好等于它的<u>line-height</u>的值；对于可转换元素，一个元素的<span style="color: #339966">inline box</span>高度则正好等于其实际高度加上所有的margin、border、padding等。</li>
    <li><span style="color: #800000">line-box</span>＝它的上下边界分别是行内所有<span style="color: #339966">inline-box</span>的最高点和最低点。</li>
</ul>
<p>上面的描述中所未涉及到的几点：</p>
<ul>
    <li><span style="color: #000080">content-area</span>和块级元素的内容盒框相似</li>
    <li>内联元素的背景会同时应用在元素<span style="color: #000080">content-area</span>和padding上</li>
    <li>内联元素的边框是围绕在<span style="color: #000080">contend-area</span>和padding之外的</li>
    <li>内联元素及其衍生盒模型的非转换元素中在垂直方向上应用margin将不会起作用（但是水平方向可以）</li>
    <li>可转换元素的margin和border会影响元素<span style="color: #800000">line-box</span>的高度，因此也会影响到所在行的<span style="color: #800000">line-box</span>高度</li>
</ul>
<p>&nbsp;&nbsp;&nbsp; 此外，<span style="color: #339966">inline box</span>是根据<u>vertical-align</u>来处理对齐方式的。上面的说明中没有提到这一点，但是它却<a target="_blank" href="http://www.w3.org/TR/REC-CSS2/visudet.html#line-height">CSS2：10.8</a>中介绍的规则。</p>
<h3>结论：</h3>
<p>&nbsp;&nbsp;&nbsp; 在只有一行<u>font-size</u>和<u>line-height</u>相等的内联非置换元素情况下同，解决起来比较简单。<span style="color: #000080">content-area</span>直接通过<u>font-size</u>来定义，<span style="color: #800000">line-box</span>的高度等于<u>line-height</u>。（后面会有更加充分的解释）<br />
而在同时包含有可置换和非置换内联元素的情况下（<a target="_blank" href="http://www.w3.org/TR/CSS21/visudet.html">什么是可置换、非可置换元素？</a>），它们有不同的<u>font-size</u>和<u>line-height</u>值，问题就得使用下面的方法来解决。对于每个元素来说，<span style="color: #000080">content-area</span>的高度取决于每一个非可置换元素的<u>font-size</u>和可置换元素的实际高度加上所有的padding、border和margin。之后再加上<span style="color: #800080">leading</span>，一半位于上部，一半位于下部。得出的这个数值就是<span style="color: #339966">inline box</span>中用以计算对齐方式的数值。<span style="color: #008080">inline-box</span>中顶部最高位置就是<span style="color: #800000">line-box</span>的顶部，<span style="color: #008080">inline-box</span>中底部的最低位置就是<span style="color: #800000">line-box</span>中的底部（也就前面所说的<span style="color: #800000">line-box</span>的上下边界由所以<span style="color: #008080">inline-box</span>的最高和最底位置来决定）。</p>
<p>&nbsp;&nbsp;&nbsp; 这就是说，一个足够大的元素，即使只有一个很小的<u>line-height</u>，也可以通过指定<span style="color: #000080">content-area</span>的值来使得和后面内容保持较大行距。例如，考虑下面的例子：</p>
<pre class="xhtml" name="code"><font face="Arial">&lt;P style=&quot;line-height: 12pt; font-size: 12pt;&quot;&gt;<br />&lt;A style=&quot;font-size: 128pt;&quot;&gt;anchor&lt;/A&gt; <br />angry text <br />&lt;B style=&quot;vertical-align: top&quot;&gt;bold&lt;/B&gt;<br />&lt;/P&gt;</font></pre>
<p>&nbsp;&nbsp;&nbsp; 超级链接的<span style="color: #000080">content-area</span>高度为128pt，但是由于指定了<u>line-height</u>，它的<span style="color: #008080">inline box</span>只有12pt高。这个<span style="color: #008080">inline box</span>位于baseline之上；根据上面的参数，我们就可能判断超级链接底部（bottom）位于baseline之上30pt。这就使得<span style="color: #339966">inline box</span>的顶部位于baseline之上42pt。而纯文本则正好偏于baseline之上，其<span style="color: #000080">content-area</span>高度为12pt，底部位于baseline之下2pt。加粗文本的<span style="color: #000080">content-area</span>也是12pt高，但它是靠<span style="color: #800000">line-box</span>的顶部对齐的。</p>
<div style="border-right: purple 4px double; padding-right: 0.25em; border-top: purple 4px double; padding-left: 0.25em; background: #ffeeff; padding-bottom: 0.25em; margin: 1em 2em; border-left: purple 4px double; padding-top: 0.25em; border-bottom: purple 4px double"><strong>&ldquo;根据上面的参数，我们就可能判&hellip;&hellip;位于baseline之上30pt&rdquo;的计算原理：</strong><br />
&nbsp;&nbsp;&nbsp; 以Helvetica字体为例来说。在Helvetica字体中已经指定了baseline的位置，文本会从baseline下降-219/1000，上升781/1000。因此，对于font-size大小为128pt来说，它下降（位于baseline以下）部分为-28pt（128pt*219/1000），上升（位于baseline心目）部分为100pt。根据line-height的规则，本例中为12pt，实际起作用的halfheading就是12pt-128pt)/2 = -58pt。half leading是从128pt 字母高度（EM）的顶部和底部计算得出的。因此，字体大小为128pt的inline box的content area底部就是-28pt-(-58pt)=58pt-28pt=30pt。同样，inline box的content area的顶部位于（baseline的）100pt-58pt＝42pt处。<br />
（注意：Helvetica字体处于数字的时候有轻微的变动。它实际上升和下降数值接近于775/1000 EM和-225/1000 EM。）<br />
对于content area的baseline可能看来有点&ldquo;怪异&rdquo;，因为baseline不是正好处在字符的中间，而是向字符的底部稍微有点偏移。需要注意的是，这个例子只是用以介绍CSS规则的一个方面，而不是说每个人都应该对字体使用较大的负leading。<br />
--Steve Zilles</div>
<p>&nbsp;&nbsp;&nbsp; &nbsp;现在计算得到<span style="color: #800000">line-box</span>高度为44pt：42pt位于baseline之上，2pt位于baseline之下。加粗字体的<span style="color: #008080">inline-box</span>顶部（在本例中同<span style="color: #000080">content-area</span>一致）和<span style="color: #800000">line-box</span>字体的顶部重合。纯文本之上有30pt的空白，而链接文字上部会有baseline之上58pt、之下26pt&ldquo;浸入&rdquo;到相邻行中中（注意，这些数字都是假定链接文本的<span style="color: #008080">inline box</span>底部位于baseline以上30pt，溢出扩展部分主要根据链接的&ldquo;<span style="color: #000080">content-area</span>&rdquo;的中点与baseline之间的关系决定）。</p>
<p style="border-right: maroon 2px solid; padding-right: 1em; border-top: maroon 2px solid; padding-left: 1em; background: white; padding-bottom: 1em; margin: 1em 2em; border-left: maroon 2px solid; padding-top: 1em; border-bottom: maroon 2px solid">测试：对照这个<a target="_blank" href="http://www.dudo.org/attachments/month_0806/w2008627223916.htm">测试文件</a>和<a target="_blank" href="http://www.dudo.org/attachments/month_0806/t2008627223916.gif">相关显示效果</a>。两个示例中，都是在上面的代码基础进行了扩展，此外，前者和代码设置相同，后者使用了的36pt的链接。</p>
<p>&nbsp;&nbsp;&nbsp; 如果在行内出现了一个可置换文本，它的<span style="color: #000080">content-area</span>就等于它的实际高度和宽度加上所有的padding、border和margin。<u>line-height</u>对于可置换元素的<span style="color: #008080">inline box</span>没有效果（但是当解释<u>vertical-align</u>属性的百分比数值时可以使用）。例如，考虑下面的例子：</p>
<pre class="xhtml" name="code"><font face="Arial">&lt;P style=&quot;line-height: 12pt; font-size: 12pt;&quot;&gt;<br />&lt;IMG SRC=&quot;filler.gif&quot; style=&quot;height: 120pt; width: 16pt; margin: 8pt;&quot;&gt; <br />angry text <br />&lt;B style=&quot;vertical-align: top&quot;&gt;bold&lt;/B&gt;<br />&lt;/P&gt;</font></pre>
<p>&nbsp;&nbsp;&nbsp; 图片的<span style="color: #000080">content-area</span>总高度为136pt（120pt + 8pt + 8pt），12pt的<u>line-height</u>会被忽略。此外，图片底部的外边缘（content加上margin）将会同baseline对齐，这会使<span style="color: #800000">line-box</span>的顶部升高，因为图片<span style="color: #008080">inline box</span>的顶部会比前面例子中的链接顶部要高。使可置换元素的<span style="color: #008080">inline-box</span>比元素大小还要小的唯一方法就是使用负的margin值。顶部对齐的粗体文本将会与<span style="color: #800000">line-box</span>的顶部对齐，这也正好是图片的顶部外边缘（content加margin）。</p>
<p style="border-right: maroon 2px solid; padding-right: 1em; border-top: maroon 2px solid; padding-left: 1em; background: white; padding-bottom: 1em; margin: 1em 2em; border-left: maroon 2px solid; padding-top: 1em; border-bottom: maroon 2px solid">测试：对照这个<a target="_blank" href="http://www.dudo.org/attachments/month_0806/j2008627224745.htm">测试文件</a>和相关<a target="_blank" href="http://www.dudo.org/attachments/month_0806/j2008627224745.gif">显示效果</a>。两个示例中，都是在上面的代码基础进行了扩展，此外，前者和代码设置相同，后者使用了的30pt的图片，其margin值为6pt。</p>
<p>&nbsp;&nbsp; 如果父级内联元素设置了border，那么border将和元素的<u>font-size</u>一致；同时也会和元素的<span style="color: #000080">content-area</span>相匹配，后代元素。例如，考虑下面的例子：</p>
<pre class="xhtml" name="code"><font face="Arial">&lt;P style=&quot;line-height: 12pt; font-size: 12pt;&quot;&gt;<br />&lt;SPAN style=&quot;border: 1px solid gray;&quot;&gt;<br />&lt;A style=&quot;font-size: 72pt;&quot;&gt;anchor&lt;/A&gt; <br />&lt;IMG SRC=&quot;filler.gif&quot; style=&quot;height: 60pt; width: 16pt; margin: 4pt;&quot;&gt; <br />angry text <br />&lt;B style=&quot;vertical-align: top&quot;&gt;bold&lt;/B&gt;<br />&lt;/SPAN&gt;<br />&lt;/P&gt;</font></pre>
<p>&nbsp;&nbsp;&nbsp; SPAN的边框将和假定的<span style="color: #000080">content-area</span>一致，在本例中为12pt，因为从父元素中继承来的<u>font-size</u>是12pt。（此外，在本例中SPAN的<span style="color: #000080">content-area</span>和其<span style="color: #008080">inline box</span>正好一致，因为<u>font-size</u>和<u>line-height</u>数值相同。）这个边框将会穿过段落内外部元素，可能在任何顶部对齐（<u>top-align</u>）的元素下方显示。在内联元素与SPAN<span style="color: #008080">inline box</span>重叠的情况下，规范中并未指定谁应该在谁的上方。<br />
&nbsp;</p>
<p style="border-right: maroon 2px solid; padding-right: 1em; border-top: maroon 2px solid; padding-left: 1em; background: white; padding-bottom: 1em; margin: 1em 2em; border-left: maroon 2px solid; padding-top: 1em; border-bottom: maroon 2px solid">测试：对照这个<a target="_blank" href="http://www.dudo.org/attachments/month_0806/u2008627225420.htm">测试文件</a>和相<a target="_blank" href="http://www.dudo.org/attachments/month_0806/a2008627225420.gif">关显示效果</a>。两个示例中，都是在上面的代码基础进行了扩展，此外，前者和代码设置相同，后者使用了的30pt的图片，其margin值o为2pt，此外还有一个36pt的链接。</p>
<p style="border-right: maroon 2px solid; padding-right: 1em; border-top: maroon 2px solid; padding-left: 1em; background: white; padding-bottom: 1em; margin: 1em 2em; border-left: maroon 2px solid; padding-top: 1em; border-bottom: maroon 2px solid">在一些常见情况下，可以查看这个<a target="_blank" href="http://www.dudo.org/attachments/month_0806/x2008627225716.htm">测试文档</a>和H?kon Lie's 提供的<a target="_blank" href="http://www.opera.com/people/howcome/2000/inline-hades/">相关显示效果</a>。</p>]]></description>
		</item>
		
			<item>
			<link>http://www.dudo.org/default.asp?id=253</link>
			<title><![CDATA[合理关闭XHTML标签]]></title>
			<author>dudo@dudo.org(dudo)</author>
			<category><![CDATA[CSS与Javasript]]></category>
			<pubDate>Tue,24 Jun 2008 18:23:58 +0800</pubDate>
			<guid>http://www.dudo.org/default.asp?id=253</guid>	
		<description><![CDATA[<p>&nbsp;&nbsp;&nbsp; <a href="http://www.w3.org/TR/xhtml1/" target="_blank">XHTML规范</a>中有一条标准就是&ldquo;每个XHTML标签都有一个结束标记&rdquo;。那么对于HTML中原来不带结束标记的元素，则在该结束前加上&ldquo;/&rdquo;来关闭这个标签，如，&lt;img&gt;标签原来在HTML中的写法：</p>
<pre class="html" name="code">
 &lt;img src=&quot;...&quot; alt=&quot;...&quot;&gt;</pre>
<p>到了XHTML中，就应该在&ldquo;&gt;&rdquo;前增加一个&ldquo;/&rdquo;来关闭这个标签，为了防止某些老式浏览器不认识这种写法，因此要在&ldquo;/&rdquo;前加上一个空格（<a href="http://www.w3.org/TR/xhtml1/#guidelines" target="_blank">HTML兼容性标准</a>）：</p>
<pre name="code" class="xhtml">
&lt;img src=&quot;...&quot; alt=&quot;...&quot; /&gt;</pre>
<p>这似乎是说在开始标记中加上一个&ldquo;/&rdquo;就可以关闭掉这个标签。特别是对于空内的标签来说，似乎使用这种写法更简洁了。比如说，</p>
<pre name="code" class="xhtml">
&lt;div class=&quot;clear&quot;&gt;&lt;/div&gt;</pre>
<p>这是在<a href="http://www.dudo.org/article.asp?id=239" target="_blank">清除浮动（闭合浮动元素）</a>中经常用到的一段代码。那么它似乎可以样写：</p>
<pre class="xhtml" name="code">
&lt;div class=&quot;clear&quot; /&gt;</pre>
<p>是的，&lt;div&gt;元素可以为空，这样写没有问题，但是我们对其它标签也使用类似的写法会出现什么样的后果呢？如在&lt;head&gt;中引入外部Javascript文件，我们一般这么写：</p>
<pre name="code" class="xhtml">
&lt;script type=&quot;text/javascript&quot; src=&quot;...&quot; language=&quot;javascript&quot;&gt;&lt;/script&gt;</pre>
<p>既然没有内容为空，我们们可不可以写成</p>
<pre name="code" class="xhtml">
&lt;script type=&quot;text/javascript&quot; src=&quot;...&quot; language=&quot;javascript&quot; /&gt;</pre>
<p>我们发现，这样的写法在浏览器要么不起作用，要么会出错，多数情况下，浏览器会认为这个标签没有关闭，而错误地认识&lt;script&gt;之后的所有内容都是Javascript代码，所以会产生错误。再如，</p>
<pre name="code" class="xhtml">
&lt;textarea id=&quot;tt&quot; cols=&quot;10&quot; rows=&quot;8&quot; /&gt;</pre>
<p>&nbsp;&nbsp;&nbsp; 如果在浏览器运行这段代码，你会发现从&lt;textarea&gt;开始，之后的所有<a href="http://www.dudo.org/default.asp?tag=xhtml" target="_blank">XHTML</a>代码都会被当作文本框的内容出现在文本框内。</p>
<p>&nbsp;&nbsp;&nbsp; 这样看来，HTML4.0中已经存在成对的标签在XHTML中必须使用已有的结束标签。那么&lt;div&gt;为什么可以呢？其实，&lt;div&gt;也不可以，只是&lt;div&gt;的在浏览器没有那么明显的显示而已。而诸如&lt;span /&gt;一类的写法就更加不正确了，首先&lt;span&gt;本身有关闭标签&lt;/span&gt;，此外&lt;span&gt;标签内容不能为空白（纯空格也不行）。也就是说除了&lt;img&gt;、&lt;hr&gt;、&lt;link&gt;、&lt;br&gt;等标签可以使用&ldquo;/&rdquo;关闭外，其它的元素必须使用&lt;/...&gt;，否则会出现不可预料的问题。</p>]]></description>
		</item>
		
			<item>
			<link>http://www.dudo.org/default.asp?id=252</link>
			<title><![CDATA[CSS的优先级与特殊性]]></title>
			<author>dudo@dudo.org(dudo)</author>
			<category><![CDATA[CSS与Javasript]]></category>
			<pubDate>Mon,23 Jun 2008 11:37:40 +0800</pubDate>
			<guid>http://www.dudo.org/default.asp?id=252</guid>	
		<description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp;即使在不太复杂的样式表中，也可能会有两个或者更多个规则找到同一元素。CSS通过一个叫做层叠（cascade）的过程处理这种冲突。层叠给每个规则分配一个重要程度指数。作者定义的样式具有最高的重要性指数，其次是用户定义的样式。但是为了增强用户的控制能力，用户可以通过为任何规则增加一个!important来提高它的重要性指数，让它的优先级高于任何规则，甚至是比作者的!important还要高。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;因此，层叠重要性指数的次序依次为：<ul style="list-style-type:decimal"> <li>标记为!important的用户样式<br/> </li><li>标记为!important的作者样式<br/> </li><li>作者样式<br/> </li><li>用户样式<br/> </li><li>浏览器/用户代理的默认样式<br/></li></ul>&nbsp;&nbsp;&nbsp;&nbsp;为了计算规则的优先级，每种类型的选择符都有一个相应的数值，由于每个选择器都由若干选择符组成，所以选择器的优先指数由选择符对应的数值相加而成，数值越高，优先级越高。CSS中的选择符有四类：<ul> <li>行内样式（Inline Style），如&lt;span style=&#34;color:red&#34;&gt;...&lt;/span&gt;<br/> </li><li>ID选择符（ID sel&#101;ctors），如#myid<br/> </li><li>类、属性选择符、伪类（Classes, attributes and pseudo-classes），如 .class {...}、</li>[href$=dudo.org]、:hover<br/> <li>元素（elements)、伪元素选择符(pseudo-elements)，如 p {...}、:first-line {...}<br/></li></ul>&nbsp;&nbsp;&nbsp;&nbsp;怎么来测量呢？如前所述，它们每一类都有不同的数值表示，其中：<br/><span style="color:#333">行内样式为：1000<br/>ID选择符为：0100<br/>类选择符为：0010<br/>元素样式为：0001</span><br/><br/>&nbsp;&nbsp;这里要指出的是，所有这些数值都不是10进制数字，1000只是代码它是一个行内样式，<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;例如，body #wrap p {...}，那么它的优先级指数就是 1+100+1=102，而body div#wrap p {...}的优先级指数就是 1+ 1 +100 + 1 =103。<br/>&nbsp;&nbsp;&nbsp;&nbsp;再看一下其它的例子：&nbsp;&nbsp;<br/> <span style="color:#666">* { } 0 <br/> li:first-line { } 2 (one element, one pseudo-element) <br/> ul ol+li { } 3 (three elements) <br/> ul ol li.red { } 13 (one class, three elements) <br/> style=”” 1000 (one inline styling) <br/> div p { } 2 (two HTML sel&#101;ctors) <br/> div p.sith { } 12 (two HTML sel&#101;ctors and a class sel&#101;ctor) <br/> body #darkside .sith p { } 112 (HTML sel&#101;ctor, id sel&#101;ctor, class sel&#101;ctor, HTML sel&#101;ctor; 1+100+10+1) </span><br/>看这段代码：<br/><pre name="code" class="css">&#160;&#160;&#160;&#160;#wrap #content {color: blue;}<br/>&#160;&#160;&#160;&#160;#content {color: red;}<br/></pre><pre name="code" class="xhtml">&nbsp;&nbsp;&lt;div id=&#34;wrap&#34;&gt;<br/>&#160;&#160;&#160;&#160;&lt;div id=&#34;content&#34;&gt;this is a text here&lt;/div&gt;<br/>&nbsp;&nbsp;&lt;/div&gt;<br/></pre><br/> 最终文本会显示什么样的颜色呢？<br/><a target="_blank" href="http://www.dudo.org/attachments/month_0806/a2008623113314.html" class="quoteLink">相看运行效果</a><br/><br/>&nbsp;&nbsp;是的，样式覆盖只会发生在具有相同优先级的情况下。这个例子中#wrap #content为200，而#content为100，纵使后设定color:red，也不会覆盖掉先前设定的color:blue;。此外，你可以为#content {color: red;}增加!important来看看效果。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;<strong>以上都是在少于10个选择符的情况下，可以把这些数值当作十进制来使用和比较，但是，当选择符超过10个（虽然可能性很小）又会怎么样呢？</strong>我们参考一个<a target="_blank" href="http://meyerweb.com/eric/css/link-specificity.html" class="quoteLink">Eric的例子</a>:<br/><pre name="code" class="css"> .hello {color: red;}&nbsp;&nbsp;&nbsp;&nbsp;/* specificity = 10 */<br/>&nbsp;&nbsp; HTML BODY DIV UL LI OL LI UL LI OL LI UL LI OL LI {color: green;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* specificity = 15 */</pre><br/>这里的10并不是“十”，它仅仅代表是一个烦选择符，所以的它的优先级依然要比 15个类型选择符组成的选择器要高。如果换成十六进制的话，就是这个样子<br/><pre name="code" class="css"> .hello {color: red;}&nbsp;&nbsp;&nbsp;&nbsp;/* specificity = 10 */<br/>&nbsp;&nbsp; HTML BODY DIV UL LI OL LI UL LI OL LI UL LI OL LI {color: green;}<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* specificity = 15 */</pre><br/>&nbsp;&nbsp;&nbsp;&nbsp;但是问题，如果你再添加两个元素，就又变成了11了，还是出现前面的情况。不过你应该始终记得，即使数值“看起来”比较大，它们的排序首先按照类型优先级来决定。<br/><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.dudo.org/default.asp?id=251</link>
			<title><![CDATA[使用CSS简单实现垂直居中]]></title>
			<author>dudo@dudo.org(dudo)</author>
			<category><![CDATA[CSS与Javasript]]></category>
			<pubDate>Sat,21 Jun 2008 23:11:09 +0800</pubDate>
			<guid>http://www.dudo.org/default.asp?id=251</guid>	
		<description><![CDATA[<p>&nbsp;&nbsp;&nbsp; 学习一些你已经知道的知识也没有什么坏处，是吧？<br />
<br />
&nbsp;&nbsp;&nbsp; 我知道这可能并不一定非常有意义，但是很多时候我们往往知其然而不知其所以然，这会使得事情出现惊人的差异。这就是CSS的魅力所在，你可以使用不同的方法实现相同的布局。这样的事情同样也发生在了我的身上，某个礼拜，我发现一个网站使用了一种不同的方法来实现居中布局，而这种方法对我们大家来说早已是都是很熟悉知的简单技术了。的确，可能对于大家很多人来说这种方法早已采用过，但是直到今天它起了我的注意。</p>
<h4>传统做法：</h4>
<p>&nbsp;&nbsp;&nbsp; 我学到的第一个CSS知识就是如何把一个固定宽度和高度的元素水平或者垂直居中。这些居中的内容可能是入站欢迎页面（Splash　Page　http://searchsoa.techtarget.com/sDefinition/0,,sid26_gci213036,00.html）中图片，或者是一些设计喜欢的居中设计的网站等。最原始的解决办法就是把元素在窗口中距左和距上边缘进行50%的绝对定位。当然这只是把元素的右上角移动到了窗口的中央，接下来你还需要设置负的margin-left和margin-top并且使它们的值刚好是宽和高的一半来把元素拉加到屏幕的中央。<br />
<br />
让我们看一下旧式做法的例子并注意一下其中的不足：</p>
<pre class="css" name="code">
html,body{
	height:100%;
	margin:0;
	padding:0;
}
body{
	background:#eae7d7 url(images/vert-centre.jpg) repeat-x center center;
	text-align:center;
	min-width:626px;
	min-height:400px;
}
#vert-hoz{
	position:absolute;
	top:50%;
	left:50%;
	margin-top:-198px;/* half elements height*/
	margin-left:-313px;/* half elements width*/
	width:624px;
	height:394px;
	border:1px solid silver;
	background:#666;
	overflow:auto;/* allow content to scroll inside element */
	text-align:left;
}
h1 {color:#fff;margin:0;padding:0}</pre>
<pre class="xhtml" name="code">
&lt;div id=&quot;vert-hoz&quot;&gt;
	&lt;h1&gt;Content goes here&lt;/h1&gt;
&lt;/div&gt;</pre>
<p>你可以在<a target="_blank" href="http://www.dudo.org/attachments/month_0806/d2008621223741.htm">这里看到线上演示</a>，效果如下图：<br />
<br />
图1<br />
<img src="http://www.dudo.org/attachments/month_0806/42008621223610.jpg" alt="" /></p>
<p>&nbsp;&nbsp;&nbsp; 为了页面美观起见我给各元素添加了一些背景颜色，这里我们真正感兴趣的是灰色居中部分（此外，你应该注意到为了使背景图片居中你应该设置html、body的高度为100%）。<br />
&nbsp;&nbsp;&nbsp; 如图1所示，这个结果正题我们想要的，元素在水平和垂直方向上都完美地实现了居中。文章中已经提到，对元素绝对定位使其top和left值都为50%，然后使用负的顶部填充和左侧填充并使填充的值为高和宽的一半。<br />
&nbsp;&nbsp; 尽管看起来没有什么问题，但是使用这种方法存在几个严重的不足，水平或者垂直缩小窗口你就会发现这个问题了。当窗口缩小到比元素还要小时，元素就会开始从窗口的上部和左侧滑出。滑出的部分即使是使用窗口的滚动条也无法可见。这就意味着使用较小屏幕的用户根本看不见这些内容。<br />
&nbsp;&nbsp;&nbsp; 图2显示了当窗口缩小时例子中单行文本发生的变化。<br />
<br />
图2<br />
<img alt="" src="http://www.dudo.org/attachments/month_0806/n2008621224038.jpg" /><br />
<br />
&nbsp;&nbsp;&nbsp; 文本上部有一半丢失，左侧也有一部分不见了。如果我们进一步缩小窗口，整个文本会完全消失。为了达到我们最初的目的，试着给body增加min-height和min-width属性，但是你会发现这根本没有任何效果，元素依然会滑出窗口之外。</p>
<h4>修正后的方法</h4>
<p>面对这些问题，一个类似居中技术可以供我们采用，它依然采用了对于顶部的绝对定位，但是对于水平居中使用的是自由浮动。这会限制元素从窗口的左侧滑出。<br />
下面是修正后的代码：</p>
<pre class="css" name="code">
html,body{
	height:100%;
	margin:0;
	padding:0;
}
body{
	background:#eae7d7 url(images/vert-centre.jpg) repeat-x center center;
	text-align:center;
	min-width:626px;
	min-height:400px;
}
#vertical{
	position:absolute;
	top:50%;
	margin-top:-198px;/* half main elements height*/
	left:0;
	width:100%;
}
#hoz {
	width:624px;
	margin-left:auto;
	margin-right:auto;
	height:394px;
	border:1px solid silver;
	background:#666;
	overflow:auto;/* allow content to scroll inside element */
	text-align:left;
}
h1 {color:#fff;margin:0;padding:0}</pre>
<pre name="code" class="xhtml">
&lt;div id=&quot;vertical&quot;&gt;
	&lt;div id=&quot;hoz&quot;&gt;
		&lt;h1&gt;Content goes here&lt;/h1&gt;
	&lt;/div&gt;
&lt;/div&gt;</pre>
<p>&nbsp;&nbsp;&nbsp; 可以在这里查<a href="http://www.dudo.org/attachments/month_0806/12008621224329.htm" target="_blank">看在线演示</a>。<br />
&nbsp;&nbsp;&nbsp; 水平方向上已经达到我们所要的效果，但是当窗口高度缩小时顶部依然会消失，如图3所示：<br />
<br />
图3<br />
<img alt="" src="http://www.dudo.org/attachments/month_0806/p2008621224426.jpg" /></p>
<h4>修正：</h4>
<p>&nbsp;&nbsp;&nbsp; 为了解决这个问题（也是本文写作的目的）我之前曾经使用过<a href="http://www.pmob.co.uk/pob/hoz-vert-center.htm" target="_blank">几个比较复杂的方法</a>，但是现在使用的这种方法更简单、更健壮，那就是使用浮动（float）来代替绝对定位。<br />
&nbsp;&nbsp;&nbsp; 页面中设置为顶端50%绝对定位的第一个元素进行浮动。然后把浮动向上拉动，大小为元素高度的一半。<br />
&nbsp;&nbsp;&nbsp; 下面是必要的修改：</p>
<pre name="code" class="css">
#vertical{
	float:left;
	height:50%;
	margin-top:-198px;/* half vertical height*/
	width:100%;
}</pre>
<pre name="code" class="xhtml">
&lt;div id=&quot;vertical&quot;&gt;&lt;/div&gt;
&lt;div id=&quot;hoz&quot;&gt;
	&lt;h1&gt;Content goes here&lt;/h1&gt;
&lt;/div&gt;</pre>
<p>这里有一个<a href="http://www.dudo.org/attachments/month_0806/k2008621224755.htm" target="_blank">在线演示</a>你可以自己观察一下。<br />
<br />
图4</p>
<p><img alt="" src="http://www.dudo.org/attachments/month_0806/l200862122492.jpg" /></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 重要的是我们对浮动元素设置的宽度是100%，并且记住由于某些浏览器会出现问题我们需要对后面的元素设置clear:both。如果我们不使用&ldquo;float&rdquo;，元素依然会居中但是它会从顶端消失掉。</p>
<h4>为什么这样可行呢？</h4>
<p>&nbsp;&nbsp;&nbsp; 实际上这里涉及到浮动的一个有趣的行为，而且也比较好理解它的原理。为什么当我们使用一个静态元素（或者是第一个示例中绝对定位元素）时内容会从窗口的顶端消失，而当我们使用float时却不会产生这个问题呢？</p>
<p>&nbsp;&nbsp;&nbsp; 浮动的一个特点就是他们脱离了文本流（尽管你可以通过为后面的元素使用clear来重新控制它们）。浮动元素后面的内容会被移动以为浮动元素留空间（通常是通过浏览器对静态顶部填充来清除浮动）。如果浮动元素根本没有出现该位置，那么<strong>后面的内容会占居浮动元素原来在页面中的位置</strong>。因此对一个浮动元素使用负的顶部填充（margin），浮动元素会冲破任何包含它的块级元素限制，因为我们前面已经提到浮动元素一开始就脱离了文本流。但是如果我们把元素从包含它的块级元素向外拖动足够远以至于它完全超出父元素范围，那么它后面的任何元素将不会继续跟随其向上移动，但是重新设定包含块级元素的内部内容的大小，会使浮动元素继续浮动。</p>
<p>&nbsp;&nbsp;&nbsp; 这就是我们的例子中发生的事情，浮动元素被从body中向上移动，它后面的元素被迫留在body形成的块级元素中。这可能有点难以直接去理解，但是我们可以看一下下面的这个演示。</p>
<pre class="css" name="code">
.float{
	width:200px;
	height:100px;
	background:red;
	float:left;
}
.top{
	background:green;
	height:300px;
	width:100%;
}
.follow-on{
	clear:both;
	background:blue;
	height:100px
}</pre>
<pre name="xhtml" class="css">
&lt;div class=&quot;top&quot;&gt;Top&lt;/div&gt;
&lt;div class=&quot;float&quot;&gt;Float&lt;/div&gt;
&lt;div class=&quot;follow-on&quot;&gt;Following content&lt;/div&gt;</pre>
<p>&nbsp;&nbsp;&nbsp; 上面的代码在页面的顶端设置了一个静态元素，其后是一个浮动元素，再后是其它的静态内容，它就产生了如图5所示的效果，或者可看<a href="http://www.dudo.org/attachments/month_0806/x2008621225342.htm" target="_blank">在线演示</a>。<br />
<br />
图5<br />
<img alt="" src="http://www.dudo.org/attachments/month_0806/4200862122551.jpg" /></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; 没有什么特别需要注意的，一切如同我们相像的一样。</p>
<p>&nbsp;&nbsp;&nbsp; 如果下面我们<strong>给浮动元素增加一个负的100px的顶端边距</strong>，我们就得到如图6所示的结果：</p>
<pre class="css" name="code">
.float{
	width:200px;
	height:100px;
	background:red;
	float:left;
	margin-top:-100px
}</pre>
<p>图6</p>
<p><img src="http://www.dudo.org/attachments/month_0806/h20086212307.jpg" alt="" /></p>
<p>&nbsp;</p>
<p>仍然和我们料想的一样，但是如果我们增加负的200px的顶端填充又会发生什么呢？</p>
<pre name="code" class="css">
.float{
	width:200px;
	height:100px;
	background:red;
	float:left;
	margin-top:-200px
}</pre>
<p>图7显示了结果：</p>
<p>图7<br />
<img alt="" src="http://www.dudo.org/attachments/month_0806/n20086212327.jpg" /></p>
<p>&nbsp;&nbsp;&nbsp; 和你看到的一样，浮动元素从后面的内容中移走，但是浮动元素后面的内容仍然会停留在包含它的元素的顶端（如在绿色元素的下面）。在我们的前面的例子中，当我们向外移动浮动元素时，也是发生了同样的事情。<br />
<br />
&nbsp;&nbsp;&nbsp; 但是如果我们从红色的div去掉float属性，那么红色的div和它后面下面的内容就会被移动到绿色元素的上面。</p>
<p>图8<br />
<img alt="" src="http://www.dudo.org/attachments/month_0806/s200862123326.jpg" /></p>
<p>&nbsp;&nbsp;&nbsp; 浮动元素负的边距产生变化，后面的内容也会相应地向上移动。<br />
<br />
&nbsp;&nbsp;&nbsp; 我希望这个小的提示会让你感兴趣（即使你已经知道了），这也说明对于我们每一个人都有新的东西要去学习。<a href="http://www.dudo.org/attachments/month_0806/12008621224329.htm" target="_blank">前面的例子</a>中所有的代码都已经放在了&lt;head&gt;中，方便大家查看。<br />
<br />
&nbsp;&nbsp;&nbsp; 如果你想了解一些更多高级的居中设计技术，我这里还有其它几个方法供参考。好运！</p>
<p><strong>dudo注：</strong>在我前面的文章中，我已经总结果实现<a href="http://www.dudo.org/article.asp?id=234" target="_blank">水平居中</a>和<a href="http://www.dudo.org/article.asp?id=236" target="_blank">垂直居中</a>的方法，你可以对比参照一下。<br />
&nbsp;&nbsp;&nbsp; 再p.s. 前几点做了几道，类似的题，好像也是犯了两样的毛病，汗~！</p>
<p>原谅链接：<a href="http://www.search-this.com/2008/05/15/easy-vertical-centering-with-css/" target="_blank">http://www.search-this.com/2008/05/15/easy-vertical-centering-with-css/</a><br />
中文翻译：<a href="http://www.dudo.org/article.asp?id=251" target="_blank">http://www.dudo.org/article.asp?id=251</a><br />
<span style="color: rgb(255, 0, 0);">转载请以链接形式注明原谅出处，谢谢！</span></p>]]></description>
		</item>
		
			<item>
			<link>http://www.dudo.org/default.asp?id=250</link>
			<title><![CDATA[CSS Dock Menu：JS+CSS 仿苹果MAC机桌面导航菜单]]></title>
			<author>dudo@dudo.org(dudo)</author>
			<category><![CDATA[CSS与Javasript]]></category>
			<pubDate>Thu,19 Jun 2008 11:17:00 +0800</pubDate>
			<guid>http://www.dudo.org/default.asp?id=250</guid>	
		<description><![CDATA[<img src="http://www.dudo.org/attachments/month_0806/d200862092722.jpg" border="0" alt="仿苹果机桌面菜单"/><br/>&nbsp;&nbsp;&nbsp;&nbsp;如果你是苹果机的疯狂粉丝，那么你一定会喜欢我设计的这款CSS Dock Menu。它采用了<a target="_blank" href="http://jquery.com/" class="quoteLink">Jquery</a>的<a target="_blank" href="http://www.dudo.org/default.asp?tag=JavaScri&#112;t" class="quoteLink">JavaScript库</a>和Fisheye的界面，其中一些图标是我自己设计的。这里有两种样式：底部和顶部。下面我演示一下如何在你的Web页面中使用它：<br/><br/><strong>1、下载源文件</strong><br/><br/><img src="http://www.dudo.org/images/download.gif" alt="下载文件" style="margin:0px 2px -4px 0px"/> <a href="http://www.dudo.org/attachments/month_0806/b200861911438.zip" target="_blank">点击下载此文件</a><br/><br/><strong>2、插入代码</strong><br/>在HTML中的&lt;head&gt;标签中插入如下代码：<br/><pre name="code" class="xhtml">&lt;script type=&#34;text/javascript&#34; src=&#34;js/jquery.js&#34;&gt;&lt;/script&gt;<br/>&lt;script type=&#34;text/javascript&#34; src=&#34;js/interface.js&#34;&gt;&lt;/script&gt;</pre><pre name="code" class="xhtml"><br/>&lt;link href=&#34;style.css&#34; rel=&#34;stylesheet&#34; type=&#34;text/css&#34; /&gt;</pre><pre name="code" class="xhtml"><br/>&lt;!--[if lt IE 7]&gt;<br/>&lt;style type=&#34;text/css&#34;&gt;<br/>.dock img { behavior: url(iepngfix.htc) }<br/>&lt;/style&gt;<br/>&lt;![endif]–&gt;</pre>第一部分是需要用到的Javascript代码，第二部分是用到的CSS样式表，最后一个是用于<a target="_blank" href="http://www.dudo.org/article.asp?id=233" class="quoteLink">Internet Explorer 6中PNG图片的Hack处理</a>。<br/><br/><strong>3、配置</strong><br/>且记要把下面的代码放到HTML中的&lt;body&gt;标签内<pre name="code" class="javascript">&lt;script type=&#34;text/javascript&#34;&gt;<br/>$(document).ready(<br/>function()<br/>{<br/>$(’#dock2′).Fisheye(<br/>{<br/>maxWidth: 60,<br/>items: ‘a’,<br/>itemsText: ’span’,<br/>container: ‘.dock-container2′,<br/>itemWidth: 40,<br/>proximity: 80,<br/>alignment : ‘left’,<br/>valign: ‘bottom’,<br/>halign : ‘center’<br/>}<br/>)<br/>}<br/>);<br/>&lt;/script&gt;</pre><strong>4 添加或者删除项目</strong><br/>向顶部菜单中增加新的项目（注：&lt;span&gt;标签位于&lt;img&gt;之后）：<br/><pre name="code" class="xhtml">&lt;a class=&#34;dock-item&#34; href=&#34;#&#34;&gt;&lt;img src=&#34;images/home.png&#34; alt=&#34;home&#34; /&gt;&lt;span&gt;Home&lt;/span&gt;&lt;/a&gt;</pre>向底部菜单中增加新项目（注：&lt;span&gt;标签位于&lt;img&gt;之前）：<br/><pre name="code" class="xhtml">&lt;a class=&#34;dock-item2&#34; href=&#34;#&#34;&gt;&lt;span&gt;Home&lt;/span&gt;&lt;img src=&#34;images/home.png&#34; alt=&#34;home&#34; /&gt;&lt;/a&gt;</pre><br/><strong>浏览器兼容性</strong><br/>我在Internet Explorer 6、Internet Explorer 7、<a target="_blank" href="http://www.dudo.org/default.asp?tag=Opera" class="quoteLink">Opera 9</a>、Firefox 2以及Safari 2（尽管在Safari中存在一些小问题）中测试通过。<br/>P.S. FireFox 3中也测试通过（<a target="_blank" href="http://www.dudo.org/" class="quoteLink">dudo注</a>）<br/><br/>演示：<a target="_blank" href="http://www.dudo.org/attachments/month_0806/css-dock-menu/css-dock.html" class="quoteLink">CSS Dock Menu</a><br/><a target="_blank" href="http://www.dudo.org/attachments/month_0806/css-dock-menu/css-dock-top.html" class="quoteLink">CSS Dock Memu:top</a><br/><a target="_blank" href="http://www.dudo.org/attachments/month_0806/css-dock-menu/css-dock-bottom.html" class="quoteLink">CSS Dock Meu: Bottom </a><br/><br/>原作者：<a href="http://www.ndesign-studio.com/blog/mac/css-dock-menu" target="_blank">http://www.ndesign-studio.com/blog/mac/css-dock-menu</a><br/>翻译：<a href="http://www.dudo.org/article.asp?id=250" target="_blank">http://www.dudo.org/article.asp?id=250</a><br/><span style="color:red">转载请注意出处，至少保留原作者链接，谢谢！</span><br/>]]></description>
		</item>
		
			<item>
			<link>http://www.dudo.org/default.asp?id=249</link>
			<title><![CDATA[X/HTML5 v.s. XHTML2（II）]]></title>
			<author>dudo@dudo.org(dudo)</author>
			<category><![CDATA[CSS与Javasript]]></category>
			<pubDate>Tue,17 Jun 2008 21:03:26 +0800</pubDate>
			<guid>http://www.dudo.org/default.asp?id=249</guid>	
		<description><![CDATA[<p>在了解了<a target="_blank" href="http://www.dudo.org/article.asp?id=248">XHTML 2的进展</a>之后，我们再来看看X/HTML 5 的进展。</p>
<h4>X/HTML 5酷在什么地方</h4>
<h5>章节元素的构想</h5>
<p>&nbsp;&nbsp;&nbsp; X/HTML 5引入新的元素用于把Web页面分成若干章节。这些组成部分有助于搜索引擎和辅助工具更好地理解页面内容。使用这些新元素可以使标签更具可读性。</p>
<p>&nbsp;&nbsp;&nbsp; 章节化内容的构想很酷！但是请看一下为什么使用章节的技术不够酷。</p>
<h5>对话元素</h5>
<p>对话元素用来表示一段交谈。它包括一个用于定义会话者的dt元素和代表会话者讲话内容的dd元素。例如：</p>
<pre class="xhtml" name="code">
&lt;dialog&gt;<br />  &lt;dt&gt;Costello&lt;/dt&gt;<br />  &lt;dd&gt;Look, you gotta first baseman?&lt;/dd&gt;<br />  &lt;dt&gt;Abbott&lt;/dt&gt;<br />  &lt;dd&gt;Certainly.&lt;/dd&gt;<br />  &lt;dt&gt;Costello&lt;/dt&gt;<br />  &lt;dd&gt;Who's playing first?&lt;/dd&gt;<br />  &lt;dt&gt;Abbott&lt;/dt&gt;<br />  &lt;dd&gt;That's right.&lt;/dd&gt;<br />  &lt;dt&gt;Costello&lt;/dt&gt;<br />  &lt;dd&gt;When you pay off the first baseman every month, who gets the money?&lt;/dd&gt;<br />  &lt;dt&gt;Abbott&lt;/dt&gt;<br />  &lt;dd&gt;Every dollar of it.&lt;/dd&gt;<br />&lt;/dialog&gt;</pre>
<h5>figrue元素</h5>
<p>在印刷发行（教科书、报纸、杂志等）媒体对象（照片、插图、图表等）中经常会使用到标头。到目前为止，Web标记语言还没有可以产生这种效果的结构。figrue元素有一个legend子元素可以用来指定图像的标头。例如：&nbsp;</p>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">figure</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
    <li><span class="tag">&lt;</span><span class="tag-name">legend</span><span class="tag">&gt;</span><span>Credit:&nbsp;Media&nbsp;Inc.,&nbsp;2007</span><span class="tag">&lt;/</span><span class="tag-name">legend</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li class="alt"><span class="tag">&lt;</span><span class="tag-name">img</span><span>&nbsp;</span><span class="attribute">src</span><span>=</span><span class="attribute-value">&quot;smith.jpg&quot;</span><span>&nbsp;</span><span class="attribute">alt</span><span>=</span><span class="attribute-value">&quot;Photo:&nbsp;J.&nbsp;Smith&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></li>
    <li><span class="tag">&lt;/</span><span class="tag-name">figure</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></li>
</ol>
</div>
<h5>m元素</h5>
<p>m元素代表一段文本被标记或者是高亮。这在动态网页中显示搜索关键字时候非常有用，此时页面中的关键字就可以使用m元素来标出来了。例如，响应用户搜索的关键字snow时，Web页面可以生成下面这样一段内容：<br />
&nbsp;</p>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>A&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">m</span><span class="tag">&gt;</span><span>snow</span><span class="tag">&lt;/</span><span class="tag-name">m</span><span class="tag">&gt;</span><span>man&nbsp;is&nbsp;a&nbsp;man-like&nbsp;sculpture&nbsp;constructed&nbsp;out&nbsp;of&nbsp;</span><span class="tag">&lt;</span><span class="tag-name">m</span><span class="tag">&gt;</span><span>snow</span><span class="tag">&lt;/</span><span class="tag-name">m</span><span class="tag">&gt;</span><span>.</span><span class="tag">&lt;/</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<h5>input元素得到加强</h5>
<p>input元素功能加强之后可以支持email、url、数据相关、时间相关、和数字等数据类型。这就意味着更加的验证功能可以在客户端完成了。</p>
<h5>开放的进程</h5>
<p>X/HTML的开发进程比XHTML 2开放得多。每个人都可以参与到<a target="_blank" href="http://whatwg.org/mailing-list">X/HTML 5创意明细</a>中。</p>
<h4>X/HTML 5的美中不足</h4>
<h5>章节元素的使用</h5>
<p>&nbsp;&nbsp;&nbsp; 采用章节元素的的想法是好的，但是X/HTML 5的应用中显得有点累赘。甚至有些解释会让你更加困惑。例如：<br />
&nbsp;&nbsp;&nbsp; aside元素表示组成页面内容的一个部分，它和aside元素前后的内容相关联，它可以被看作是内容中独立的部分。这些组成部分经常用于印刷技术中的侧连栏。<br />
&nbsp;&nbsp;&nbsp; 难道拥有role属性的div元素不加具有扩展性和更容易被理解？<br />
&nbsp;&nbsp;&nbsp; 另外一个被提及的章节元素是nav，用于表示页面中链接其它页面的链接。我们真的需要nav元素吗？XHTML 2中的nl元素可以更好地完成这个任务。</p>
<h5>HTML 4和XHTML 1中的不足在未来的规范中还将存在</h5>
<p>&nbsp;&nbsp;&nbsp; 因为X/HTML试图提供向后支持，HTML 4和XHTML 1中的不足将还会在X/HTML 5中存在。规范不必向后当空，相反应该客户端软件通过支持多种规范来提供向后兼容能力。</p>
<h5>X/HTML 5没有遵循X/HTML 5手册</h5>
<p>&nbsp;&nbsp;&nbsp; X/HTML 5旨在向后兼容HTML 4和XHTML 1。现在big、acronym、u和tt都还不是这个规范中的内容，而像i和samll等其它元素有了重新定义之后的语意。例如，在HTML 4.01规范中是这样定义i和small的：<br />
<em>i：使文本呈现斜体</em><br />
<em>small：以&ldquo;小&rdquo;字体呈现文本</em><br />
在X/HTML 5中，i和small有了新的含意：<br />
&nbsp;<em>&nbsp;&nbsp; i元素用不同的方式来表现一段文本或者是与正文存在差异的段落，如分类设计、技术术语、外来语言的习惯用语、某个想法、意见、船名或者其它需要在印刷技术中呈现斜体的文本。。<br />
&nbsp;&nbsp;&nbsp; small元素呈现的是小的打印字体（文档中具有说明法律约束作用的部分，如版权或者存在的弊端）和批注等。</em><br />
&nbsp;&nbsp;&nbsp; 通过重新定义i和small的含义，这破坏了对HTML 4和XHTML 1的向后兼容性。这是因为向后兼容应该意味着HTML 5的用户代理（user agent，浏览器）在呈现HTML 4的文档时应该和HTML 4的user agent保持一致。因此，如果HTML 5强调向后兼容，HTML 4中意义不大的结构在HTML 5中也同样没有多少意义。</p>
<h5>不会吧？仍然支持font元素？</h5>
<p>&nbsp;&nbsp;&nbsp; 是的，如果开发者使用WYSIWYG编辑器的话， X/HTML 5依然支持font元素。这样做有什么合理性吗？难道WYSIWYG编辑器就能避免使用font吗？</p>
<h5>WYSIWYG签名</h5>
<p>使用WYSIWYG编辑器生成的文档必须在head元素中包含下面的WYSIWYG签名：&nbsp;</p>
<div class="codeText" style="width: 98%; height: 86px">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">meta</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;generator&quot;</span><span>&nbsp;</span><span class="attribute">content</span><span>=</span><span class="attribute-value">&quot;(WYSIWYG&nbsp;editor)&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span></span></li>
</ol>
</div>
<p>或者：&nbsp;</p>
<div class="codeText" style="width: 98%; height: 97px">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">meta</span><span>&nbsp;</span><span class="attribute">name</span><span>=</span><span class="attribute-value">&quot;generator&quot;</span><span>&nbsp;</span><span class="attribute">content</span><span>=</span><span class="attribute-value">&quot;Sample&nbsp;Editor&nbsp;1.0&nbsp;(WYSIWYG&nbsp;editor)&quot;</span><span>&nbsp;</span><span class="tag">/&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p><br />
&nbsp;&nbsp;&nbsp; 这样做的理由是什么呢？某种耻辱的标记？它是不是要告诉浏览器做好最坏的准备，因为这个文档是用WYSIWYG编辑器生成的？那么，如果文档中只有一部分是使用WYSIWYG工具完成的又该怎么做呢？</p>
<h5>支持预定义类名</h5>
<p>预定义类名是X/HTML 5用户代理中保留的具有语意的CSS类名。下面的例子中copyright就是一个预定义的类名：&nbsp;</p>
<div class="codeText" style="width: 98%; height: 92px">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">p</span><span>&nbsp;</span><span class="attribute">class</span><span>=&quot;copyright</span><span class="tag">&gt;</span><span>...</span><span class="tag">&lt;/</span><span class="tag-name">p</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p><br />
&nbsp;&nbsp;&nbsp; 其它的预定义类名还有&ldquo;error&rdquo;、&ldquo;example&rdquo;、&ldquo;issue&rdquo;、&ldquo;note&rdquo;、&ldquo;search&rdquo;和&ldquo;warning&rdquo;。更麻烦的是，有些预定义类名只有在某些特定元素中使用而不能别其它元素中使用。例如，类名&ldquo;copyright&rdquo;只有在p和span元素中使用。类名&ldquo;error&rdquo;只有在p、section、span和strong中使用。<br />
&nbsp;&nbsp;&nbsp; 预定义类名的一个问题就是下面这样的写法没有什么意义：&nbsp;</p>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">p</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;important&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>而这样的写法才会有意义：&nbsp;</p>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">p</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;copyright&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>重写class属性变得很难去说明结构的具体含意。例如，下面的代码意味着什么呢：&nbsp;</p>
<div class="codeText">
<div class="codeHead">XML/HTML代码</div>
<ol class="dp-xml">
    <li class="alt"><span><span class="tag">&lt;</span><span class="tag-name">p</span><span>&nbsp;</span><span class="attribute">class</span><span>=</span><span class="attribute-value">&quot;important&nbsp;copyright&nbsp;issue&quot;</span><span class="tag">&gt;</span><span>&nbsp;&nbsp;</span></span></li>
</ol>
</div>
<p>&nbsp;&nbsp;&nbsp; 预定义类名还会限制开发者对类名使用的自由。同样，如果开发者现在使用了一个非预定义类名，但是之后某天这个类名变成预定义类，那又会首产生什么状况呢？这难道就改变了开发者之前内容的语意吗？<br />
&nbsp;</p>
<h5>HTML 5 v.s. XHTML 5</h5>
<p>&nbsp;&nbsp;&nbsp; 在试图最终解决HTML和XHTML的争论中，X/HTML 5规范使事情变得更难于理解。的确，X/HTML 5规范中确实说&ldquo;一般说来，开发者在Web中还能直接使用XML&rdquo;，即使W3C一直都在为XML未来在Web中的应用不断努力。</p>
<h5>开发过程过于匆忙</h5>
<p>&nbsp;&nbsp;&nbsp; X/HTML 5是为了应对W3C在HTML 4和XHTML 1更新换代中的拖沓。因此，这导致X/HTML 5的开发过程有点匆忙，感觉这个规范不知道突然从什么地方冒出来然后又快速地跟进。即使是直接参与到其中的开发者也感到规范的开发进程有点不切实际。</p>
<h4>下一代标记语言的竞争</h4>
<p>&nbsp;&nbsp;&nbsp; <a target="_blank" href="http://www.dudo.org/default.asp?tag=html5">X/HTML 5</a>和<a target="_blank" href="http://www.dudo.org/default.asp?tag=xhtml2">XHTML 2</a>都在为能够替代HTML 4和<a target="_blank" href="http://www.dudo.org/default.asp?tag=xhtml">XHTML 1</a>展开竞争。即时是在开发的前期，一些浏览器的供应商就已经声称他们对这两种规范的偏好。由于审议的紧迫性和封闭性，这使得Web标准组织出现了两极分化。随着两种规范的进展，更多的开发资源和市场资金将会投入到其中的某一个中，所有的这些因素都会引起一场&ldquo;标准的&rdquo;战争。<br />
&nbsp;&nbsp;&nbsp; 我们每一个人都是这个标准的制定者，因为Web属于每一个人，只有一场诚实、公开的争论才能保证最好的标准成为赢家。</p>
<p><strong>注：为阅读方便文章中把&ldquo;HTML 4.x/XHTML 1.x&rdquo;简写为&ldquo;HTML 4 and XHTML 1&rdquo;</strong></p>
<h5>深入阅读：</h5>
<ul>
    <li><a href="http://www.w3.org/TR/xhtml2/">XHTML 2 Specification</a></li>
    <li><a href="http://www.whatwg.org/specs/">X/HTML 5 Specification</a></li>
    <li><a href="http://xhtml.com/en/future/conversation-with-xhtml-2-team/">Conversation With XHTML 2 Team</a></li>
    <li><a href="http://xhtml.com/en/future/conversation-with-x-html-5-team/">Conversation With X/HTML 5 Team</a></li>
</ul>
<p>&nbsp;</p>]]></description>
		</item>
		
			<item>
			<link>http://www.dudo.org/default.asp?id=248</link>
			<title><![CDATA[X/HTML5 v.s. XHTML2（I）]]></title>
			<author>dudo@dudo.org(dudo)</author>
			<category><![CDATA[CSS与Javasript]]></category>
			<pubDate>Mon,16 Jun 2008 14:19:47 +0800</pubDate>
			<guid>http://www.dudo.org/default.asp?id=248</guid>	
		<description><![CDATA[<p>英文原文：<a href="http://xhtml.com/en/future/x-html-5-versus-xhtml-2/">http://xhtml.com/en/future/x-html-5-versus-xhtml-2/</a><br />
中文译文：<a href="http://www.dudo.org/article.asp?id=248">http://www.dudo.org/article.asp?id=248</a>&nbsp;</p>
<h4>背景</h4>
<p>&nbsp;&nbsp;&nbsp; 尽管到目前为止HTML4和<a target="_blank" href="http://www.dudo.org/default.asp?tag=xhtml">XHTML1</a>仍能够很好地满足我们的要求，但是它们仍然存在不足。为了满足用户丰富的基于Web应该程序的需要，达到更佳搜索结果、为所有使用不同设备的所有人群创建更加易用的Web程序，它们都需要升级换代。</p>
<p>&nbsp;&nbsp;&nbsp; 目前有两种规范在竞争成为HTML 4和XHTML 1的继承者。它们是<a target="_blank" href="http://www.w3.org/TR/xhtml2/">XHTML 2.0</a>和Web Application 1.0，后者就是我们通常所说的<a target="_blank" href="http://www.whatwg.org/specs/web-apps/current-work/">X/HTML 5.0</a>。这两种规范根据标记语言的未来发展采用了不同的手段并且产生了迥异的效果。</p>
<p>&nbsp;&nbsp;&nbsp; XHTML 2为构建日常工作和应用中的W3C技术通用语言向前迈出了坚实的大步。XHTML 2完全是基于XML之上的，而XML被多数人认为是可以充分发挥Web潜力的一种语言。XHTML 2侧重于应该如何去使用标签，而不是标签使用的现状。</p>
<p>&nbsp;&nbsp;&nbsp; X/HTML 5是HTML 4和XHTML 1的扩展。它是向前发展的一种渐进而不是如同XHTM 2那样大步地跳跃。由于HTML 4和XHTML 1存在种种局限，X/HTML 5旨在解决HTML 4和XHTML 1中的不足。X/HTML 5也可以看作是HTML或者是XML。因此与XHTML 2不同，X/HTML 5受到了当前技术形式（如浏览器技术等）和<a target="_blank" href="http://code.google.com/webstats/">目前标签的应用状况</a>影响。</p>
<p>&nbsp;&nbsp;&nbsp; X/HTML 5和XHTML 2目前都处于工作草稿阶段。它们都还在不断地改进，要成为推荐标准大约还要几年的时间。本文的评论是以2007年2月份的草稿为基础的。</p>
<h4>XHTML 2</h4>
<h5>XHTML 2&ldquo;酷&rdquo;在什么地方</h5>
<p><strong>导航列表<br />
</strong>导航列表是用来创建导航菜单的。导航列表使用nl元素来定义一个菜单，它必须包含一个用于指定列表名称的label元素。例如:</p>
<pre class="xhtml" name="code">
&nbsp;&nbsp; &lt;nl&gt;<br />&nbsp;&nbsp;&nbsp; &lt;label&gt;You are here:&lt;/label&gt;<br />&nbsp;&nbsp;&nbsp; &lt;li href=&quot;/&quot;&gt;Home&lt;/li&gt;<br />&nbsp;&nbsp;&nbsp; &lt;li href=&quot;/products/&quot;&gt;Products&lt;/li&gt;<br />&nbsp;&nbsp;&nbsp; &lt;li href=&quot;/products/widget/&quot;&gt;Widgit&lt;/li&gt;<br />&nbsp;&nbsp;&nbsp; &lt;li&gt;Features&lt;/li&gt;<br />&nbsp;&nbsp; &lt;/nl&gt;</pre>
<p>导航列表的确很酷！</p>
<p>&nbsp;<strong>定义列表得到加强</strong><br />
定义列表（dl元素）定义一个术语（dt元素）和一个术语的解释（dd元素）。一个术语可以有多个解释，同样多个术语也可以有同一个解释。XHTML 2使用di元素来分组术语和解释。这样一来，术语与解释间的关系就变得清晰了，页面元素变得更加具有可读性。例如</p>
<pre class="xhtml" name="code">
&nbsp;&nbsp; &lt;dl&gt;<br />&nbsp;&nbsp;&nbsp; &lt;di&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;dt&gt;center&lt;/dt&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;dt&gt;centre&lt;/dt&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;dd&gt;a building dedicated to a particular activity&lt;/dd&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;dd&gt;a point equidistant from its ends&lt;/dt&gt;<br />&nbsp;&nbsp;&nbsp; &lt;/di&gt;<br />&nbsp;&nbsp;&nbsp; &lt;di&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;dt&gt;key&lt;/dt&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;dd&gt;metal device used to open a lock&lt;/dd&gt;<br />&nbsp;&nbsp;&nbsp;&nbsp; &lt;dd&gt;pitch of the voice&lt;/dd&gt;<br />&nbsp;&nbsp; &lt;/di&gt;<br />&nbsp; &lt;/dl&gt;</pre>
<p>很酷！</p>
<p>&nbsp;<strong>每个元素都成以是超级链接</strong></p>
<p><a target="_blank" href="http://www.dudo.org/article.asp?id=247">为每一个元素增加一个href属性就可以所这个元素变为超级链接</a>。例如：</p>
<pre class="xhtml" name="code">
&lt;q href=&quot;http://en.wikipedia.org/wiki/Neil_Armstrong&quot;&gt;That's one small step for man, 
one giant leap for mankind&lt;/q&gt;</pre>
<p>这个功能实在是太棒了！</p>
<p>&nbsp;<strong>剔除了acronym元素</strong><br />
很多文章作者都会为应该如何去使用acronym元素而困惑。XHTML 2中将会使用abbr元素来表示所有类型的缩写，包括acronmy。酷！</p>
<p><strong>b, i, small, big, tt, font and basefont元素都会消失</strong></p>
<p>XHTML 2已经和这些元素说再见了，取而代之的是更加严格的格式。告别是font元素在过去经常会被误用，导致文章作者们不能使用正确的标签。</p>
<p>不止是有点酷！</p>
<p><strong>iframe消失<br />
</strong>iframe元素经常会引起用户辅助设备产生问题，如今它也要消失了。</p>
<p><strong>新的标题结构</strong></p>
<p>&nbsp;&nbsp;&nbsp; 在达到页面易用方面，内容的标题是最重要的组成部分。实际上，目前没有人能正解地使用标题，因为数字化的标题结构（h1到h6）对于大多数人来说很难直观地去区分，对于使用WYSIWYG（所见即所得）的设计者来说更加是不可能了。实质上，数字化的标题是使用直线结构（与其后面的内容是兄弟元素关系）来达到内容逻辑上的层次关系。因此，在下面的例子中，你必须去使内容上的这种层次关系可视化</p>
<pre class="xhtml" name="code">
&nbsp;&lt;h1&gt;...&lt;/h1&gt;<br />&nbsp;&lt;p&gt;...&lt;/p&gt;<br />&nbsp;&lt;h2&gt;...&lt;/h2&gt;<br />&nbsp;&lt;p&gt;...&lt;/p&gt;<br />&nbsp;&lt;h2&gt;...&lt;/h2&gt;<br />&nbsp;&lt;p&gt;...&lt;/p&gt;<br />&nbsp;&lt;h3&gt;...&lt;/h3&gt;<br />&nbsp;&lt;p&gt;...&lt;/p&gt;<br />&nbsp;&lt;h4&gt;...&lt;/h4&gt;<br />&nbsp;&lt;p&gt;...&lt;/p&gt;<br />&nbsp;&lt;h3&gt;...&lt;/h3&gt;<br />&nbsp;&lt;p&gt;...&lt;/p&gt;<br />&nbsp;&lt;h2&gt;...&lt;/h2&gt;<br />&nbsp;&lt;p&gt;...&lt;/p&gt;</pre>
<p>&nbsp;&nbsp;&nbsp; 相比而言，新的标题结构，配合分组元素section使用h元素，使得层次关系表达变得异常地容易实现</p>
<pre class="xhtml" name="code">
&lt;h&gt;...&lt;/h&gt;<br />&lt;p&gt;...&lt;/p&gt;<br />&lt;section&gt;<br />&lt;h&gt;...&lt;/h&gt;<br />&lt;p&gt;...&lt;/p&gt;<br />&lt;h&gt;...&lt;/h&gt;<br />&lt;p&gt;...&lt;/p&gt;<br />&lt;section&gt;<br />&lt;h&gt;...&lt;/h&gt;<br />&lt;p&gt;...&lt;/p&gt;<br />&lt;section&gt;<br />&lt;h&gt;...&lt;/h&gt;<br />&lt;p&gt;...&lt;/p&gt;<br />&lt;/section&gt;<br />&lt;h&gt;...&lt;/h&gt;<br />&lt;p&gt;...&lt;/p&gt;<br />&lt;/section&gt;<br />&lt;h&gt;...&lt;/h&gt;<br />&lt;p&gt;...&lt;/p&gt;<br />&lt;/section&gt;</pre>
<p>h元素很酷！</p>
<p>&nbsp;<strong>输出计算机代码功得到加强</strong><br />
blockcode元素代替pre和code元素来盛装计算机代码段。例如</p>
<pre class="xhtml" name="code">
&lt;blockcode&gt;<br />function get_random_name() {<br />$rand_name = &quot;&quot;;<br />for ($i = 1; $i &amp;lt;= 8; $i++) {<br />$rand_name .= chr(rand(97, 122));<br />}<br />return $rand_name;<br />}<br />&lt;/blockcode&gt;</pre>
<p><strong>hr被separator取代</strong><br />
&nbsp;&nbsp;&nbsp; hr元素的名字&mdash;&mdash;&ldquo;水平线&rdquo;&mdash;&mdash;常常为设计者和工具供应商带来麻烦。它的名字是水平线，但实际上它却被用来分隔文档的不同部分。使用separator可以解决这种误解。</p>
<p><strong>del和ins元素被edit属性取代</strong><br />
&nbsp;&nbsp;&nbsp; 在表达内容变化上，edit属性的确比del和ins元素更加适合。可以使用类似下面的方法使用它们：</p>
<pre class="xhtml" name="code">
&lt;p&gt;This is &lt;span edit=&quot;deleted&quot;&gt;cool&lt;/span&gt;&lt;span edit=&quot;inserted&quot;&gt;way cool&lt;/span&gt;!&lt;/p&gt;</pre>
<p><strong>可以为已有元素增加额外语意<br />
</strong>&nbsp;&nbsp;&nbsp; role属性可以为已有元素增加新的语意和元数据（meta），这有助于搜索引擎和辅助工具更好地理解web页面。下面的例子中演示了如何表示指定的导航列表应该解释为一组&ldquo;面包屑&rdquo;</p>
<pre class="xhtml" name="code">
&lt;nl role=&quot;breadcrumbs&quot;&gt;<br />&lt;label&gt;You are here:&lt;/label&gt;<br />&lt;li href=&quot;/&quot;&gt;Home&lt;/li&gt;<br />&lt;li href=&quot;/products/&quot;&gt;Products&lt;/li&gt;<br />&lt;li href=&quot;/products/widget/&quot;&gt;Widgit&lt;/li&gt;<br />&lt;li&gt;Features&lt;/li&gt;<br />&lt;/nl&gt;</pre>
<p>&nbsp;&nbsp;&nbsp; 使用role属性的技术术语叫作&ldquo;<a target="_blank" href="http://www.w3.org/TR/xhtml-rdfa-primer/">XHTML中的RDF嵌入</a>&rdquo;。这使得XHTML 2非常具有扩展性，这可能会成为使Web发挥其全部潜能的唯一最重要工具。&nbsp;</p>
<h5>XHTML 2的美中不足</h5>
<p><strong>元素使用仍然需环绕内容</strong><br />
由于每个元素都可以使用href属性，因此实际上a元素的存在已经没有意义。继续保留它只会增加开发者的困扰。例如在HTML 4和XHTML 1中id属性可以用作任意元素的锚点。如：</p>
<pre class="xhtml" name="code">
&lt;h2 id=&quot;introduction&quot;&gt;Introduction&lt;/h2&gt;</pre>
<p>但是很多开发者还在使用a元素作为锚点。例如：</p>
<pre class="xhtml" name="code">
&lt;h2&gt;&lt;a name=&quot;introduction&quot;&gt;Introduction&lt;/a&gt;&lt;/h2&gt;</pre>
<p>继续保留a元素实在有点不够酷！&nbsp;</p>
<p>&nbsp;</p>
<p><strong>img元素仍然需要环绕使用</strong><br />
&nbsp;&nbsp;&nbsp; 在XHTML 2中，object元素可以做img元素能做的任何事情。根据规范，之所以保留img元素是为了保证向XHTML 2顺利过渡，但是这样做的确会给开发者造成困扰。而且保留下来的img元素也不再是一个空元素，它必须包含可替换文本。例如：</p>
<pre class="xhtml" name="code">
&lt;img src=&quot;W3C.png&quot;&gt;W3C&lt;/img&gt;</pre>
<p>&nbsp;&nbsp;&nbsp; 如果XHTML 2中的元素与HTML 4或者XHTML 1中元素有相同的名称，但是行为却不同，这肯定会引起争论与使用上的混乱。&nbsp;</p>
<p><strong>仍然支持数字化的标题</strong><br />
由于使用h元素更加容易创新标题，数字化的标题已经不再需要。同时支持h元素和数字化标题只会增加麻烦。</p>
<p><strong>XHTML 2开发小组的封闭性</strong><br />
一个开发可能成为下一代标记语言的开发小组对于公众却很少公布信息。同志们，这不是研究秘密武器的&ldquo;<a target="_blank" href="http://en.wikipedia.org/wiki/Skunk_works">skunk工程</a>&rdquo;。让它们见见光吧！</p>
<p>下面我们将看看<a target="_blank" href="http://www.dudo.org/article.asp?id=249">X/HTML 5的进展状况</a>。</p>
<p>英文原文：<a href="http://xhtml.com/en/future/x-html-5-versus-xhtml-2/">http://xhtml.com/en/future/x-html-5-versus-xhtml-2/</a><br />
中文译文：<a href="http://www.dudo.org/article.asp?id=248">http://www.dudo.org/article.asp?id=248</a>&nbsp;</p>]]></description>
		</item>
		
</channel>
</rss>