您应该阅读HTML5 规范的“标题和部分”部分。获得正确的标题是可访问性的一个重要方面。
使用标题(和部分),您可以告诉各种用户代理您的页面是如何构建的,哪些内容属于一起,哪些内容彼此分开。
想想一个有 3 列的典型网站。第一列是网站导航,第二列是主要内容,第三列是次要内容。现在,由于不同的背景颜色、边距、边框等等,能够看到的人可能会立即掌握页面上的三个“区域”。但是视障或盲人无法从页面的图形设计中获得线索。机器(如搜索引擎)也不是。因此我们使用标题/分段元素,因此他们可以从标记中获取信息(页面的结构)。
每个 HTML5 文档都有一个大纲,它是通过使用标题h1
- h6
(和hgroup
)和/或分段元素(、、、、section
)article
创建nav
的aside
。您可以将其视为某种TOC。
虽然能够看到的人通过查看图形设计来初步了解页面结构,但使用屏幕阅读器和机器的人通过阅读页面大纲来了解页面结构,例如:
(1.) John Doe's Example Blog
(1.1) Navigation
(1.2) My first year at ACME
(1.3) Recent blog posts
这可能是以下示例文档的大纲:
仅使用标题:
<body>
<h1>John Doe's Example Blog</h1>
<h2>Navigation</h2>
<h2>My first year at ACME</h2>
<h2>Recent blog posts</h2>
</body>
根据计算的大纲使用具有级别的分段元素和标题:
<body>
<h1>John Doe's Example Blog</h1>
<nav>
<h2>Navigation</h2>
</nav>
<article>
<h2>My first year at ACME</h2>
</article>
<aside>
<h2>Recent blog posts</h2>
</aside>
</body>
h1
随处使用切片元素:
<body>
<h1>John Doe's Example Blog</h1>
<nav>
<h1>Navigation</h1>
</nav>
<article>
<h1>My first year at ACME</h1>
</article>
<aside>
<h1>Recent blog posts</h1>
</aside>
</body>
(后两者在语义上是等价的!)
使用分段元素时,您甚至可以完全省略标题,大纲仍然是相同的,尽管“未命名”(这不是很有帮助!):
<body>
<nav></nav>
<article></article>
<aside></aside>
</body>
这将是相应的大纲:
(1) (Untitled Section)
(1.1) (Untitled Section)
(1.2) (Untitled Section)
(1.3) (Untitled Section)
您可以使用此在线大纲来查看哪些文档创建了哪些大纲。
那么,我们应该跳过它们吗?
为什么你首先要跳过关卡?它可能永远不会好,所以不,你不应该跳过关卡。但如果发生这种情况,我不会认为这是一个严重的错误。
但是请注意,根据您跳过的准确程度,特别是如果您没有跳过该级别的所有标题,则可能会创建错误的大纲。例如,参见这个简单的文档:
<body>
<h1>Interesting stories</h1> <!-- this is the site heading -->
<h2>My first snow</h2> <!-- this is a story -->
<h3>What I thought snow would be like</h3> <!-- this is a subsection of that story -->
<h3>How I experienced it actually</h3> <!-- also subsection -->
<h3>Why I'm disappointed by snow</h3> <!-- also subsection -->
<h2>More stories about snow</h2> <!-- this is not part of the story, but a kind of "See also" for the site/page -->
</body>
现在,如果您将最后一个更改h2
为h3
,突然间这个“更多故事”部分将成为故事的一个子部分。如果您将其更改为h4
,它将成为一个小节。
设计侧边栏时 - 应该使用哪些标题?H2
? 设计页脚时 - 应该使用哪些标题?H2
?
这些问题一般都无法回答。这取决于您的网站、页面和内容。但是,是的,在许多情况下,“典型页面”h2
将是正确的候选人。页面标题(不要与主要内容标题混淆!)是h1
,主要内容是h2
,次要内容(侧边栏等)是h2
。如果您的页脚需要一个标题(不是每个都需要),那么h2
在这种情况下也是如此。
标题是用于列表(如页脚中的帖子列表)吗?
这实际上取决于内容和上下文。
您必须提出的重要问题(通常,对于所有航向决定):
- 此内容是否“属于”上一个标题?
- 如是:
- 它是某种子部分吗?→ 分别使用更高一级的标题。使用一个
section
元素(以及它内部的可选标题)
- 此内容是否没有自然的“副标题”?→ 不要在这里使用标题
- 如果否:分别使用低一级的标题。使用不是相关切片元素的子元素的切片元素
- (您必须重复此步骤,直到您的标题/部分是它所属标题的子标题)
应该H1
在一个页面上只使用一次?
没有。正如我所解释的,您可以使用页面上h1
的所有标题(如果您使用分段元素!)。
在设计“帖子列表页面”时——每个条目通常由 TITLE 和 EXCEPT 组成——我们应该使用H1
标题吗?或者H2
或者DIV
?
您可能应该article
为每个条目使用一个元素。所以你会自动得到一个标题(=大纲中的一个条目),可以这么说,就像article
一个切片元素一样。现在,您可以使用h1
它(无论article
放置在哪里!),或者您可以使用计算的标题级别(如果article
是 的直接子级body
,您将使用h2
. 如果它更深一层,h3
. 等等.)。
使用分段元素和标题,以便创建有用的大纲。
如果您标记网页,请只查看创建的大纲一分钟:这有意义吗?您是否了解页面的结构,它有哪些部分?层次结构是否正确?此大纲中是否缺少页面的单独区域/部分?一个部分是它不属于的部分的子部分吗?(例如,您经常看到站点导航是页面主要内容的子项,当然这是不正确的:通常它们应该在同一级别,都是站点标题的子项)。