我经常在源代码中找到#
。
<li><a href="#"><i class="fa fa-cog"></i><b>Settings</b></a></li>
为什么不只是
<li><a><i class="fa fa-cog"></i><b>Settings</b></a></li>
修改 谢谢你们的答案。但是,是的,意识到这是一个重复的问题&gt;。遗憾
答案 0 :(得分:6)
a
元素在HTML中有两个用途:
如果你写:
<a name="Chapter4">Chapter 4. The Counterpane</a>
...并将其发布在网页上的
位置 http://example.com/dedicated/hawthorne.html
...然后任何人都可以使用以下网址链接到该特定的锚点:
http://example.com/dedicated/hawthorne.html#Chapter4
为此目的,URL中保留#
符号:将锚点的名称与包含锚点的文档的URL分开。
正如您可能已经看到的那样,URL的结构有点像(简化了一点!),如下所示:
(method) : // (host) / (path-to-document-on-host) # (anchor)
所以,例如。
http :// example.com / dedicated/hawthorne.html # Chapter4
method host path-to-document anchor
幸运的是,URL非常懒,如果省略它们的任何部分,它们将默认从当前文档中取出该部分。您甚至可以通过创建相对URL来省略文档路径的一部分。
一种类型的相对URL是关闭所有但片段。因此,在同一文档中,可能会有一个内容列表,其条目如下:
<li> <a href="#Chapter4">Chapter 4. The Counterpane</a> </li>
这允许文档在任何地方“移动”,因为它的主机和路径将默认为它所在的位置。
更好的是,因为很明显目标锚点必须在同一个文档中,(几乎)每个Web浏览器(除了一些非常深奥和蹩脚的浏览器)都会简单地滚动(或多或少) finesse)到目标锚,没有(重新)加载文档。
现在,由于a
可能是锚点,并且可能是超引用(“链接”),因此您必须使用Web浏览器的一个或另一个属性来了解您想要的行为。
简单写作
<a> Foo. </a>
......含糊不清。它应该是锚吗?可能不是;没有名字!它应该是超参考吗?显然不是;没有参考!
现在,它已经(并且在某些浏览器中,可能仍然存在)JavaScript的某些属性(例如onClick
)只保留给非常特定的元素。因此,为了在页面上创建一个可能会捕获这些事件的窗口小部件,必须使用支持它的元素。
因此,创建链接变得相当普遍,然后隐藏它是一个链接的事实,只是为了捕获像click
这样的JavaScript事件。
如前所述,URL对您省略其中的各个部分非常宽容;还有,像
这样的同一文件中的一个片段 <a href="#some-anchor"> ... </a>
...还具有不(重新)加载文档的奖励属性。那么如果我们把它剥离成最近的形式会发生什么呢?
href="#"
嗯,你有它。您在当前文档中引用了一个没有名称的锚点。由于那个锚不可能存在,所以发生的一切都是......没有。
(好吧,通常没什么。缺点是,浏览器是要滚动到文档的顶部,但是因为你试图将他们的click
陷入JavaScript中 - 你是,不是'你呢?---你可能会在此之前取消导航事件。)
因此,href="#"
链接的原因是:
另一个类似的噱头是使用href="javascript:void(0);"
href="#"
与此之间的主要区别在于,如果您的用户未启用JavaScript,他们会看到不同的行为。
href="#"
什么都不做;或者,可能会滚动到文档的头部,这可能会让他们想知道链接应该做什么。href="javascript:void(0);"
通常会弹出某种对话框,模仿它们来禁用它们的JavaScript,让它们烦恼,但可能让它们充分意识到它们错过了“某些东西”。我认为哪一个你喜欢的是味道问题,尽管其中一个更容易打字。
PS: href="javascript:void(0);"
(或类似)的另一个缺点是它无法复制为对当前文档的引用。例如,如果有人在href="#"
上右键单击→“复制链接位置”,“在新选项卡中打开”等等(例如,在新选项卡中单击以打开),则浏览器通常会做一些有点理智的事情,并使用当前文档的位置。另一方面,在新标签中打开javascript:void(0)
可能会让某人盯着空白的窗户,抓挠他们的头。
答案 1 :(得分:0)
它只是一个占位符,因为它不会在任何地方重定向。它主要用于开发
答案 2 :(得分:0)
标签用于显示链接。如果您没有提及 href 属性,则文本不会显示为链接...它显示为普通文本。因此,如果要将文本显示为链接,则必须使用mantion href属性。如果您不想要任何操作或重定向,那么您可以使用“#”作为href属性的值。
答案 3 :(得分:0)
这是一个很好的问题,也是我在开始时问自己的问题。 ahref#符号经常用作html表单中的占位符。我看到很多引导程序,以及我修改的一些.NET项目。基本上我已经看到它最常用来说“你可以链接到某个地方,但我没有任何逻辑可以在我当前的例子中链接它。”为你干杯,快乐发展!