realazy


HTML 5新增的元素

在本人看来,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还增加以下三个块级元素:

  • aside
  • figure/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>

嵌入多媒体

新增videoaudio元素。顾名思义,分别是用来插入视频和声音的。至于格式,交由浏览器实现,HTML再也不需要特别的代码去播放特定的格式。就像img一样,不管是png, jpg还是gif都可以显示。值得注意的是,它们可以包含内容。比如,可以把歌词放到某段歌曲中去:

<audio src="谁人伴你睡.mp3">
  <p>泪枯干</p>
  <p>难忍怎么委屈自已</p>
  <p>曾经有一刻悲与喜</p>
  ...
</audio>

交互性

HTML 5同时也叫Web Applications 1.0, 因此也进一步发展交互能力。这些标签就是为提高页面的交互体验而生:

  • details
  • datagrid
  • menu
  • command

details用来表示一段具体的内容,但是内容默认可能不显示,通过某种手段(如点击)与legend交互才显示出来。这跟现在各种通过JavaScript隐藏一段内容,在点击后才显示出来的做法有些类似。比如:

一句话记录生活中的点点滴滴,
<details>
  <legend>更多</legend>
  <p>交流与分享,拉近你和朋友,支持 MSN/GTalk/QQ、短信、手机 WAP</p>
</details>

它可以有一个open的特性,用来显示细节与否。

datagrid用来控制数据,可以由用户或者脚本来更新。

menuHTML 2就存在了,不过HTML 4把它废弃了。HTML 5废物利用,并在期内加上command元素。

参考:New elements in HTML 5

25 Responses to “HTML 5新增的元素”

  1. awflasher Says:

    非常感谢realazy带来如此精彩的文章:)

  2. iCream Says:

    你是如何评比那些垃圾广告回复的啊?

  3. Cloudream Says:

    都是“语义”元素……对排版帮助不大……不过不要求闭合实在有点废,让JAVASCRIPT怎么处理啊……

    不知道对SEO会有什么影响……如果能在识别原创上有点突破,和语义元素配合应该可以很大程度提升搜索结果质量……

  4. realazy Says:

    @Cloudream 别忘了,排版不应该是HTML的事,这让CSS来做的话更好。

  5. yanglei Says:

    很好的介绍,精彩。 最后的参考链接失效了.

  6. citywill Says:

    感觉html5倾向于xml的一个子集

  7. om19 Says:

    可是俺担心的是,这些浏览器们是不是又要用自己的一套门派来渲染这些元素。。。。
    恐怖啊~~

  8. robert Says:

    结构标签header、footer之类的,如果没有一些结构特性的话,似乎有些鸡肋。。除了对于语义化有点作用而外,到底能体现什么优势呢?

  9. 怿飞 Says:

    很不错,无论HTML5还是XHTML2都更注重丰富语义标签,可以让结构更易懂,更好的引用、再利用,达到资源的最大化。

  10. GOVO Says:

    om19

    可是俺担心的是,这些浏览器们是不是又要用自己的一套门派来渲染这些元素。。。。
    恐怖啊~~

    同虑。

  11. qinyf Says:

    感谢精彩的介绍~ 除了不闭合这个实在ft,其他的还好。

  12. TerranC Says:

    在这些标记里面我最关心的就是video和audio元素…
    期待在各浏览器中的支持…当然javascript也最好能对这些元素提供一些方法能简单控制它们…

  13. bluepig Says:

    感觉html5的特性,确实很好,不过标签不闭合的话,从结构会不会有什么影响。比如javascript调用的时候。

  14. hax Says:

    不闭合并不会对js造成问题,因为dom还是那个dom,你不会直接与标签打交道。html5明确了标签的解析规则,这是一个好事情。
    关于degrade gracefully,这虽然是html5的设计准则之一,但是不是那么容易的事情。针对html5写的网页在老浏览器(特别是IE6)上的表现,如果不用script和style辅助很难说能达到实际可接受的程度。

  15. hax Says:

    特别是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。

  16. hax Says:

    啊,说我的留言可能是垃圾留言?这个算法不知道怎么搞的呀。难道英文多一点,就被认为是垃圾?

  17. chenhui Says:

    不是很听的懂,大家都太专业了,我是个新手!

  18. fdcn Says:

    不是很喜欢沿用目前的标题元素。我更喜欢XHTML2的

    也就是说,不要什么h1 h2 h3,让它们根据所有在section的层次来决定标题的层次。

  19. 稻草 Says:

    html来了 XHTML2去向何处?

  20. 稻草 Says:

    我指的是HTML5.
    XHTML也要胎死腹中?

  21. Hyde Says:

    你好,无意中闯进你的BLOG,很喜欢这个风格,里面的东西也很有质量
    就是找起来不是很方便,请问能不能将分类也索引出来呢?这样读者来了 也可以有个方向,否则一页一页的翻下去实在是累
    呵呵 只是个小建议,,,
    不知道,在哪给你留言 只好写在这里了。希望能看到。

    PS: 这是微软雅黑吧?字大了很好看!!

  22. 王兆平 Says:

    感觉真的不错,要是有个分类导航就更好了!!!

  23. 纯真 Says:

    目前的浏览器厂商是否有增加这些元素?

  24. nobody Says:

    @Cloudream 别忘了,排版不应该是HTML的事,这让CSS来做的话更好。

    哪什么是html的事?

  25. xddxz Says:

    长见识了。哎,得好好努力。

Leave a Reply


realazy (懒到死) is proudly powered by WordPress | Entries (RSS) and Comments (RSS)