当页面在 url 中使用锚点(片段)加载时,我希望它居中而不是滚动的默认行为,因此锚定元素位于屏幕顶部。
以下是我想要的:
var $targetDiv = $(window.location.hash);
if ($targetDiv) {
var $window = $(window);
$window.scrollTop($targetDiv.offset().top - ($window.height() / 2));
}
但是,当我在 document.ready 上运行此程序时,十分之九的页面加载时元素位于顶部,而不是居中。
jsFiddle(注意我使用<div>
的是 id,而不是<a>
名称,但效果是一样的)
使用#middle 锚点转到页面的结果。
如果我不得不猜测,似乎浏览器正在完成它的工作并在 ready 事件触发后滚动到元素的顶部。以锚定元素为中心加载页面的正确方法是什么?