Jquery平滑滚动偏移量

Jquery平滑滚动偏移量,jquery,smooth-scrolling,Jquery,Smooth Scrolling,我正在制作一个单页站点,中间顶部有粘性导航,宽度约为1000px,高度约为20-25px,现在我还包括了平滑滚动功能,但我的问题是,每当页面滚动到它的活动页面时,标题隐藏在粘性导航下,我如何获得粘性导航底部的偏移量?谢谢 这是js代码顺便说一下: $('a').click(function(e) { var target = $(this).attr('href'); e.preventDefault(); $('html,body').anim

我正在制作一个单页站点,中间顶部有粘性导航,宽度约为1000px,高度约为20-25px,现在我还包括了平滑滚动功能,但我的问题是,每当页面滚动到它的活动页面时,标题隐藏在粘性导航下,我如何获得粘性导航底部的偏移量?谢谢

这是js代码顺便说一下:

$('a').click(function(e) {
        var target = $(this).attr('href');
        e.preventDefault();

        $('html,body').animate({
            scrollTop: $(target).offset().top
        }, 800, 'easeInOutCirc');
    });
jQuery的
.position()
方法将提供元素相对于页面的顶部和左侧偏移量。因此,您只需将粘性导航的
.outerHeight()
添加到它的
.position().top

下面是一个例子:


当您在页面中向下滚动时,您将看到其位置得到更新。

保持当前代码不变并将其添加到网站顶部的最简单方法是在.top之后添加所需的偏移值,如下所示:

$('a').click(function(e) {
    var target = $(this).attr('href');
    e.preventDefault();

    $('html,body').animate({
        scrollTop: $(target).offset().top - 20
    }, 800, 'easeInOutCirc');
});
希望这个答案没有上一个那么复杂。:)

参见

方法:我们使用document.getElementById('header')获得固定导航的高度 并将滚动条偏移到此值

var jump=function(e){  

e.preventDefault();                        //prevent "hard" jump
  var target = $(this).attr("href");       //get the target

      //perform animated scrolling
      $('html,body').animate(
        {
          scrollTop: $(target).offset().top - document.getElementById('header').offsetHeight - 5  //get top-position of target-element and set it as scroll target
        },1000,function()                  //scrolldelay: 1 seconds
        {
          location.hash = target;          //attach the hash (#jumptarget) to the pageurl
        });
      }

  $(document).ready(function()
  {
    $('a[href*="#"]').bind("click", jump); //get all hrefs
    return false;
  });
附言:

  • 它包括一个不错的头部和目标之间的5像素差
  • 滚动效果不硬,比较平滑;平滑滚动

呃,对不起,但是我应该把它放在哪里或者怎样放?我对js真的很陌生。谢谢。我编辑了我的答案,既包括了一个示例,也更正了一个错误:jQuery没有“.pos()”方法——它被称为“.position()”。好的,现在我得到了outerHeight,它是“20”。但是我应该把这个“20”放在哪里?我在scrollTop:$(target.offset({top:20}).top上尝试了它。但它没有平滑滚动。非常感谢!你不需要把20放进去,而是直接为你的变量计算。看看他的例子吉姆——我很难从你上次的评论中理解这个问题。如果您可以创建一个JSFIDLE,那将非常有帮助。