我可以有一个没有链接的导航元素吗?

Can I have a nav element with no links in it?

<nav> 通常包含 <a> 个元素,但它是必需的吗?我有一个单选按钮表单,其目的类似于导航。它不会导航到 Internet 上的其他页面,而是更改 HTML 文档正文中元素的可见性(如轮播)。

谢谢!今晚我一直在努力处理语义标记!

语义的全部意义在于,当从一个完全不同的角度来看时,如何从内容中得出意义和关系上下文仍然很清楚。

Web 浏览器会在每次加载或更改后将您的 HTML 从 Dom 中解析出来,并根据内容构建意见。浏览器会在内部自行保存它,以防以后需要它来帮助它进行困难的判断调用,如果它被要求执行看似复杂的操作。

例如,视力真的很差的人可能会在他们的移动设备上启用辅助功能,该功能会添加各种不同的视觉样式,从而根据类型向他们可以触摸的可交互元素添加大量视觉强调的互动。这可能类似于元素顶部的明亮颜色涂层和轮廓覆盖,可能类似于多媒体控件的青色、表单元素的黄色和导航点的洋红色。此功能必须适用于浏览器将呈现的任何和所有可能的内容,因此您得到的是隐藏在引擎盖下的运行时脚本,浏览器正在使用该脚本动态解析它加载的内容以构建它可以依靠某种意见驱除希望成为良好判断的东西。因此,无论您的导航对于视力好的人来说在视觉上看起来多么清晰,这就是为什么语义如此重要以及为什么我们继续努力正确使用它们如此重要的原因,因为在这里您有一台机器可以解析您的源代码代码,因为它对视觉上下文的理解为零。

当涉及到可访问性时,浏览器在形成他们的意见时要比简单地解析 Dom 复杂得多。在此示例和您要编写的代码中,将导航元素包装在 nav 标记中应该可以正确地帮助浏览器进行正确的调用。即使它们不是 link 标签,浏览器也会记录导航标签内的任何元素 活动事件侦听器处理点击等类似项目。

正如另一位用户提到的,语义就是判断。良好的语义在良好的开发中发挥作用的其他方式不计其数,枯燥的代码和更易于维护是我的两个最爱。 "can do" 和 "can't do" 没有硬性规定,但不管怎样,练习良好的语义仍然很容易。不断地问自己这几个关于你的核心内容的问题-

• 如果某人或某事试图以我没有明确构建目标功能的方式使用它,我认为它是否能够很好地理解内容是什么以及相关的意图以获得成功在尝试什么?

• 如果我以后要重构或重新利用其中的任何一个,内容、逻辑和样式是否有明确的分离?我的内容是否干净且有意义?它是不是干净利落,我可以把它撕下来,然后把它放进新的东西里,几乎不需要任何改变?从本质上讲,该内容的可移植性如何?它是即插即用级别的便携式产品吗?如果没有,是否可以通过更好的语义使其更便携?

使用这对核心准则练习使用正确的语义进行开发,您几乎总是会完全没问题。

只是为了确保我已经直接回答了你的问题 - 是的。你所做的是 "okay","semantically legal"

tl;dr:不,nav 元素需要 links(但不一定 a个元素)。

W3C 的 HTML5 定义 nav element 是这样的:

The nav element represents a section of a page that links to other pages or to parts within the page: a section with navigation links.

默认情况下,单选按钮不会 link 到页面中的某个部分。在您的情况下,它会更改页面上元素的可见性。因此 适合为此目的使用 nav 元素(除非,也许,更改单选按钮会聚焦已更改的元素;但这种行为可能不利于可用性)。