html - 在对话框中使用 <h1> 在语义上是否正确?

标签 html dialog accessibility wai-aria

我已经浏览了 The Incredible Accesible Dialog v3 的代码我注意到他们正在使用 <h1>标签

<div id="modal" aria-hidden="false" aria-labelledby="modalTitle" aria-describedby="modalDescription" role="dialog">
    <div id="modalDescription" class="screen-reader-offscreen">...</div>
    <h1 id="modalTitle">...</h1>
    <p>...</p>
    <form name="form1" onsubmit="return false;">...</form>
</div>

所以这让我开始思考,这实际上在语义上是正确的吗?我的意思是每个人都一直说应该只有 1 <h1>在一份文件中。

请注意,在先前版本的对话框中,他们为对话框提供了 role="document"这使得使用 <h1>好吧恕我直言

最佳答案

我知道你已经接受了一个答案,但这并不完全正确。

当然,您可以输入 <h1>在对话中,什么都不会着火。然而,这在技术上是不正确的。

标题级别应该代表它在页面结构中的位置。如果您的页面有一个 <h1> ,这是您最好的方法,那么对话框应该获得一个标题级别,该标题级别与其在页面结构(其内容)中的位置相对应。

该对话框很可能不适合其余内容的流程,因此它应该是页面 <h1> 的一个子集。 (因为它是关于页面的对话框),使对话框带<h2> .

如果您使用选项卡式界面,并且您已将每个选项卡构建为 <h2> s,并且您的对话框适用于特定选项卡,那么您的对话框将采用 <h3> .

等等。

添加 role=document不会改变这一点(和 may be a mis-application of the document ARIA role,除非您明确地使用辅助技术进行测试以确保它按预期工作)。

您可以看到 all- <h1> model is now considered an anti-pattern in HTML 5.1 . W3C HTML validator现在将标记它。

您可以在 HTML5 规范的一位编辑撰写的文章中阅读有关结构标题方法的更多信息:Computer says NO to HTML5 document outline

因此,要回答您的原始问题,使用 <h1> 在语义上是不正确的。在一个对话框中。

关于html - 在对话框中使用 <h1> 在语义上是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38448811/

相关文章:

html - 如何删除 &lt;input&gt; 边框?

javascript - 函数 'onclick' 只工作一次

java - 在 Android 搜索对话框中获取按钮

android - 如何将文本设置为对话框中的 Edittext?

html - 调整窗口大小时布局变形

javascript - 数据表和模态

html - 内联 SVG 可以使用 Alt 标签吗?

html - 为什么鼠标单击时会出现手动焦点样式,而默认焦点样式不会出现?

angular - 可以为 Angular Material 表指定行标题吗?

javascript - 尝试使用 preg_match_all 使用 php 动态创建菜单到我的服务器 php 文档