一服客

使用 HTML5 正确合理的重构你的网页

HTML5 是下一代 Web 开发标准,到现在的2012年, HTML5 规范编写完成了,虽然计划到2022年,浏览器将会完全支持整个 HTML5 ,但是现在经过浏览器厂商的努力,现代浏览器已经可以支持一部分 HTML5 的新功能。此外,在 QQ空间、百度等网站,都已经使用 HTML5 进行了重构。浏览器也在不断的升级,将会对 HTML5 有一个更好的支持。

我们为什么要使用 HTML5

HTML5 的语法更简单精炼,语义性更强,便于编写代码和理解别人编写的代码。搜索引擎也在不断的提升自己对 HTML5 页面的抓取、提取信息技术,语义性的增强,也便于搜索引擎的理解,对 SEO 也有一定的意义。

我们要如何使用 HTML5 重构网页

HTML5 中增加了大量的新标签。这些标签大体可以分为两类:1,功能性标签。2,语义性标签

功能性标签:就是类似canvas、video 等标签,它是 HTML5 新创造出来的,用于实现一些新功能用的。这类新增标签,用于某些新功能的,这些新功能往往需要浏览器配合实现,所以在早期的浏览器中,功能不会得到支持。

语义性标签:就是类似 header、footer、nav 等等标签。它们类似 div,没有什么新增的功能,但是语义性增强了。例如,使用 header 括起来的内容,就会被认为是头部相关,页面中使用 nav 括起来的有序列表(ol)或者无序列表(ul),就会被认为是这个网站(或者网页)的导航。这类标签同样是新增的,在早期浏览器中不会被支持,但是这与功能性的标签不同,由于它的本质和 div 类似,所以可以通过一段 JavaScript 代码来进行 hack 从而让早期浏览器支持。这点我们将会在文章后面介绍到。

我们要重构 HTML5 页面,就是使用 HTML5 的新标签和相关的新用法,针对原来的用法进行相应的替换。而本文的内容,就是介绍重构网页比较常用的 HTML5 语义性标签的用法,以及如何合理正确的使用这些标签来替换之前网页的相应标签。这里,我以一个博客网站作为案例。

本文要用的 HTML5 标签

更简洁的 DOCTYPE 文档声明

在 XHTML 或者 HTML4 中,有多少人能记住并手写出来最顶端的 DOCTYPE 声明?那么长,那么复杂的 DOCTYPE 声明,只能靠复制。而在 HTML5 中,DOCTYPE 只有四个字母 “html”。

XHTML:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

HTML5 :


<!DOCTYPE html> 

更简洁的文档编码声明

同样的,在 XHTML 和 HTML4 中,要声明文档编码需要使用 meta 标签,写很多东西。在 HTML5 中,meta 标签直接添加了一个 charset 属性,用来描述文档编码。

XHTML:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

HTML5 :


<meta charset="UTF-8" /> 

从这两个,或许你就已经感受到了 HTML5 的魅力, HTML5 写起来非常简洁高效,让人爱不释手。

网页相关资源的引入

使用 link 标签引入 CSS ,使用 script 标签引入 JavaScript。这些和以前一样没有变化。

网站的头部区域

网站的头部区域,通常放置网站的标题、副标题、头部广告、网站介绍、网站导航等等。在之前的 XHTML 或者 HTML4 中,通常写一个 id=“header” 的 div 来实现。但是由于使用频率太高,于是 HTML5 中,新增了一个 header 标签,用于表示头部区域。

XHTML:


<div id="header" ></div>

HTML5:


<header></header>

网站的标题和描述

正确的并且有 SEO 功效的网站标题区域(LOGO)写法应该是这样的:

使用 h1 来标记网站的标题,使用 h2 来标记网站的副标题、描述等。

如果网站使用图片作为 LOGO ,也要使用这种方法,但是为了版面,需要使用文本隐藏技术,将这些文字隐藏。之后,再使用 img 标签引入 LOGO 图片,然后添加 img 的 alt 属性为网站名称,并且为图像添加一个链接,链接到网站首页。

在 HTML5 中,新增了一个 hgroup 标签,用于对标题以及子标题进行分组。我们可以使用 hgroup 元素包裹网站标题(h1)和网站副标题(h2)。

XHTML:


<h1>我爱水煮鱼</h1>
<h2>人人都爱 WordPress</h2>

HTML5:


<hgroup>
  <h1>我爱水煮鱼</h1>
  <h2>人人都爱 WordPress</h2>
</hgroup>

使用 article 表示文字的一个摘要

HTML5 新增 article 标签,来表示文档、页面或者独立的、完整的、可以独自被外部引用的内容。例如博客里面的一篇文章、一个文章摘要、一篇论坛帖子等等独立的内容。

所以,对于博客来说,我们要使用 article 来标记博客文章摘要列表。需要注意的是,article 元素通常要有自己的标题(通常为h1或h2),一般放在 header 标签里面。还应该有 aside (稍后说),来描述这篇文章摘要相关的信息(例如文章发布时间、文章作者、文章标签、分类目录等等)。当然还要有主体内容,尽可能的还要有 footer (稍后说),来表示底部相关信息。这些元素共同构成一个完整的 article 。

XHTML:


<div id="entry">
  <h1>使用 HTML5 正确合理的重构你的网页</h1>
  <div id="entry-meta">作者:潜行者m 时间:2012-9-27</div>
  <div id="entry-content"><p>这篇文章写了如何使用 HTML5 重构你的网页等等等等等等等等等</p></div>
</div>

HTML5 :


<article>
  <header>
    <h1>使用 HTML5 正确合理的重构你的网页</h1>
  </header>
  <aside id="entry-meta">作者:潜行者m 时间:<time datetime="2012-9-27">2012-9-27</time></aside>
  <div id="entry-content"><p>这篇文章写了如何使用 HTML5 重构你的网页等等等等等等等等等</P></div>
</article>

使用 aside 标签描述文章或网站的相关信息

在文字摘要的周围,我们通常要使用一些信息来描述这篇文字,例如作者是谁,文字写于什么时间,文字的相关标签或者分类目录是什么。这些属于文章的附属信息。我们可以使用 aside 标签来标记他们。标记之后,表示属于这个 article 的相关描述信息。此外,aside 也用于边栏功能。

XHTML:


<div id="sidebar">这里是边栏</div>

HTML5:


<aside>这里是边栏</aside>

使用 time 标签来标记文章发布时间

标记文字的发布时间,可以让机器、搜索引擎等理解这篇文章是什么时间发表的。之前的话,可能要以抓取时间为发布时间或者从文章中抓取类似“本文发表于XX”的文字进行分析。

XHTML:


<div id="meta">本文写于 2012-9-27</div>

HTML5:


<aside>本文写于 <time datetime="2012-9-27">2012-9-27</time></aside>
<aside>本文写于 <time datetime="2012-9-27" pubdate="pubdate">2012-9-27</time></aside>

这个 time 标签还有一个 pubdate 属性需要特别注意一下,在上面,我给出了两种写法,第二中多了一个 pubdate 属性。增加这个属性,主要是为了标记正确发布时间,防止出现以下情况。


<h1>关于9月28日停电公告</h1>
<aside>发布日期:<time datetime="2012-9-27" pubdate="pubdate">2012年9月27日</time></aside>

用 pubdate 规定正确的发布时间,但是需要注意,在 W3C 标准中,并没有 pubdate 这个属性,这个属性是由 mozilla 他们自己规定的。所以添加 pubdate 属性之后,无法通过 W3C 的 HTML5 验证。

使用 nav 标签标记网站导航

nav 标签通常用于以下场合:网站导航条、侧边栏导航条、页内导航、前页后页翻页等。但是,普遍认为的是,一个页面上最好只用一个 nav 标签,用它来标记最重要的导航条(一般就是网站的导航条)。这样,可以让搜索引擎等快速定位,避免误导。通常配合 ul 或 ol 列表标签一块使用。

XHTML:


<div id="nav">
  <ul>
    <li>首页</li>
    <li>推荐阅读</li>
    <li>优惠码</li>
  </ul>
</div>

HTML5:


<nav>
  <ul>
    <li>首页</li>
    <li>推荐阅读</li>
    <li>优惠码</li>
  </ul>
</nav>

使用 footer 标签标记网站底部

网站底部通常用来说明网站信息的版权、网站所有者、备案等等信息。

XHTML:


<div id="footer">© Copyright 2012 我爱水煮鱼 保留所有权利 </div>

HTML5:

<footer>© Copyright 2012 我爱水煮鱼 保留所有权利 </footer>

不要乱用 section 标签

section 的语义为“部分”,通常对网站或页面上的内容,进行分开。个人认为这是一个比较鸡肋的属性,本身它的功能和 div 标签类似,同时又和 article 标签的功能类似。本人之前在博客中写过一篇关于区分 section 和 article 元素的文章:article 元素与 section 元素区别详解。从那次写文章到现在的6个月的学习,我感觉 section 标签的用法越来越难以把握,所以如果你无法确定应该使用什么标签,请使用 div ,不要一味的乱用 section 。

HTML5 没有抛弃 div 标签

有人认为, HTML5 中新增的那么多语义性的标签,随便一个都比 div 更有语义性。那么我就不用 div 了,全部给成 HTML5 新增的标签。这是大错特错的。W3C 并没有规定 HTML5 废除了 div 标签。实际上 div 标签,仍然用于全局的布局。在你无法非常有把握使用什么 HTML5 标签的时候,请使用 div 标签!

HTML5 重构的一个比较好的例子

结构清晰合理的、使用 HTML5 重构过的网站有很多,这里只拿出几个比较好的比较典型的例子来分析。这里以“我爱水煮鱼” 博客作为例子(地址:http://blog.wpjam.com/)。你可以随时打开,然后右键“查看源代码”来观看详细的代码。此外,“潜行者m”博客也采用了比较规范的写法,也可以借鉴。

使用 HTML5 正确合理的重构你的网页

兼容早期的浏览器

早期的浏览器中,由于没有这些新增标签,所以无法解析网页中的样式。但是新增标签,实质上与 div 性质类似,所以就有人使用了一段 JavaScript 代码,创建与新增标签中名称相同的对象。这样,浏览器就可以将 CSS 和标签结合解析,看到实际效果。这段代码就是 HTML5 Shiv,更详细的使用说明,请看这里:使用 HTML5 Shiv 让 IE 支持 HTML5

由于 HTML5 比较新的技术,对此的介绍和教程还比较少,所以本文难免出现一些不准确的地方,请高手评论赐教!想学习 HTML5 的朋友,这里也推荐了一些学习书籍:HTML5 和 CSS3 书籍推荐

标签:

热门文章