Html 在href超链接开头使用#

Html 在href超链接开头使用#,html,css,Html,Css,我知道超链接标签href链接中的#字符用于在打开后将指向的页面滚动到指定的元素id: href="//site.com/#some-id" href=“//site.com/#some id” 单独使用时,表示仅向上滚动到当前页面顶部: href=“#” 但是,当它附加到链接的开头时会发生什么情况呢 href=“#/phones/phoneid 一旦打开,它会将指向的页面滚动到顶部吗?不会。您必须将#添加到URL的末尾,以使其滚动到顶部,例如: <a href="/phones/phon

我知道超链接标签
href
链接中的
#
字符用于在打开后将指向的页面滚动到指定的元素id:

href="//site.com/#some-id"
href=“//site.com/#some id”

单独使用时,表示仅向上滚动到当前页面顶部:

href=“#”

但是,当它附加到链接的开头时会发生什么情况呢

href=“#/phones/phoneid


一旦打开,它会将指向的页面滚动到顶部吗?

不会。您必须将
#
添加到URL的末尾,以使其滚动到顶部,例如:

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

它将在您的DOM中搜索ID。如果没有这样的ID,则不会发生任何事情。
但是你自己试试看,因为这只是一种推测。

url系统目前的工作方式如下:

协议
://
域名
/
资源
#
锚定链接
(本例简化了语法)

在锚定链接之后添加另一个资源路径没有意义,因为锚定链接已分配给您所寻找的资源,它不能是资源路径的一部分

解决方案:在链接末尾添加
#
,使其滚动到顶部。

URI中的
#
用于指示给定页面上的页内锚定

我知道超链接标签href链接中的#字符用于 打开后,将指向的页面滚动到指定的元素id:

href="//site.com/#some-id"
与其说它“打开”页面,然后“滚动”到锚点,不如说它在锚点处打开页面,锚点是地址的一部分

单独使用时,表示只向上滚动到当前页面的顶部 第页:

href=“#”

是的。有点。但那是因为你没有说明锚的名称,而浏览器找不到它-所以浏览器不会带你到页面顶部以下的任何地方

但是,当它附加到链接的开头时会发生什么情况呢

href=“#/phones/phoneid/”

一旦打开,它会将指向的页面滚动到顶部吗

没必要,是吗

href="/phones/phoneid/"
将带您进入
/phones/phoneid/
页面的顶部

简而言之,散列片段是网址的一部分

哈希片段由两部分组成:

  • 散列(
    #
  • 锚的名字
  • 单击包含散列片段的
    URI
    ,将在所示的锚点处打开所示的页面

    单击不包含哈希片段的
    URI
    ,将在顶部打开指示的页面


    如果
    URI
    包含一个哈希片段,该哈希片段的名称无效(或者根本没有命名),浏览器将无法找到锚点,并将默认打开顶部的指定页面

    您可以自己尝试,您会发现它不起作用。