我在页面顶部有一个绝对定位的菜单,比方说高50px。因此,当有人访问我网站上的网址时,例如:
http://www.example.com/page.html#anchor
页面滚动50px太高(菜单覆盖)。
我正在尝试这样做,以便每次使用内部锚点访问链接时,页面将偏移50px,但这不起作用:
if (document.location.href.indexOf('#') > -1) {
var leavespace = 50;
$('html,body').animate({scrollTop:leavespace}, 'slow');
}
我得到了慢速动画滚动,但它仍然是50px太高。
答案 0 :(得分:1)
您的代码有效,请确保您已准备就绪
$( document ).ready(function() {
if (document.location.href.indexOf('#') > -1) {
var leavespace = 50;
$('html,body').animate({scrollTop:leavespace}, 'slow');
}
});
答案 1 :(得分:1)
您可以将hashchange
事件用于此目的:
$(window).on("hashchange", function () {
var leavespace = 50
window.scrollTo(window.scrollX, window.scrollY + leavespace);
});
答案 2 :(得分:0)
要使其不使用jquery,我实现了它(基于Elena的响应):
window.onhashchange = function (){
var leavespace = 50
window.scrollTo(window.scrollX, window.scrollY - leavespace);
};