1

我正在使用以下功能手动执行滚动以锚定页面上的链接:

var hash = window.location.hash.substring(1);
if (hash != ''){
      var anchor = $('#' + hash + '_hash').offset().top - 50;
      $("html,body").animate({ scrollTop: anchor}, 1000)
};

代码正常工作,除了我在 chrome 中得到不同的值,offset().top并且在刷新和实际页面加载之间总是相差 40px。刷新时,我通过输入 url 或在新选项卡中打开获得正确的值和页面加载,我得到相同的值减去 40px。

我已将此功能移动到,$(window).load(function () {...});因为我认为它可能是一些缓存元素正在加载更改值,但问题仍然存在。

有人知道为什么会发生这种情况吗?我尝试搜索类似的问题/答案,但还没有找到任何东西,所以如果这是一个重复的线程,我提前道歉。

4

0 回答 0