4. 结构和表现
当讨论Web标准时,一些事情总是被提及,那就是结构和表现分离的重要性。刚开始的时候理解结构和表现的不同之处可能很困难,特别是如果你不习惯于思考文档的语义结构时。然而,理解这点是很重要的,因为,当结构和表现分离后,用CSS文档来控制表现就是很容易的一件事了。
结构是由文档中的主体部分,再加上语义化、结构化的标记。
表现是你赋予内容的一种样式。在大多数情况下,表现就是文档看起来的样子,但是它同样可以影响一个文档“听”起来的样子----毕竟不是每个人使用的都是图像化的浏览器。
尽可能的把结构和表现相分离。理论上讲,你应该用一个HTML文档来保存内容与结构,用一个CSS文档来控制整个文档的表现。
如今表现与结构的分离在网上还不是很普遍。大多数网站上的HTML代码既缺少语义也缺少结构。
用表格布局
为了使表现和结构相分离,你必须用CSS来代替表格去控制一个文档的表现。当你习惯于用表格来布局的时候,这将使你感觉很奇怪很不适应,但是,这并不像它看上去的那么困难。你可以在网上找到许多可用的帮助,它的好处太多了,所以它确实值得您去花时间去转变一下思想,这点很重要。
相关文章:
Why tables for layout is stupid
在Seybold 2003上的一个演讲幻灯演示。
语义化的HTML
分离结构与表现的另一个重要方面是使用语义化的标记来构造文档内容。一个XHTML元素的存在就意味被标记内容的那部分有相应的结构化的意义,没有理由使用其他的标记。换句话说,不要让CSS使一个HTML元素看起来就像另一个HTML元素,比如用<s pan>来代替<h1>标记标题。
通过使用语义化的HTML,你将会使文档中的不同部分对于任何浏览器都变得有意义,无论浏览器是现今PC上的最新的图象化浏览器,还是不支持CSS的老浏览器,或者还是Unix shell中的文本浏览器。
标题
为了给标题做标记, 要用<h1>、<h2>、 <h3>、<h4>、<h5>或者 <h6>,这完全取决于标题的等级。<h1>是最高的等级。
例如:
<h1>文档标题</h1><h2>次级标题</h2>
文档标题
次级标题
段落
用<p>来标记段落。不要使用 <br /> 来生成段落间的空行。用CSS来控制段落间的空隙(Margins),这个空隙可以确保段落标记的正确无误。
例如:
<p>浪奔浪流,万里滔滔江水永不休,淘尽了世间事,混作滔滔一片潮流,是喜是愁,浪里分不清欢笑悲忧,成功失败,浪里看不出有未有。爱你恨你问君知否,似大江一发不收,转千湾转千滩,也未平复此中争斗,又有喜又有愁,就算分不清欢笑悲忧,仍愿翻百千浪,在我心中起伏够。</p>
浪奔浪流,万里滔滔江水永不休,淘尽了世间事,混作滔滔一片潮流,是喜是愁,浪里分不清欢笑悲忧,成功失败,浪里看不出有未有。爱你恨你问君知否,似大江一发不收,转千湾转千滩,也未平复此中争斗,又有喜又有愁,就算分不清欢笑悲忧,仍愿翻百千浪,在我心中起伏够。
列表
一些事物的罗列应使用列表来显示。在XHTML中有三种列表的方法:无序、有序和自定义。
无序列表, 就是我们所熟知的圆圈列表, 以 <ul>开始,以</ul>结束。每一个列表项都包含在<li>之中。
有序列表,以<ol>开始,以 </ol>结束。
自定义列表有一些不同,可以用来标记一些列表项和描述,以<dl>开始,以 </dl>结束。每一个被描述的项目,要包含在<dt>中,而描述的内容要包含在<dd>中。
例如:
<ul> <li>项目一</li> <li>项目二</li> <li>项目三</li></ul>
项目一
项目二
项目三
<ol> <li>项目一</li> <li>项目二</li> <li>项目三</li></ol>
项目一
项目二
项目三
<dl> <dt>上海滩</dt> <dd>这部拍摄于1980年的《上海滩》堪称是香港电视史上最成功、最经典的剧集。 当年在香港播出以后,产生了巨大的轰动效应。</dd> <dt>周润发</dt> <dd>和所有伟大的影星一样,周润发印证了一个时代,一个香港电影的黄金时代。 风衣墨镜、冷血双枪、阳光微笑,都封存胶片之中,当我们回首寻望的时候,发哥已被刻为一个时代的坐标。</dd></dl>
上海滩
这部拍摄于1980年的《上海滩》堪称是香港电视史上最成功、最经典的剧集。 当年在香港播出以后,产生了巨大的轰动效应。
周润发
和所有伟大的影星一样,周润发印证了一个时代,一个香港电影的黄金时代。 风衣墨镜、冷血双枪、阳光微笑,都封存胶片之中,当我们回首寻望的时候,发哥已被刻为一个时代的坐标
CSS使你不想用传统列表来呈现内容成为可能。导航栏(一个链接的列表)就是一个很好的例子。使用列表作为菜单的好处是当一个浏览器不支持CSS时,这个菜单仍然起作用。
引用
用<q>来标记简短的单行引用。Web浏览器会自动识别在<q> 之间的内容。不幸的是,IE不能识别,并且有些时候, <q>会引起一些可访问性的问题。正因为如此,一些人建议尽量不要使用 <q>,手动的插入引用标记。在一个包含适当的类的 <span>中加入单行的引用内容,那么就可以用CSS来给引用设计样式了,但是这个没有语义上的意义。 您可以读读Mark Pilgrim写的The Q tag 关于处理<q>相关问题的看法。
对于那些一段或者好几段的长篇引用,就应当使用 <blockquote>了。CSS可以用来定义引用的样式。注意,一段文章是不可以直接放在 <blockquote>中的,引用的内容还必须包含在一个元素中,通常是<p>。
属性cite既可以与<q> 一起用,也可以与<blockquote>一起用,用来提供引用内容的来源地址。需要注意的是,如果你使用 <span>来代替 <q>标记引用内容,那么你就不能使用 cite属性了。
例如:
<p>我的座佑名<q cite="http://www.x5.com.cn/">别人的高标准,是我的基本要求。</q>.</p>
我的座佑名别人的高标准,是我的基本要求。.
<p>我的座佑名<span class="quote">“别人的高标准,是我的基本要求。”</span>.</p>
我的座佑名“别人的高标准,是我的基本要求。”.
<blockquote cite="http://www.w3cn.org/"> <p>“我们大部分人都有深刻体验,每当主流浏览器版本的升级,我们刚建立的网站就可能变得过时, 我们就需要升级或者重新建造一遍网站。例如1996-1999年典型的"浏览器大战", 为了兼容Netscape和IE,网站不得不为这两种浏览器写不同的代码。同样的, 每当新的网络技术和交互设备的出现,我们也需要制作一个新版本来支持这种新技术或新设备, 例如支持手机上网的WAP技术。类似的问题举不胜举:网站代码臃肿、繁杂浪费了我们大量的带宽; 针对某种浏览器的DHTML特效,屏蔽了部分潜在的客户;不易用的代码,残障人士无法浏览网站等等。 这是一种恶性循环,是一种巨大的浪费。”</p></blockquote>
“我们大部分人都有深刻体验,每当主流浏览器版本的升级,我们刚建立的网站就可能变得过时,我们就需要升级或者重新建造一遍网站。例如1996-1999年典型的"浏览器大战",为了兼容Netscape和IE,网站不得不为这两种浏览器写不同的代码。同样的,每当新的网络技术和交互设备的出现,我们也需要制作一个新版本来支持这种新技术或新设备,例如支持手机上网的WAP技术。类似的问题举不胜举:网站代码臃肿、繁杂浪费了我们大量的带宽;针对某种浏览器的DHTML特效,屏蔽了部分潜在的客户;不易用的代码,残障人士无法浏览网站等等。这是一种恶性循环,是一种巨大的浪费。 ”
强调
<em> 是用作强调的,<strong>是用作重点强调的。 大部分浏览器用斜体显示强调的内容,用粗体来显示重点强调的内容,然而,这是没有必要的,如果是为了确定强调内容的显示方式,最好的方法就是使用CSS来定义他们的表现。当你想要的只是视觉上的效果时,就不要使用强调了。
例如:
<p><em>强调</em> 的文本通常用斜体显示,然而, <strong>特别强调</strong> 的文本通常以粗体显示。</p>
强调 的文本通常用斜体显示, 然而, 特别强调的文本通常以粗体显示。
表格
XHTML中的表格不应用来布局。然而如果是为了标记列表的数据,就应该使用表格了。为了使数据表格有更强的访问性,了解和使用各种构造表格的组件就很重要了。比如表格标题 (<th>)、摘要(summary 属性)和首部说明 ( <caption>标签).
例如:
<table class="举例" summary="1999年到2003年,列表显示中国的平均人口增长率。"> <caption>中国的年均人口的增长, 1999-2003</caption> <thead> <tr> <td> </td> <th scope="col">1999</th> <th scope="col">2000</th> <th scope="col">2001</th> <th scope="col">2002</th> <th scope="col">2003</th> </tr> </thead> <tbody> <tr> <th>人口</th> <td scope="row">8 861 426</td> <td scope="row">8 882 792</td> <td scope="row">8 909 128</td> <td scope="row">8 940 788</td> <td scope="row">8 975 670</td> </tr> <tr> <th>增长</th> <td scope="row">7 104</td> <td scope="row">21 366</td> <td scope="row">26 368</td> <td scope="row">31 884</td> <td scope="row">34 882</td> </tr> </tbody></table>
中国的年均人口的增长, 1999-2003 1999 2000 2001 2002 2003
人口 8 861 426 8 882 792 8 909 128 8 940 788 8 975 670
增长 7 104 21 366 26 368 31 884 34 882
想了解更多的关于表格及其使用的细节, 请参阅Tables in HTML documents 和 HTML Techniques for Web Content Accessibility Guidelines 1.0.
相关文章:
SimpleQuiz
一个很好的资源,告诉您如何用语义化的方法来标记。