html - 从可访问性的 Angular 来看,我应该更喜欢 <nav><ul><li><a-or-other-tag> 还是 <nav><a-or-other-tag> ?

标签 html css accessibility navbar nav

这个问题在这里已经有了答案:





HTML5 nav element vs. role="navigation"

(6 个回答)


5 天前关闭。
社区在5天前审核了是否重新打开这个问题并关闭了它:

重复 这个问题已经回答了,不是唯一的,也没有区别于另一个问题。





通常,在书籍、教程和一些实际网页中,我会看到标记为 <li> 的导航栏。 <ul> 中的 s 个元素<nav> 中的元素元素,像这样:

.site-nav {
  display: flex;
  justify-content: space-around;
  list-style-type: none;
  padding-left: 0;
}

.site-nav > li > a {
  border: 1px solid black;
  padding: 1em;
  text-decoration: none;
}

li { padding: 1em; } /* just for better appearance here on SO */
<nav>
  <ul class="site-nav">
    <li><a href="x">first</a></li>
    <li><a href="y">second</a></li>
    <li><a href="z">third</a></li>
  </ul>
</nav>

但是,为什么我不喜欢以下解决方案,其中 <nav>直接包含<li>的所有内容来自上面的例子?

.site-nav {
  display: flex;
  justify-content: space-around;
  list-style-type: none;
}

.site-nav > a {
  border: 1px solid black;
  padding: 1em;
  text-decoration: none;
}
<nav class="site-nav">
  <a href="x">first</a>
  <a href="y">second</a>
  <a href="z">third</a>
</nav>

我看到的一个优势是靶向 <a> 所需的特异性较低。链接(或我在它们位置放置的任何内容,例如 <button> s),但我对 HTML 仍然知之甚少,无法理解一种或另一种解决方案的含义,尤其是就可访问性而言。

最佳答案

答案很简单,语义和可访问性。
如果我在没有 <ul> 的情况下到达您的第二个示例用屏幕阅读器然后我不知道有多少链接。
如果我到达第一个使用屏幕阅读器正确标记的示例,我会听到类似于“导航地标,3 个元素列表”的内容。
这让我知道列表中有 3 个链接,因此当我在它们之间移动时,我可以想象我在导航中的位置。

关于html - 从可访问性的 Angular 来看,我应该更喜欢 <nav><ul><li><a-or-other-tag> 还是 <nav><a-or-other-tag> ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69513776/

相关文章:

html - 应用于特定 DIV 的 CSS 会遗漏一些细节

css - 基于category-A的Col-md-9的背景色

html - 有没有办法在 <map...><area ... title ="searchable text"/></map> 和 <img alt ="searchable text"/> 中搜索可搜索的文本?

javascript - 公告结束后切换 aria-live?

jquery - 如何保持侧面菜单打开

jquery - 我如何使用 jQuery 将 HTML 转换为文本?

html - 如何别名 google 网络字体 font-family/font-weight 组合?

javascript - 使用 JavaScript 打印时媒体打印不正确

jquery - 好的加载图标jquery

accessibility - 您可以强制屏幕阅读器将数字读取为单个数字吗?