我在jQuery中使用scrollTo函数来平滑滚动到页面上的元素。当我在同一页面内点击目标链接时,它可以正常工作。
我的问题是我还希望在页面加载时直接在外部页面上工作(otherDoc.aspx?a = elementId和if Request.QueryString ...)。问题是它没有滚动到我认为正确的位置,因为所有内容可能没有完全加载,因此元素位置发生变化,这意味着在慢速连接上结果会更糟。我尝试做一个setTimeout来测试延迟,然后滚动到正确的位置。一个选项是在外部链接上做简单的锚点#myAnchor,但平滑的滚动会给人一种更好的感觉。
我的代码:
<script>
$(document).ready(function () {
$(window).scrollTo("#" + elementId, 1000);
});
</script>
有什么建议吗?谢谢!
答案 0 :(得分:7)
$(document).ready()在加载html和head脚本时触发...你应该尝试$(window).load(),因为当包含所有资源的整个页面都被加载时会触发它--I虽然听到一些缓存的图像可能不会计数,但是通过硬刷新来测试它,但你可能会达到预期的效果。
我不知道您的网址,但有时您定位的锚元素的位置可能会影响其高度的样式,或者它是否呈现为块元素,有时可能会在您滚动到的位置播放。如果你能为我的锚元素添加一个top-padding,特别是当它们启动一个SECTION或ARTICLE时,你可以在顶部有一点空间,所以标题文本也不在滚动位置的位置0。