jquery滚动到元素问题

时间:2018-05-26 16:30:18

标签: jquery html

我遇到固定导航和滚动到元素位置的问题。这样做的是,如果我点击链接(锚点),它会按照我的意愿在元素之前缓慢滚动,但然后它会向下跳几个像素。问题在于 - > $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;
                 });
            });
        })

1 个答案:

答案 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
        });
    });
});