3.7 创建页眉
如果页面中有一块包含一组介绍性或导航性内容的区域,应该用header
元素对其进行标记。
一个页面可以有任意数量的header
元素,它们的含义可以根据其上下文而有所不同。例如,处于页面顶端或接近这个位置的header
可能代表整个页面的页眉(有时称做页头),如图3.7.1所示。通常,页眉包括网站标志、主导航(如图3.7.2所示)和其他全站链接,甚至搜索框。这无疑是header
元素最常见的使用形式,不过不要误认为是唯一的形式。
- ...
- <body>
- <header>
- <nav>
- <ul>
- <li><a href="#gaudi">Barcelona's Architect</a></li>
- <li lang="es"><a href="#sagrada-familia">La Sagrada Família</a> </li>
- <li><a href="#park-guell">Park Guell</a></li>
- </ul>
- </nav>
- </header>
- </body>
- </html>
图3.7.1 这个header
代表整个页面的页眉。它包含一组代表整个页面主导航的链接(在nav
元素中)。出于提高可访问性的目的,可以将可选的role="banner"
应用到整页页眉。图3.7.3中显示了这样做的例子
图3.7.2 包含导航的页眉
header
也很适合对页面深处的一组介绍性或导航性内容进行标记。例如,一个区块的目录,如图3.7.3所示。
- <body>
- <header role="banner">
- ... [网站标识、导航等] ...
- </header>
- <article>
- <header>
- <h1>Frequently Asked Questions</h1>
- <nav>
- <ul>
- <li><a href="#answer1">What is your return policy?</a><li>
- <li><a href="#answer2">How do I find a location?</a><li>
- ...
- </ul>
- </nav>
- </header>
- <!-- header的链接指向这里 -->
- <article id="answer1">
- <h2>What is your return policy?</h2>
- <p> ... [答案] ... </p>
- </article>
- <article id="answer2">
- <h2>How do I find a location?</h2>
- <p> ... [答案] ... </p>
- </article>
- ...
- </article> <!--结束父元素article -->
- </body>
- </html>
图3.7.3 这个页面有两个header
,一个是整个页面的,另一个是Frequently Asked Questions父元素article
的。注意第一个并不包含任何h1
~h6
标题,而第二个则有。关于第一个header
中出现的可选的role属性,参见本节最后一条提示
header
元素是3.4节中提到的四个分块内容元素中的一个。这意味着在考虑文档大纲时,位于header
内的任何h1
~h6
标题都会被认为处于header
的范围中,而不是整个页面。因此,header
通常包含其自身的标题(h1
~h6
或hgroup
),但这并不是强制性的。例如,图3.7.3中有标题,但图3.7.1中就没有。
创建页眉的步骤
将光标放置在需要创建页眉的元素里。
输入
。 输入页眉内容,包括各种类型的内容,它们分别由各自的HTML元素(大多数将在本书余下部分讲到)进行标记。例如,
header
可以包含h1
~h6
标题、标志、导航、搜索框,等等。输入
。
提示 只在必要时使用
header
。大多数情况下,如果只有h1
~h6
或hgroup
,没有其他需要与之组合在一起的伴生内容,就没有必要用header
将它包起来。
提示
header
与h1
~h6
元素中的标题(参见3.3节)是不能互换的。它们都有各自的语义目的。
提示 不能在
header
里嵌套footer
元素或另一个header
,也不能在footer
或address
元素里嵌套header
。
提示
header
不一定要像示例那样包含一个nav
元素(如图3.7.1和图3.7.3所示),不过在大多数情况下,如果header
包含导航性链接,就可以用nav
。在图3.7.3中,nav
包住Frequently Asked Questions链接列表是恰当的,因为它是页面内的主要导航组(将在3.8节中讨论)。
提示 要了解
header
如何取代HTML5之前版本中div
元素的一个功能,参见3.13节。
提示 要了解如何在
header
中使用role="banner"
,参见3.14节。