jQuery滚动到正确的位置

jQuery滚动到正确的位置,jquery,scroll,Jquery,Scroll,我们使用一些jQuery使我们的导航从页面上的某个点开始保持粘性,并向页面上的各个部分添加一个活动类。 但是当我们点击一个锚URL时,它不会滚动到正确的位置。 它会向下滚动很远,而不是滚动到正确的位置 我在这里复制了我们的完整代码: 我们使用这个jQuery: $(window).scroll(function(){ var sticky = $('.menu-header-product'), scroll = $(window).scrollTop(); if (sc

我们使用一些jQuery使我们的导航从页面上的某个点开始保持粘性,并向页面上的各个部分添加一个活动类。 但是当我们点击一个锚URL时,它不会滚动到正确的位置。 它会向下滚动很远,而不是滚动到正确的位置

我在这里复制了我们的完整代码:

我们使用这个jQuery:

 $(window).scroll(function(){
  var sticky = $('.menu-header-product'),
      scroll = $(window).scrollTop();

  if (scroll >= 50) sticky.addClass('sticky');
  else sticky.removeClass('sticky');
});
$(window).scroll(function(){
  var sticky = $('.content'),
      scroll = $(window).scrollTop();

  if (scroll >= 50) sticky.addClass('sticky');
  else sticky.removeClass('sticky');
});
    $(document).ready(function () {
        $(document).on("scroll", onScroll);

        $('a[href^="#"]').on('click', function (e) {
            e.preventDefault();
            $(document).off("scroll");

            $('a').each(function () {
                $(this).removeClass('active');
            })
            $(this).addClass('active');

            var target = this.hash;
            $target = $(target);
            $('html, body').stop().animate({
                'scrollTop': $target.offset().top+2
            }, 500, 'swing', function () {
                window.location.hash = target;
                $(document).on("scroll", onScroll);
            });
        });
    });

    function onScroll(event){
        var scrollPosition = $(document).scrollTop();
        $('nav a').each(function () {
            var currentLink = $(this);
            var refElement = $(currentLink.attr("href"));
            if (refElement.position().top <= scrollPosition && refElement.position().top + refElement.height() > scrollPosition) {
                $('nav ul li a').removeClass("active");
                currentLink.addClass("active");
            }
            else{
                currentLink.removeClass("active");
            }
        });
    }
$(窗口)。滚动(函数(){
var sticky=$('.menu-header-product'),
scroll=$(窗口).scrollTop();
如果(滚动>=50)sticky.addClass('sticky');
else sticky.removeClass('sticky');
});
$(窗口)。滚动(函数(){
var sticky=$('.content'),
scroll=$(窗口).scrollTop();
如果(滚动>=50)sticky.addClass('sticky');
else sticky.removeClass('sticky');
});
$(文档).ready(函数(){
$(文档).on(“滚动”,onScroll);
$('a[href^=“#“]”)。关于('click',函数(e){
e、 预防默认值();
$(文档)。关闭(“滚动”);
$('a')。每个(函数(){
$(this.removeClass('active');
})
$(this.addClass('active');
var target=this.hash;
$target=$(target);
$('html,body').stop().animate({
'scrollTop':$target.offset().top+2
},500,'swing',函数(){
window.location.hash=目标;
$(文档).on(“滚动”,onScroll);
});
});
});
函数onScroll(事件){
var scrollPosition=$(document.scrollTop();
$('nav a')。每个(函数(){
var currentLink=$(此);
var refElement=$(currentLink.attr(“href”);
if(refElement.position().top滚动位置){
$('nav ul li a')。删除类(“活动”);
currentLink.addClass(“活动”);
}
否则{
currentLink.removeClass(“活动”);
}
});
}

我们如何解决这个问题

sdghasimi是正确的解决方案--


滚动时是否排除了页眉高度?非常感谢!:)效果很好
your page has a fixed menu header which appears on scroll.
just subtract the height in your js

**change on line 30 of your js code**

$('html, body').stop().animate({
  'scrollTop': $target.offset().top-130 /**just subtract the height of the fixed html part */
 }, 500, 'swing', function () {
    window.location.hash = target;
    $(document).on("scroll", onScroll);
});