在不使用锚点的情况下创建指向网页顶部的链接

hug*_*omg 47 html anchor

我有一个HTML文档,当前使用锚点有一些指向页面顶部的链接

<body id="topofpage">
   ...
   <a href="#topofpage">Go to top</a>
Run Code Online (Sandbox Code Playgroud)

但是,我不喜欢需要创建一个无用的ID以及单击链接后"#topofpage"如何显示在URL中.我还能做些什么来链接到页面顶部而不使用Javascript吗?我尝试完全删除锚点,<a href="">但这会导致页面刷新.

hug*_*omg 78

根据HTML5规范,空片段#和特殊片段#top将链接到页面顶部.

<a href="#">Go to top</a>

<a href="#top">Go to top</a>
Run Code Online (Sandbox Code Playgroud)

如果使用这些特殊片段名称,则无需创建匹配锚点.

  • HTML5规范定义了一个特殊的片段"#top",可用于链接到文档的顶部.无需显式定义ID为"top"的元素.请参阅Mozilla的[href note](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a#attr-href). (19认同)
  • 这个答案确实回答了原始问题,但它对可访问性产生了负面影响.如果您选择这些链接中的任何一个并按下输入,则下次选项卡将转到"返回首页"链接后的链接.如果您使用原始问题中的标记,则标签将继续到目标元素之后的链接.出于这个原因,我建议在原始问题中使用标记. (2认同)

use*_*192 11

您可以尝试使用javascript

<a onclick="scroll(0,0)">

或者你可以使用jQuery

$("#Top").click(function(){
 scroll(0,0);
});
Run Code Online (Sandbox Code Playgroud)

  • Javascript是唯一的方法 (2认同)

Sum*_*umo 6

我知道你说的是没有使用JavaScript,但我认为这是避免使用真正锚点的唯一方法.以下jQuery将使用#tophref 替换锚点,并在不更改URL的情况下执行一个漂亮的动画滚动到顶部(有关更多信息,请参阅原作者的页面).

$(document).ready(function() {
    $('a[href=#top]').click(function(){
        $('html, body').animate({scrollTop:0}, 'slow');
        return false;
    });
})
Run Code Online (Sandbox Code Playgroud)

jsfiddle完整性

但是,我会坚持使用语义HTML并使用锚点来实现其目的,以便通过最大数量的浏览器来解释正确的含义.不要忘记需要屏幕阅读器或其他特殊浏览器的残障人士.船锚保证工作.

除此之外,Google 还在2009年宣布了一些新的索引功能,这些功能直接利用页内锚点来提供Web搜索者可能正在寻找的其他上下文.在许多情况下,可能存在用户非常感兴趣的页面的一部分.Google可以提供到该页面锚点的直接链接以获得最佳相关性.

从我的角度来看底线 - 不要破坏锚点.使用它们.