我应该在 table 的内容 (ToC) 中使用 <h1> 还是 <ul>?

Should i use <h1> or <ul> in table of contents (ToC)?

我正在 html 中制作 table 个内容。我应该使用标题标签 <h1>-<h6> 还是嵌套的 <ul><li> 标签?

首先看起来像:

<h2>Home</h2>
<h2>Posts</h2>
<h3><a href="page1.html">Page 1</a></h3>
<h3><a href="page2.html">Page 2</a></h3>
<h3><a href="page3.html">Page 3</a></h3>

第二个看起来像:

<ul>
  <li>Home</li>
  <li>
    Posts
    <ul>
      <li><a href="page1.html">Page 1</a></li>
      <li><a href="page2.html">Page 2</a></li>
      <li><a href="page3.html">Page 3</a></li>
    </ul>
  </li>
</ul>

我看了一下常见的网站:维基百科之类的好像都用的是第二种,但是第一种好不好我没找到确切的答案。

非常感谢,

  • 考虑传统的 dead tree press(书籍、学术期刊论文等):
    • A Table-of-Contents 不包含标题。
      • 它包含对标题的引用
    • 章和节有自己的标题。
    • HTML 的语义元素旨在以相同的方式使用。
  • 所以您的目录应该是 <ol>(不是 <ul>,因为标题 编号和排序)。
    • 同时考虑将 list/tree 结构包含在 <nav>.
  • 因此,实际 标题使用 <h1><h2> 等元素,而不是对标题的引用(你应该使用 <a> 的地方:线索在名称中:anchor 元素)。

I had a look on the common websites: Wikipedia and so on seem to use the second choice, but I couldn't find any definitive answer on whether the first is bad or not.

W3C 在 WCAG 和 WAI 网站上拥有广泛的权威(甚至法律强制执行(例如根据美国的 ADA)文章和指南库:


  • Also consider the <h1> element:
    • 虽然 HTML 规范 确实 允许页面中有多个 <h1> 元素,但 intent 是每个 web-page 应该只有一个包含文档标题的 <h1> 元素。
    • 引用MDN:

      Using more than one <h1> is allowed by the HTML specification, but is not considered a best practice. Using only one <h1> is beneficial for screenreader users.

    • 因此,如果页面已经有 <h1>,那么 going-by 您的初始 thought-process 您将不得不 复制 <h1> 在目录中 - 它为您提供了两个 <h1> 元素,但是 HTML 打算让您只有一个 <h1> 元素。看到问题了吗?

此外,如果您搜索“table of contents”,您将找不到很多有效使用 HTML 的资源,看来 W3C/web-author 社区更喜欢术语“导航” menu”,即使对于(在 dead-tree-press 中)被称为 table-of-contents.

的文档结构

(我推测这可能是为了避免将 HTML <table> 与 table-of-contents 混淆)

w3docs.com 关于 h1...h6 标签的声明

Headline tags have SEO value as well. A search engine tries to find out two things about your page: what the page is about, and how good it is. One of the main things that search engines look at for determining a page content is the words inside heading tags.

因此我建议不要使用您已经演示过的 od <h2><h3> 标签,因为我发现用户不太可能使用 Page 1搜索引擎。