【问题标题】:anchor linking to a certain position of the page锚链接到页面的某个位置
【发布时间】:2009-12-06 03:07:09
【问题描述】:

我有一个链接到另一个页面的锚链接。单击它时,默认情况下它会转到下一页的顶部。我希望它被带到页面的某个位置。我该怎么做(使用 jQuery 幻灯片效果或普通 html)?

例如,当点击 .sample a 时,我希望它能够将您带到链接页面的某个位置。

【问题讨论】:

  • 注意-由于我的情况,上述所有解决方案都不起作用。因为我正在使用这个 jquery 内容滑块,所以它不能正常工作。这很难解释,所以请访问vitaminjdesign.com 并点击服务按钮。它被散列到目标页面上的特定内容滑块框架,但单击时窗口的位置不正确。还有其他选项可以让您指定目标页面的 y 坐标吗?
  • 例如,我在vitaminjdesign.com/about.html#about 上看不到目标锚链接,这就是它位于顶部的原因。

标签: jquery html hyperlink anchor


【解决方案1】:

在您的目标文档中使用这样的锚点:

<a name="anchor1"></a>

或

<a id="anchor1"></a>

在您的源文档中:

<a href="http://www.example.com/some/page.html#anchor1">Go to anchor 1</a>

或在同一文档中:

<a href="#anchor1">Go to anchor 1</a>

【讨论】:

    【解决方案2】:

    好的,所以这个答案非常针对您的问题。

    其他解决方案都不起作用的原因是,当页面加载时,与锚匹配的 div 元素被隐藏了。

    要证明这一点,请单击主页上的链接,然后查看它不起作用。然后将哈希从#whatever 更改为#bgaboutbody,您将看到它正常工作。

    所以,使用这样的东西会让它对你有用。基本上,如果有一个散列,它将动画到正确的位置。将其放在页面最底部的脚本块中(&lt;/body&gt; 标记的正上方)

    window.setTimeout(function(){
        if(window.location.hash){
            var $target  = $(window.location.hash).closest("#bgaboutbody");
            if($target.length)
                $('html, body').animate({scrollTop: $target.offset().top}, 1000);
        }
    }, 100);
    

    学习使用后备:

    在这样的销售网站上,最好确保您的内容无需 JavaScript 即可加载。 (在网络应用程序中,我觉得这是一个不同的讨论)。我建议使用我给你的解决方案this question,在该解决方案中,将js 类添加到页面&lt;head&gt; 中的html 元素。然后像这样定义你的 CSS:

    .js #contact, .js #about, etc { display:none }
    

    所以只有在 JS 存在时才会隐藏。此外,由于 此 解决方案也使用 JavaScript,因此如果禁用 JS,它们仍然可见,因此它仍然有效。

    【讨论】:

    【解决方案3】:

    这是我的解决方案。

            $('.container').on('click', function(e){
                var hash        = $(this).find('a').attr('href'),
                    target      = $('html').find('p'+hash),
                    location    = target.offset().top;
    
                $('html, body').stop().animate({scrollTop: location}, 1000);
    
                e.preventDefault();
            });
    

    html 就像:

    <div class="container">
       <a href="hash">click me</a>
    </div>
    
    <p id="hash"></p>
    

    因此,当单击锚点时,它将滚动到文档中的相应锚点。

    【讨论】:

      【解决方案4】:

      您要做的第一件事是在目标页面的某处定义一个锚点:

       <a name="myAnchor" /> 
      

      假设目标页面名为“website.html”。然后,您必须将锚附加到链接:

       <a href="website.html#myAnchor">Click here</a>
      

      最好的祝愿,
      费边

      【讨论】:

      • 乍一看,我还以为你是 Jon Skeet。
      【解决方案5】:

      您可以使用哈希 URL“#”通过简单的 html 来执行此操作。例如:

      <a id="somelocation"></a>
      

      可以通过点击以下链接自动滚动到视图中:

      <a href="#somelocation">Go to somelocation on this page</a>
      

      这也可以通过指向其他页面的链接来完成。

      <a href="someotherpage.html#somelocation">Go to somelocation on someotherpage</a>
      

      【讨论】:

        【解决方案6】:

        使用name attribute。

        【讨论】:

          【解决方案7】:

          我一直在寻找一种更好的方法来做到这一点,但我找不到。我的解决方案是在目标点创建一个零宽度的锚点,通过“位置:相对”将其拉出正常流程,并确保内容框尽可能高,以强制以下元素向下移动页面:

          <a name="target" style="position: relative; padding-top: 200px">&#x200B;</a>
          

          将其拉出正常流程可防止填充成为页面的一部分,但在计算偏移量时,我测试的所有浏览器在定位时都会尊重它。当然,这只适用于距视口顶部的固定偏移量。它有效,但感觉很笨拙。

          【讨论】:

            猜你喜欢
            • 2015-05-18
            • 1970-01-01
            • 1970-01-01
            • 2020-09-24
            • 2019-08-08
            • 1970-01-01
            • 2017-06-09
            • 2017-02-01
            相关资源
            最近更新 更多