我遇到固定导航和滚动到元素位置的问题。这样做的是,如果我点击链接(锚点),它会按照我的意愿在元素之前缓慢滚动,但然后它会向下跳几个像素。问题在于 - > $target.offset().top -50
//如果我删除负值(-50)窗口滚动到元素但我的固定导航覆盖元素一点点但没有跳转...我如果我添加负值窗口滚动元素之前然后它被迫跳下来,我真的不知道为什么......
$(".anchor").each(function () {
$(this).click(function(e) {
e.preventDefault();
var target = this.hash;
$target = $(target);
$('html, body').animate({
scrollTop: $target.offset().top -50
}, 2000, function () {
window.location.hash = target;
});
});
})
答案 0 :(得分:1)
问题不在于-50
偏移;问题是关于在动画完成后设置哈希。这将使页面跳转到原始哈希位置。您需要在动画完成时删除添加哈希:
$(".anchor").each(function () {
$(this).click(function(e) {
e.preventDefault();
var target = this.hash;
$target = $(target);
$('html, body').animate({
scrollTop: $target.offset().top - 50
});
});
});