html - anchor 标记作为没有 href 的按钮

标签 html css

我发现除非在表格上,<a> anchor 标签几乎总是用作按钮。

我的问题不是为什么 <a>使用标签,而是为什么 href="#"也被使用。

据我了解,<a>没有 href 是有效的 html,事实上,在“按钮” anchor 和链接 anchor 标签之间提供更多区别,如 :link:visited仅当有 href 时才会触发。甚至光标也可以变回指针,通过更改 ::selection 可以将文本突出显示。 . ( example )

虽然两者都受 :active 影响(尽管即使这样也可以通过对链接说 a:visited:active, a:link:active {---} 来区分),我能想到不这样做的唯一原因是 Tab 键顺序也被删除了。

但是,从好的方面来说,您可以删除 href="#" (这在测试页面、禁用 javascript 等时很有用),为“按钮”提供不同的默认样式,并且更容易在代码中区分。另外,你总是可以分配它 tabindex="0"把它放回tab flow,以后css可能会引入nav-index ,它已经在 Opera 中引入(尽管这是一个有风险的属性)。

虽然删除 Tab 键顺序可能很麻烦,但我认为它是这样的:您只需替换 href="#"对于 tabindex="0" ,它仍然区分“按钮”和链接,允许您设置它们的样式。

所以我想我最初的问题是为什么 href="#" used 仍然是我的主要关注点,但我想听听我是否遗漏了任何关于为什么应该/不应该这样做的兴趣点,这可能是将链接与“按钮”分开的更好方法。

最佳答案

href="#" 属性之所以被使用,是因为某些(真正的)旧浏览器仅支持链接的属性,如 onclick。通过使用 href="#",您将 a 元素变成了这个意义上的链接。后来忘记了原来的原因,就抄代码了。

当 JavaScript 在浏览器中被禁用时,href="#" 属性使该元素成为指向当前文档开头的链接。这几乎从来都不是一个合理的退路;要提供非 JavaScript 回退,href 属性应指向包含一些服务器端回退的 URL。

当启用 JavaScript 并且作者忘记使用 return false 或其他抑制正常链接处理的方式结束事件处理程序时,将在执行处理程序后跟踪链接。所以当前页面被重新加载并定位在开始处。这可能会被忽视,也可能不会被忽视。

关于html - anchor 标记作为没有 href 的按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11975757/

相关文章:

asp.net - 主体上的动态背景图像 (ASP.NET)

html - 无法将样式应用于页脚 div 中的元素

html - 侧导航栏高度问题

html - 不存在但存在的边距导致元素下降到新行,因为组合宽度 >100%

javascript - 在 HTML 标题选项卡中传递 AJAX 响应

javascript - 如何在js中创建行单元格循环

html - 如何让我的图片标题具有响应性?

javascript - 如何将汉堡菜单移动到覆盖菜单的前面

javascript - 当我从 Pen 将它复制到 PHPStorm 时,为什么这个文本动画代码不起作用?

html - Position Absolute div inside position relative list item - 裁剪问题 - ie7