我有一个带有固定标题的页面,我希望像http://example.com#foo
这样的网址滚动到带有id=foo
的元素,并减去标题的高度,以便元素可见。
我已尝试过以下操作,但至少在Chrome中,此代码在默认文档片段滚动发生之前运行,因此滚动位置会被覆盖:
$(function() {
var offset;
if (window.location.hash !== "") {
offset = $(window.location.hash).offset().top;
return $("body").scrollTop(offset - headerHeight);
}
});
的问题
答案 0 :(得分:0)
我能够通过将DOM元素的id
更改为当前id + _section
然后侦听hashchange
事件来设置滚动位置来实现此功能的页面。
我还必须在页面加载时触发hashchange
以使其在第一页加载时工作。
$(function() {
$(window).on('hashchange', function() {
var elemId, headerHeight, offset;
elemId = window.location.hash + "_section";
if (window.location.hash !== "" && $(elemId).length) {
headerHeight = $('header').height();
offset = $(elemId).offset().top;
return $("html, body").scrollTop(offset - headerHeight);
}
});
$(window).trigger('hashchange');
});