在本人看来,HTML 5是一个妥协方案,虽不激进,但更能推动技术的继续进步。没有命名空间,元素也不要求闭合(当然这并不是优点),浏览器也可以宽大处理一些错误。一切沿袭上个世纪HTML 4的做法。对于HTML的渲染,浏览器一直停留在1999年的水平。为此,HTML 5是一个实用主义方案,这样不仅可以继续处理这么多年来散落在世界各个角落的HTML,也可以让浏览器厂商更容易添加新特性。这就叫degrade gracefully(优雅降级)。让我们来看看HTML 5增加的一些新元素。
结构元素
这真是大快人心。目前,我们定义结构只能通过一个“万能”的div, 试图通过设置它的特性id的值如header, footer, sidebar等来分别表达头部,底部或者侧栏等。有了它们,代码编写者不再需要为id的命名费尽心思,对于手机、阅读器等设备更有语义的好处。HTML 5增加了新的结构元素来表达这些最常用的结构:
section: 这可以表达书本的一部分或一章,或者一章内的一节header: 页面主体上的头部。并非head元素footer: 页面的底部(页脚),可以是一封邮件签名的所在nav: 到其他页面的链接集合article: 诸如blog, 杂志,纲要等之中的一条独立记录。
举个例子,一个blog的首页,用HTML 5写的话,可以是这样(有省略):
<<!DOCTYPE HTML>
<HTML>
<head>
<title>realazy</title>
</head>
<body>
<header>
<h1>realazy</h1>
</header>
<section>
<article>
<h2><a href="http://realazy.org/blog">标题</a></h2>
<p>内容在此...(省略n字)</p>
</article>
<article>
<h2><a href="http://realazy.org/blog">标题2</a></h2>
<p>内容2在此...(省略n字)</p>
</article>
...
</section>
<footer>
<nav>
<ul>
<li><a href="http://realazy/blog">导航1</a></li>
<li><a href="http://realazy/blog">导航2</a></li>
...
</ul>
</nav>
<p>© 2007 realazy</p>
</footer>
</body>
</HTML>
块级block的语义元素
HTML还增加以下三个块级元素:
asidefigure/code>dialog
aside可以用以表达注记、贴士、侧栏、摘要、插入的引用等诸如作为补充主体的内容。比如这样表达blog的侧栏:
<aside>
<h3>最新文章</h3>
<ul>
<li><a href="http://realazy.org/blog/">文章标题</a></li>
...
</ul>
</aside>
figure元素表示一个有说明的块级图片。比如:
<figure>
<legend>这是图片的说明</legend>
<img alt="图片可替换文本" src="/path/to/img.png" />
</figure>
dialog元素用于表达人们之间的对话。在HTML 5中,dt用于表示说话者,而dd则用来表示说话者的内容。如:
<dialog>
<dt>佛</dt>
<dd>色即是空</dd>
<dt>悟空</dt>
<dd>我现在需要点空……
行内(inline)的语义元素
m元素用来标记一些不是那么需要着重强调的文本。现在尚有争议,可能最终会改为mark.
time元素如其名,用来表达时间。它需要一个datetime的特性来标明机器能够认识的时间,如:
<time datetime="2008-08-08T20:08:08">2008年8月8日晚上8时8分8秒</tiem>
meter元素表达特定范围内的数值。可用于薪水、百分比、分数等。比如:
很遗憾地告诉你,我只有<meter>150cm</meter>
它还有6个特性来表达各方面的含义,比如:
<p>您的分数是:<meter value="88.7" min="0" max="100" low="65" high="96" optimum="100">B+</meter>.</p>
还有一个progress,也是义如其名,用以表达进度:
目标完成度:<progress value="40" max="100">40%</progress>
嵌入多媒体
新增video和audio元素。顾名思义,分别是用来插入视频和声音的。至于格式,交由浏览器实现,HTML再也不需要特别的代码去播放特定的格式。就像img一样,不管是png, jpg还是gif都可以显示。值得注意的是,它们可以包含内容。比如,可以把歌词放到某段歌曲中去:
<audio src="谁人伴你睡.mp3">
<p>泪枯干</p>
<p>难忍怎么委屈自已</p>
<p>曾经有一刻悲与喜</p>
...
</audio>
交互性
HTML 5同时也叫Web Applications 1.0, 因此也进一步发展交互能力。这些标签就是为提高页面的交互体验而生:
detailsdatagridmenucommand
details用来表示一段具体的内容,但是内容默认可能不显示,通过某种手段(如点击)与legend交互才显示出来。这跟现在各种通过JavaScript隐藏一段内容,在点击后才显示出来的做法有些类似。比如:
一句话记录生活中的点点滴滴,
<details>
<legend>更多</legend>
<p>交流与分享,拉近你和朋友,支持 MSN/GTalk/QQ、短信、手机 WAP</p>
</details>
它可以有一个open的特性,用来显示细节与否。
datagrid用来控制数据,可以由用户或者脚本来更新。
menuHTML 2就存在了,不过HTML 4把它废弃了。HTML 5废物利用,并在期内加上command元素。
August 10th, 2007
by awflasher
非常感谢realazy带来如此精彩的文章:)
August 10th, 2007
by iCream
你是如何评比那些垃圾广告回复的啊?
August 10th, 2007
by Cloudream
都是“语义”元素……对排版帮助不大……不过不要求闭合实在有点废,让JAVASCRIPT怎么处理啊……
不知道对SEO会有什么影响……如果能在识别原创上有点突破,和语义元素配合应该可以很大程度提升搜索结果质量……
August 11th, 2007
by realazy
The Author
@Cloudream 别忘了,排版不应该是HTML的事,这让CSS来做的话更好。
August 11th, 2007
by yanglei
很好的介绍,精彩。 最后的参考链接失效了.
August 11th, 2007
by citywill
感觉html5倾向于xml的一个子集
August 11th, 2007
by om19
可是俺担心的是,这些浏览器们是不是又要用自己的一套门派来渲染这些元素。。。。
恐怖啊~~
August 11th, 2007
by robert
结构标签header、footer之类的,如果没有一些结构特性的话,似乎有些鸡肋。。除了对于语义化有点作用而外,到底能体现什么优势呢?
August 12th, 2007
by 怿飞
很不错,无论HTML5还是XHTML2都更注重丰富语义标签,可以让结构更易懂,更好的引用、再利用,达到资源的最大化。
August 13th, 2007
by GOVO
om19
可是俺担心的是,这些浏览器们是不是又要用自己的一套门派来渲染这些元素。。。。
恐怖啊~~
同虑。
August 13th, 2007
by qinyf
感谢精彩的介绍~ 除了不闭合这个实在ft,其他的还好。
August 13th, 2007
by TerranC
在这些标记里面我最关心的就是video和audio元素…
期待在各浏览器中的支持…当然javascript也最好能对这些元素提供一些方法能简单控制它们…
August 14th, 2007
by bluepig
感觉html5的特性,确实很好,不过标签不闭合的话,从结构会不会有什么影响。比如javascript调用的时候。
August 18th, 2007
by hax
不闭合并不会对js造成问题,因为dom还是那个dom,你不会直接与标签打交道。html5明确了标签的解析规则,这是一个好事情。
关于degrade gracefully,这虽然是html5的设计准则之一,但是不是那么容易的事情。针对html5写的网页在老浏览器(特别是IE6)上的表现,如果不用script和style辅助很难说能达到实际可接受的程度。
August 18th, 2007
by hax
特别是No Version Syntax versus Explicit Versioning,本身被列入有争议的设计原则http://www.w3.org/html/wg/html5/principles/。我记得看到MS的人在mail中明确希望有version syntax。而站在另一个立场的人认为version marker will only encourage breaking compatibility。
August 18th, 2007
by hax
啊,说我的留言可能是垃圾留言?这个算法不知道怎么搞的呀。难道英文多一点,就被认为是垃圾?
August 22nd, 2007
by chenhui
不是很听的懂,大家都太专业了,我是个新手!
August 28th, 2007
by fdcn
不是很喜欢沿用目前的标题元素。我更喜欢XHTML2的
也就是说,不要什么h1 h2 h3,让它们根据所有在section的层次来决定标题的层次。
August 28th, 2007
by 稻草
html来了 XHTML2去向何处?
August 28th, 2007
by 稻草
我指的是HTML5.
XHTML也要胎死腹中?
September 11th, 2007
by Hyde
你好,无意中闯进你的BLOG,很喜欢这个风格,里面的东西也很有质量
就是找起来不是很方便,请问能不能将分类也索引出来呢?这样读者来了 也可以有个方向,否则一页一页的翻下去实在是累
呵呵 只是个小建议,,,
不知道,在哪给你留言 只好写在这里了。希望能看到。
PS: 这是微软雅黑吧?字大了很好看!!
November 28th, 2007
by 王兆平
感觉真的不错,要是有个分类导航就更好了!!!
December 13th, 2007
by 纯真
目前的浏览器厂商是否有增加这些元素?
December 14th, 2007
by nobody
@Cloudream 别忘了,排版不应该是HTML的事,这让CSS来做的话更好。
哪什么是html的事?
December 30th, 2007
by xddxz
长见识了。哎,得好好努力。