0

我在 jQuery 中使用 scrollTo 函数来平滑滚动到页面上的元素。当我在同一页面内单击带有目标的链接时,它可以正常工作。

我的问题是我还希望它在页面加载时直接在外部页面上工作(otherDoc.aspx?a=elementId 和 if Request.QueryString ...)。问题是它没有滚动到完全正确的位置,我认为这是因为所有内容可能没有完全加载,因此元素位置发生了变化,这意味着在慢速连接时结果会更糟。我试图做一个 setTimeout 来测试延迟,然后它滚动到正确的位置。一种选择是在外部链接上做简单的锚点#myAnchor,但平滑的滚动给人一种更好的感觉。

我的代码:

<script>
$(document).ready(function () {

$(window).scrollTo("#" + elementId, 1000);

});
</script>

有什么建议么?谢谢!

4

1 回答 1

7

$(document).ready() 在加载 html 和 head 脚本时触发......你应该尝试使用 $(window).load() 来代替,因为它会在加载了包括所有资产的整个页面时触发——尽管我听到了一些缓存的图像可能不算数,因此请通过硬刷新对其进行测试,但您可能会达到您想要的效果。

我不知道您的 URL,但有时您定位的锚元素的位置可能具有影响其高度的样式,或者它是否呈现为块元素,有时可能会影响您滚动到的位置。如果可以的话,我会为你的锚元素添加一个顶部填充,特别是如果它们开始一个 SECTION 或 ARTICLE ,这样你就可以在顶部有一点空间,这样标题文本也不在滚动位置的位置 0 上。

于 2013-04-28T15:19:56.247 回答