我应该在对话框中使用 <h1> 吗?

The*_*bat 5 html accessibility dialog semantic-markup html-heading

HTML 标题标签的使用方式应保持语义结构(对于 SEO 和可访问性)。<h1>通常,这意味着当前页面标题为单个标题,并从那里嵌套较少的标题。

然而,对话框通常是动态创建的,这意味着它们的 html 添加在<body>. 在这些情况下,似乎任何对话框标题编号都应以 开头<h1>,因为它们的 html 位于任何现有标题结构之外。

举一个实际的例子:

  • 我们有一个带有“我的个人资料”<h1>标题的用户个人资料页面
  • 单击用户图标将打开一个对话框
  • 该对话框的标题为“上传您自己的照片”

该对话框是否应该使用<h1>标题,即使在语义上它属于现有的“我的个人资料” <h1>

Que*_*inC 3

使用 H1 作为对话框标题绝对是个好主意。

  1. 您必须遵守标题并遵守标题顺序,即不要直接从 H2 跳到 H4,但决不要在 WCAG 中规定必须只有一个 H1。如果页面结构有意义,那么拥有多个 H1 是完全有效的。专家们并不完全同意 H1 是否应该始终单独存在并始终作为页面标题;这是 WCAG 解释中常见的不一致之处。鉴于屏幕阅读器用户经常从一个标题导航到另一个标题,如果标题总体上有策略地放置在内容最重要部分的开头,而不是放置在无意义的位置,那肯定会更好。页面的开头本身通常并不那么重要,因为它不完全是主菜单的位置,也不是“您所在的位置”指示,也不是真正的当前/重要内容。
  2. 当对话框出现时,根据上面的第 1 点,它的标题和开头绝对是直接跳转到的重要内容,在对话框出现的那一刻以及只要它处于活动状态都是如此。
  3. 对话框通常是模态的,这意味着当对话框打开时,您不能与对话框外部的内容进行交互。在这种情况下,对话框之外的内容应该完全无法访问和不可见,包括屏幕阅读器用户(这通常是通过适当使用 aria-hidden 来完成的)。这意味着,只要对话框处于活动状态,如果其标题是 H1,则该 H1 是页面中唯一单独的一个(因为其他对话框在逻辑上是隐藏的)。所以,无论如何,无论您对多个 H1 的存在有何看法,您都尊重与 WCAG 以及您自己的合同。您只需小心,对话框内容仅在对话框有效打开时才可访问和可见,这是良好可访问性所必需的(我经常看到当前不活动对话框的内容仍然可读的应用程序;这很烦人和非常令人困惑)。

希望这三点能让您相信,将对话标题放入 H1 中,您将赢得一切,绝对不会失去任何东西。