在没有 href 属性的情况下使用 <a>(锚标记)是否有效? [重复]

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

我一直在使用 Twitter Bootstrap 来构建一个网站,它的很多功能都依赖于将东西包装在

<a>
中,即使它们只是要执行 Javascript。我对 Bootstrap 文档推荐的
href="#"
策略有疑问,所以我试图找到不同的解决方案。

但后来我尝试完全删除

href
属性。我一直在使用
<a class='bunch of classes' data-whatever='data'>
,并让 Javascript 处理其余的事情。而且它有效。

然而有些东西告诉我我不应该这样做。正确的?我的意思是,从技术上讲,

<a>
应该是某个东西的链接,但我不完全确定为什么这是一个问题。或者是吗?

html anchor semantic-markup
5个回答
361
投票

<a>
nchor 元素只是某些内容的锚点。最初,HTML 规范允许命名锚点 (
<a name="foo">
) 和链接锚点 (
<a href="#foo">
)。

命名锚点格式不太常用,因为片段标识符现在用于指定

[id]
属性(尽管为了向后兼容,您仍然可以指定
[name]
属性)。

89
投票
我想你可以在这里找到答案:

没有 href 属性的锚标记安全吗?

如果你不想使用 href 进行链接操作,你可以这样使用它:

<a href="javascript:void(0);">something</a>
    

26
投票

是的,使用不带 href 属性的锚标记是有效的

如果

a

 元素没有 
href
 属性,则该元素代表一个
  占位符,表示链接可能已放置的位置(如果
  是相关的,仅包含元素的内容。

是的,您可以使用

class

和其他属性,
但不能使用target
download
rel
hreflang
type

target

download
rel
hreflang
type
属性必须是
  如果 href 属性不存在,则省略。

至于“

我应该吗?”部分,请参阅第一个引文:“如果相关的话,链接可能会被放置在哪里”。所以我会问“如果我没有 JavaScript,我会使用这个标签作为链接吗?”。如果答案是肯定的,那么是的,您应该使用<a>

而不使用
href
。如果不是,那么我仍然会使用它,因为生产力对我来说比边缘情况语义更重要,但这只是我个人的观点。

此外,您应该

注意不同的行为样式(例如没有下划线、没有指针光标、不是:link

)。

来源:

W3C HTML5 推荐


4
投票
有效。例如,您可以使用它来显示模态框(或响应

data-toggle

data-target
 属性的类似内容)。

类似:

<a role="button" data-toggle="modal" data-target=".bs-example-modal-sm" aria-hidden="true"><i class="fa fa-phone"></i></a>

这里我使用 font-awesome 图标来显示模式,它作为

a

 标签而不是 
button
 更好。另外,设置 
role="button"
 会使指针更改为操作类型。如果没有 
href
role="button"
,光标指针不会改变。


-4
投票

<a href="#">Text</a>

:替换
href="#name"
,然后保存。它正在工作。

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