【问题标题】:Scroll to anchor onload with header offset滚动到带有标题偏移量的锚点加载
【发布时间】:2023-03-26 14:50:01
【问题描述】:

我在我的网站上使用多个 divs 的锚点。 当我的页面加载时,我的 URL 末尾有一个 #,如下所示:

http://www.website.com/projects#third

我还有一个固定的标题,高度为 100 像素。

我正在使用 scrollto 插件。

我想要做的是,当我的页面加载时,它会滚动到 URL 的 #div,并带有标题高度的偏移量。

这是我尝试使用 jQuery 的方法,但它不起作用。

$(window).load(function() {

    var hashVal = window.location.hash;
    var headerheight = $("header").height();
    $('body').scrollTo(hashVal, { duration: 'slow', offsetTop: headerheight});

});

不知道我做错了什么。

【问题讨论】:

    标签: jquery anchor offset scrollto fragment-identifier


    【解决方案1】:

    尝试以下方法:

    $(document).ready(function(){
         $('body').scrollTop($('body').scrollTop() + $("header").height());
    });
    

    【讨论】:

      【解决方案2】:

      以下 jsFiddle 工作正常:http://jsfiddle.net/gp5kev0k/2/

      $(window).load(function(){
        var hashVal = "#scrollto";//cannot test this in jsfiddle
        var headerheight = $("#header").height();
        console.log(hashVal)
        console.log(headerheight)
        $('body').scrollTo(hashVal,{duration:'slow', offsetTop : headerheight});
      });
      

      区别在于:
      我使用divid=header,可能你也这样做,但使用$("header").height(); 你计算<header></header> 的高度(如果你有这样一个很好的元素..)

      我将 hashval 设置为静态字符串,因为 window.location.hash 在 jsFiddle 中不起作用。添加一些console.log 命令以查看这些部分是否适用于您的代码。

      【讨论】:

      • 是的,它有效,但我想知道问题是否来自我的这部分代码“var hashVal = window.location.hash;” ?是否可以在滚动之前获取 window.location.hash ?
      • 是的,应该有可能,但我不能用 jsFidle 测试它。你可以通过控制台记录哈希值,看看那部分是否出错。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-14
      • 1970-01-01
      • 2016-05-20
      • 2015-11-05
      • 2023-01-12
      相关资源
      最近更新 更多