9

<nav>W3C 对标签的定义似乎有点模糊:

nav 元素表示链接到其他页面或页面内的部分的页面部分:具有导航链接的部分。

并非页面上的所有链接组都需要位于 nav 元素中——该元素主要用于包含主要导航块的部分。特别是,页脚通常会包含指向站点各个页面的链接的简短列表,例如服务条款、主页和版权页面。对于这种情况,仅页脚元素就足够了;虽然在这种情况下可以使用 nav 元素,但通常没有必要。

用户代理(例如屏幕阅读器)针对的用户可以从初始呈现中省略的导航信息中受益,或者可以从立即可用的导航信息中受益,可以使用此元素来确定最初跳过和/或根据要求提供的页面。

基于对其定义的非常严格的解释以及我通过验证遇到的情况,它似乎<nav>应该只包含列表元素。但是,不应该将搜索视为一系列页面中的一种导航形式吗?

虽然我知道它的主要用途是用于用户代理,但如果前者仅充当后者的容器,那么在<nav>前面加上一个标签似乎仍然是多余的。如果可以包含与导航相关的其他元素,而不限于链接列表,<ul>那将更有意义。<nav>

例如:

<nav role="navigation">
  <form action="http://google.com/search" method="get">
    <fieldset role="search">
       <input type="hidden" name="q" value="site:mysite.com" />
       <input class="search" type="text" name="q" results="0" placeholder="Search"/>
    </fieldset>
  </form>

  <ul class="top-navigation">
     <li><a href="/">Home</a></li>
     <li><a href="/about.html">About Me</a></li>
     <li><a href="/archive.html">Archives</a></li>
  </ul>
</nav>

除了验证之外,这不是可接受的使用<nav>吗?对于不太关心验证的人来说,与确保屏幕阅读器和其他可访问性工具可以正确呈现页面相比,会产生什么影响?

4

1 回答 1

10

nav元素应该用于站点的主要导航项,而不仅仅是所有导航项。它也不必包含 aul但由于大多数时候它确实包含一个列表,因此它通常是有意义的,但不是必需的。

如果您的搜索是您网站的主要导航方法,那么请务必将其放在 anav中,尽管从您上面给出的示例来看,该列表似乎是主要导航而不是您的搜索。

我已经写了一些关于使用nav标签在导航或不导航?,虽然它没有提到搜索,这是一个有趣的观察。

于 2012-03-05T09:01:19.027 回答