为啥不鼓励按钮导航?

Posted

技术标签:

【中文标题】为啥不鼓励按钮导航?【英文标题】:Why are button's discouraged from navigation?为什么不鼓励按钮导航? 【发布时间】:2015-09-05 08:18:29 【问题描述】:

这可能是一个固执己见的问题,但我环顾网络,似乎网络开发人员喜欢将<a> 标签设置为看起来像按钮,而不是使用特定的<button> 标签。我在查看导航时明显看到了这一点

经过一番研究,我发现了这个:

按钮不适合搜索,因为其中的文本对搜索引擎不可见。 按钮比链接更难更新,每次更新都需要 Photoshop 和新图像。 按钮加载速度比链接慢,这对移动访问者尤其不利。 视觉障碍者不太容易使用按钮。 按钮是不必要的,即使您想使用非标准字体,这要归功于 TypeKit 等工具。 ~ 引用自here

但是,这些“原因”中的大多数似乎都非常站不住脚,并且“您需要 photoshop”之类的答案似乎……嗯……无效?

所以我想知道:

在创建导航菜单时不使用<button> 标记,而是将<a> 标记设置为看起来像按钮,是否有实际原因? 为什么按钮不是常态?这不是他们的目的吗?

* 我不希望你在这里发表意见,也不希望有观点。仅关于为什么会这样的事实信息

【问题讨论】:

When to Use Button @Paulie_D:为链接欢呼。我知道这是临界点,但我有问题,但不知道答案。只是样式链接 like 按钮的导航数量确实让我感到困惑,因此我想看看开发人员不使用它们是否有“事实原因”。 还有w3c says:"如果a元素有href属性,那么它代表一个超链接(超文本锚点)。如果a元素没有href属性,那么该元素代表一个占位符,用于放置一个链接,如果它是相关的。”。另一方面,按钮不代表超链接。由于导航显然由超链接组成,而不仅仅是 GUI 元素,a-elements 将是您的选择。 @UsmanArshad 感谢您的链接。我想我开始明白什么时候用一个,什么时候用另一个。 doSomethingformetakemesomewhere 之间似乎有明显的区别。 【参考方案1】:

在阅读了 cmets 中发布的多个文档后,似乎确实有一个明确的事实原因,导航栏中没有使用按钮。

锚标记

当存在页面重定向或将用户带到网站的其他位置时使用这些。

如果它导航,它就是一个链接。使用具有有效超文本引用的链接标记

~Links are not buttons

按钮元素

当您想要doSomething() 重定向用户时使用这些。 IE。提交表单/等。


你需要问自己的问题是:

此控件是否用于启动即时操作该操作是否导航到另一个页面?

如果您的问题的答案是第一部分,那么您应该使用button 元素。而如果您希望是后者,那么您应该使用a 元素。

进一步阅读:

w3.org

Links are not buttons. Neither are DIVs and SPANs

When To Use The Button Element

【讨论】:

以上是关于为啥不鼓励按钮导航?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的导航栏按钮不起作用(我只是一个初学者,对不起......)

为啥添加到我的导航项的按钮看起来不活动?

为啥使用列表而不是按钮来做导航菜单?

在 ios swift 中导航到其他屏幕时,不鼓励在分离的视图控制器上显示视图控制器

为啥在表单后我无法在导航栏上保持内联?

为啥导航栏后退按钮项消失?斯威夫特 4