停止在jquery中的某个点滚动

时间:2015-11-25 08:38:56

标签: javascript jquery scroll

我需要使用jQuery创建到ID的平滑滚动。

这是我的代码:

  var $root = $('html, body');
  $('a[href*=#]').click(function() {
      var href = $.attr(this, 'href');
      $root.animate({
          scrollTop: $(href).offset().top
      }, 500, function () {
          window.location.hash = href;
      });
      return false;
  });

它对我来说很好。但有一点,我需要停止在页面顶部的某个点滚动。例如,从顶部开始200px

在此阶段,它始终滚动到页面顶部。

有人可以告诉我如何修改此代码吗? 谢谢。

3 个答案:

答案 0 :(得分:0)

添加:

(($(href).offset().top >= 200 ) ? $(href).offset().top : 200)

它检查元素远离顶部的距离,如果它超过200px它将滚动到它,否则它将从顶部滚动到200px

这是新代码:

  var $root = $('html, body');
  $('a[href*=#]').click(function() {
      var href = $.attr(this, 'href');
      $root.animate({
          scrollTop: (($(href).offset().top >= 200 ) ? $(href).offset().top : 200)
      }, 500, function () {
          window.location.hash = href;
      });
      return false;
  });

答案 1 :(得分:0)

如果我理解正确的话,您可以使用高度为标题的内容,例如200pxposition:fixed。并且您当前的脚本滚动得太高,隐藏了标题下的哈希标题。

因此,如果这是正确的,您只需要从$(href).offset().top中减去标题高度(例如scrollTop: $(href).offset().top-200

jsFiddle

答案 2 :(得分:0)

将此行scrollTop: $(href).offset().top更改为scrollTop: $("body").offset().top + 200

这将占据真正的顶部位置(0)然后你可以操纵你需要的位置滚动