[h6 aria-level="7"] 是创建 [h7] 元素的可靠方法吗?

Is [h6 aria-level="7"] a reliable way to create a [h7] element?

通常,HTML 个标题在失效之前只能上升到 <h6> 个。据我所知,以下是在 HTML 中创建 <h7> 元素的完全有效方法:

<h6 aria-level="7">This is a heading level 7 element</h6>

我已经在 Chrome、Firefox 和 Internet Explorer 的 NVDA 中对此进行了测试,它按预期工作。

不过我真的无权访问任何其他屏幕 reader。可以访问大量屏幕 reader / 浏览器组合的人能否确认以上内容是否作为 <h7> 元素始终如一地传达给用户?

如果您知道屏幕 reader / 浏览器组合在这种情况下 肯定 不起作用,请让我知道。

Is [h6 aria-level=“7”] a reliable way to create a [h7] element?

没有

这违背了 second rule of ARIA:

Do not change native semantics, unless you really have to.

如果你想定义一个新的标题级别,你应该使用

<div role="heading" aria-level="7">

参见 WAI ARIA 示例:

This example demonstrates how to implement a level 7 heading using role="heading" and the aria-level attribute. Since HTML only supports headings through level 6, there is no native element to provide these semantics.

编辑: WCAG 规范中的另一个示例 ARIA12: Using role=heading to identify headings(感谢 @Daniel-tonon 指出这一点)

请注意,无论您使用 h6 还是 div(请参阅@QuentinC 回答)

,JAWS 对 6 以上的任何 aria-level 的支持都不好

虽然 <div role="heading" aria-level="7"> 似乎是定义 H7 元素的有效方式,但屏幕阅读器并不普遍将其视为 H1-H6。 我至少可以确认它不适用于 Jaws。有了大白鲨就更糟了,被当成了H2!

在 Firefox、chrome 和 IE11 上使用 Jaws 进行测试。 还测试了级别 8、9、10、11 和 12。指定 aria-level="X"X>6 总是将其转换为 H2。

所以,千万不要用这个技巧来制作一种H7元素。它没有得到普遍支持。

你最好再考虑一下你的页面结构。您真的需要 7 级标题吗? 人们常说一份好的文档不应该超过3层,对于很长或很重的技术文档可能是4层,5层除外。鉴于H1的特殊地位,让我们添加一个。所以,6级肯定绰绰有余了。

你是不是跳过了一些关卡? 跳过标题级别在语义上是不正确的,您不应该仅仅因为视觉外观而这样做。

事实上,the ARIA specification 从未明确声明允许指定高于 6 的级别。 aria-level 的默认值为 2。这解释了 Jaws 在遇到 aria-level 的无效值时的合法行为。