58

在面向文章的页面(例如博客文章)中,<h1>元素(1 级标题)通常用于标记:

  • 博客标题(即页面顶部的通常较大的站点标题,而不是<title>元素),或者
  • 文章标题

什么是最好的选择,为什么?

对于可能想向全世界喊出他们的网站/博客名称的网站所有者来说,在网站标题周围使用 1 级标题似乎是有意义的。

从您尝试向用户传达的内容的角度来看,网站标题的相关性较低 - 文章内容是您尝试传达的内容,所有其他网站内容都是次要的。因此使用<h1>文章标题似乎最好。

我觉得<h1>元素应该关注文章标题,而不是网站标题或其他内容。无论如何,这似乎不是一个流行的约定。

例子:

  • Joel Spolsky用于<h1>文章标题,以及网站标题的锚点
  • Jeff Atwood根本不使用no<h1><h2>作为文章标题和锚点作为站点标题
  • 37 Signals 的 SVN用于<h1>网站标题和文章标题的锚点

这是跨三个站点的三种不同方法,您可能期望在这些站点中强烈考虑正确的语义标记。

我认为乔尔和杰夫紧随其后。我对 37Signals 人员的标记选择感到非常惊讶。

对我来说,这似乎是一个非常简单的决定:与文章的消费者最相关的是什么?文章标题。因此将文章标题包装在一个<h1>元素中。完毕。

我错了吗?我还缺少进一步的考虑吗?我对吗?如果是这样,为什么' <h1>for article title'方法不更常用?

<h1>是否像我所说的那样决定在哪里使用元素?或者是否还有一些主观考虑?

更新:感谢到目前为止的所有答案。我真的很感激使用<h1>文章标题而不是网站标题如何提高可用性和可访问性(或没有,视情况而定)。基于事实而非个人假设的答案将获得许多奖励积分!

4

8 回答 8

32

有一个关于这个主题的W3C 质量保证提示:

<h1>是文档第一级标题的 HTML 元素:

  • 如果文档基本上是独立的,例如日内瓦的景点和活动,则顶级标题可能与标题相同。

  • 如果它是集合的一部分,例如关于宠物的页面集合中关于狗的部分,那么顶级标题应该假设一定量的上下文;只要<h1>Dogs</h1> 标题在任何情况下都可以使用:Dogs - Your Guide to Pets。

于 2008-11-06T12:30:34.153 回答
13

作为屏幕阅读器用户,标题级别并不重要,只要它是一致的。不同的博客使用不同的约定,因此没有标准的方法可以使其更易于访问。确保标题与内容级别匹配比使用什么级别的标题更重要。例如,如果显示一系列带有评论的博客文章,所有博客文章都可以有第 2 级标题,而在评论开始时,您可以有第 3 级标题。有关易于导航标题的示例,请查找任何具有多个部分的 Wikipedia 文章和小节。我可以使用屏幕阅读器通过标题导航功能轻松跳过主要部分,以跳转到任何 2 级标题,如果我想移动到给定部分的子部分,我将导航到下一个标题。

于 2008-11-08T17:05:33.647 回答
12

在您博客的主页上,我将使用 H1 表示网站标题,使用 H2 表示在首页上发布的各个博客文章的标题。

但是,在输入特定文章时,我会使用 H1 作为文章标题,并使用锚点作为网站标题。

这是一个很好的语义设置,Google 在抓取您的网站时也会受到赞赏。

于 2008-11-06T12:29:48.803 回答
3

在 Wikipedia 上,h1-Tag 包含以 h2 开头的文档中的文章名称和标题。名称 Wikipedia 是 html-header 中标题标签的一部分。我也认为这是要走的路。所以对于博客,我会在你给出的例子中像 Joel Spolsky 一样。

而且我总是从最高级别开始,所以让 h1 在我看来是一个糟糕的选择。

于 2008-11-06T12:33:10.420 回答
2

HTML 页面的<head>一部分有一个名为 的元素<title>。顾名思义,这是针对网站标题的。

HTML 用于将页面构造成机器可解析的形式,而不是用于布局。如果它只是关于布局,您只能使用<div><span>具有不同类/ID 的块并将 CSS 应用于它们。代替

<h2>Sub Header</h2>

我可以使用

<div class="header2>Sub Header</div>

并且在某处有一些 CSS 代码会使它<div>看起来像 h2(字体大小、粗体字体等)。不同之处在于计算机无法知道 my<div>实际上是第一个示例中的二级标题(它怎么知道?我可能将其命名为不同于“header2”),但是在第一种情况下,它知道它是二级标题,因为它是一个<h2>元素,如果它想向用户显示页面标题的结构化列表,它可以这样做

  • 顶级标题
    • 子标题
      • 子子标题
    • 子标题
    • 子标题
  • 顶级标题
    • 子标题
      • 子子标题
      • 子子标题
    • 子标题

通过搜索 H1/H2/H3/... 元素并按上述方式构建它们。因此,如果计算机试图找出页面的标题,它会去哪里寻找呢?在一个名为的元素<title>中或在一个名为<h1>? 想一想,你就有了答案。

当然,您可能会说“但页面上看不到标题”。好吧,它通常在浏览器窗口的某处可见(窗口标题或至少选项卡标题)-但是,您可能希望它在页面上也可见-我可以理解。但是,这样做有什么意义呢?谁说你不能重复?但我想知道您是否应该为此使用 h1 元素。

<html>
<head>
<title>SOME TITLE</title>
</head>
:
<body>
<div id="title">SOME TITLE</div>
:
</body>
</html>

使用 CSS 以#title您喜欢的方式设置样式。如果你愿意,让它变得超级大、超级大胆,并有一个引人注目的颜色,没有什么可以反对它。自动页面解析器通常会在某种程度上忽略 div 和 span,因为它什么也没告诉他们(这些是用于为读者布局页面的元素,但他们对页面的结构只字不提。LAYOUT 不是 STRUCTURE,你只能申请为某些结构元素设置样式以生成布局,但不应与另一种混淆)。计算机仍然会知道页面的标题是什么,这要归功于 title 元素。

于 2008-11-06T12:34:39.327 回答
1

对于典型的网站,例如博客,h1应该包含网站标题。是的,在网站的每个页面上。

为什么?在一个网站中,它的所有网页都有不同的部分。我们以导航为例:

<ul id="site-navigation">
  <li><a href="/">Home</a></li>
  <li><a href="/about">About me</a></li>
  <li><a href="/contact">Contact</a></li>
</ul>

#site-navigation在网站的每个页面上都会重复。它代表站点导航,而不是页面导航。区别很重要!{页面导航可以是目录(如在维基百科文章中)或长文章的分页。}

如果您将文章标题用作h1,则站点导航将在此标题的范围内。

<body>
  <div>John’s blog</div> <!-- the site title -->
  <h1>My first blog post</h1> <!-- the article title -->
  <p>…&lt;/p>
  <h2>Navigation</h2>
  <ul id="site-navigation">…&lt;/ul> <!-- the site-wide navigation -->
</body>

所以这个标记传达了:导航(→ 由 开始h2)是文章的一部分(→ 由 开始h1)。但这不是真的,这个导航不是文章的导航。链接实际上是整个站点的一部分,站点由站点标题表示。

当文章也包含副标题时,问题变得更加清晰:

<body>
  <div>John’s blog</div> <!-- the site title -->
  <h1>My first blog post</h1> <!-- the article title -->
  <p>…&lt;/p>
  <h2>Why I’m blogging</h2>
  <p>…&lt;/p>
  <h2>Why you should read my blog</h2>
  <p>…&lt;/p>
  <h2>Navigation</h2>
  <ul id="site-navigation">…&lt;/ul> <!-- the site-wide navigation -->
</body>

如您所见,没有办法将文章子标题与导航区分开来。看起来这篇文章有三个子标题:“我为什么要写博客”、“你为什么要阅读我的博客”和“导航”。

因此,如果我们改为使用h1站点标题和h2文章标题,导航也可以在站点标题范围内,也可以使用h2

<body>
  <h1>John’s blog</h1> <!-- the site title -->
  <h2>My first blog post</h2> <!-- the article title -->
  <p>…&lt;/p>
  <h2>Navigation</h2>
  <ul id="site-navigation">…&lt;/ul> <!-- the site-wide navigation -->
</body>

现在这个标记传达了:有一个名为“John's blog”的站点(→ 由 开始h1),它包含一篇文章(→ 由第一个开始h2)和一个站点导航(→ 由第二个开始h2)。文章的小标题h3当然是现在。


使用h1文章标题的另一个问题是,通常在第一个标题之前有内容,例如包含网站标题和其他内容的网站标题。对于通过标题导航的用户,第一个内容将是“不可见的”。因此,给每个单独的块一个自己的标题是一个很好的做法。

HTML5 使用分段/大纲算法将其形式化。它解决了您在使用 HTML 4.01 时可能遇到的许多大纲问题,因为内容顺序现在(大部分)是免费的,而且如果您不想这样做,您不必“发明”实际标题,这要感谢section/ article/ nav/ aside。但在 HTML5 中,站点标题也应该是任何分段元素/根的子元素h1body但不是子元素。所有其他部分都在本网站标题的范围内。

于 2013-06-22T01:06:07.287 回答
1

文章页面中的 H1 - 网站标题或文章标题?

两个都。这篇文章内容丰富:HTML5 时代多个 H1 标签的真相

于 2016-01-25T05:48:15.837 回答
-4

应该只有一个,而且必须只有一个

h1
; 通常这是页面标题。然后它应该遵循 h2,h3 等。

所以你的页面可以看起来像这样(没有所有其他 html 标签)

h1
  h2
  h2
    h3
..ETC
于 2008-11-06T12:28:48.777 回答