html - 出于可访问性目的,应如何在全局元素中处理标题?
问题描述
在许多设计中,许多标题可能出现在网站的页眉、页脚或其他全局元素中。一个示例是在页脚中表示“联系我们”、“我们的地址”和类似部分,或在页眉中表示标语。
在这些情况下,我历来倾向于使用<h6>
元素,因为它们是优先级最低的标题,因此我认为最适合这个用例。
然而,我最近开始尝试改善我的项目的可访问性,我发现基本上每个自动化的 a11y 测试工具都说这不是正确的方法。我经常收到错误消息,指出“标题结构不是逻辑嵌套”,因为<h6>
要么出现在任何其他标题之前(对于页眉中的标语),要么从较早的标题跳转到<h6>
(对于页脚标题,当其余内容在小于<h5>
) 之后停止。
我只是将<h6>
页眉和页脚中的<p>
样式更改为与原始设计相匹配,但这对我来说似乎不正确——页脚中带有标题的每个部分不应该用实际标题表示吗?
在页面的全局元素中表示标题以确保可访问性的适当方法是什么?
解决方案
通过使用站点名称作为顶级标题,典型站点可以具有逻辑标题大纲。页面上的一切都属于站点,页面的主要内容以及站点导航以及页脚等。
<h1>Site name</h1>
<h2>Site navigation</h2>
<h2>Page main content</h2>
<h2>Contact us</h2>
<h2>Our address</h2>
(请注意,标语不应是标题。)
使用 HTML5,您可以使各个部分显式(article
, aside
, nav
, section
),并传达每个部分是 ( header
, main
, footer
) 的一部分:
<body>
<header>
<h1>Site name</h1>
<p>Site tagline</p>
<nav>
<h2>Site navigation</h2>
<!-- heading not necessarily needed -->
</nav>
</header>
<main>
<article>
<h2>Page main content</h2>
</article>
</main>
<footer>
<section>
<h2>Contact us</h2>
</section>
<section>
<h2>Our address</h2>
</section>
</footer>
</body>
(如果页脚由许多部分组成,则在可能的情况下引入分组标题/部分是有意义的,例如,在此示例中为“联系人”。也就是说,并非每个页脚都需要以部分/标题开头,尤其是在内容相当薄或不那么重要。)
推荐阅读
- c# - 如何在 .NET 中创建表达式构建器
- python - 如何限制输入的位数?
- javascript - jQuery Autocomplete - 在选择之前不要填充文本输入(鼠标或输入)
- amazon-ec2 - 使用 AWS Batch 服务部署 Spring 批处理应用程序会是一个好的设计吗?
- sed - 消除跨行重复的单词
- apache - 查询 Elasticsearch 时如何解决 CORS 问题?
- windows - 由于找不到客户端,可能导致 UDP 数据包未发送?
- sqlite - SQLite UPDATE 现在工作或者我做错了
- ruby-on-rails - 用 Webpacker 反应 Rails 不热重载
- selenium - 单击元素一次会出错,单击两次会正常,为什么?(量角器)