HTML是否允许在导航部分中放置按钮?

问题描述 投票:0回答:3

关于spec says元素的<nav>(强调我的):

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

它从来没有特别说过<button>是不允许的,并且没有任何地方说只有<a>元素应该用于导航(但它提到“链接”),但所有的例子似乎都是列表中的一堆锚。不是列表的one example (11)仍然只有用于导航的锚元素。

next example (12)显示了应用程序中的导航示例,但再次使用锚点。

那么,<nav>中允许的按钮元素是什么?

html semantic-markup
3个回答
1
投票

在HTML 5.2中,section 4.8.是关于链接:

链接是一个概念性构造,由aarealink元素创建,代表两个资源之间的联系[...]

正如人们所预料的那样,a(“超链接”),area(“超链接”)和link(“链接”等)的定义都是指链接,而buttoninput的定义别。

所以:

  • nav元素应包含具有href属性的元素(a / area / link)。否则,首先使用nav是不合理的(除了例外)。
  • nav元素也可能包含按钮。例如,一个按钮,用于在显示导航的所有级别和仅显示顶级之间切换。 (但是,如果按钮用于导航,它们应该是链接而不是按钮。)

1
投票

HTML5标准允许<nav>-tags和<button>标签内的任何类型的流内容被视为流内容,但您应该考虑出于语义原因而避免使用它们。基于<button>的按钮是UI元素,它们完全是javascript驱动的(或者在使用表单时由于浏览器的默认行为而在一些棘手的场景中),没有任何功能或对第三方引用的语义引用。因此,在<button>-tags内部使用<nav>-tags对于在不考虑javascript的情况下进行操作的客户端/机器人是没有意义的。

像Bootstrap,Semantic-UI等现代UI框架确实提供了以多种方式实现按钮的能力(如<button>-tags以及<a>-tags)。考虑到这些能力,您应该更倾向于依赖基于<a>-tag的按钮来保证。


0
投票

取决于你如何定义“允许”。

它是有效的HTML,但您可能想要阅读可访问性以及按钮(应该表示可点击的操作)和链接(应该在某处导航)之间的区别。

http://web-accessibility.carnegiemuseums.org/content/buttons/

© www.soinside.com 2019 - 2024. All rights reserved.