关于spec says元素的<nav>
(强调我的):
nav元素表示链接到其他页面或页面中的部分的页面的一部分:带有导航链接的部分。
它从来没有特别说过<button>
是不允许的,并且没有任何地方说只有<a>
元素应该用于导航(但它提到“链接”),但所有的例子似乎都是列表中的一堆锚。不是列表的one example (11)仍然只有用于导航的锚元素。
next example (12)显示了应用程序中的导航示例,但再次使用锚点。
那么,<nav>
中允许的按钮元素是什么?
HTML5标准允许<nav>
-tags和<button>
标签内的任何类型的流内容被视为流内容,但您应该考虑出于语义原因而避免使用它们。基于<button>
的按钮是UI元素,它们完全是javascript驱动的(或者在使用表单时由于浏览器的默认行为而在一些棘手的场景中),没有任何功能或对第三方引用的语义引用。因此,在<button>
-tags内部使用<nav>
-tags对于在不考虑javascript的情况下进行操作的客户端/机器人是没有意义的。
像Bootstrap,Semantic-UI等现代UI框架确实提供了以多种方式实现按钮的能力(如<button>
-tags以及<a>
-tags)。考虑到这些能力,您应该更倾向于依赖基于<a>
-tag的按钮来保证。
取决于你如何定义“允许”。
它是有效的HTML,但您可能想要阅读可访问性以及按钮(应该表示可点击的操作)和链接(应该在某处导航)之间的区别。
http://web-accessibility.carnegiemuseums.org/content/buttons/