当用户向下滚动页面时,如何导航到锚标记?

时间:2016-05-07 03:14:39

标签: javascript jquery html css

我环顾四周,但我发现的所有答案只有在用户位于页面顶部时才有效 - 否则,它会将用户带到错误的位置,因为它没有&#39 ; t考虑用户向下滚动页面的程度。这就是我现在正在尝试的内容(' .sidebar a'是指向侧边栏中锚标记的链接,' .site-wrap'是可滚动的格):

$('.sidebar a').click(function() {
  var $url = $(this).attr('href');
  var $offset =  $($url).offset(); //Getting the position of the anchor
  var $currPos = $('.site-wrap').scrollTop(); //Getting the current scrolled position
  $('.site-wrap').animate({
    scrollTop: $offset.top - $currPos
  }, 1000);
  return false;
});

我似乎无法弄清楚它为什么不起作用。我是一个新手,所以它可能是微不足道的,但我会欣赏正确方向的任何指针。

1 个答案:

答案 0 :(得分:0)

如果我没有弄错的话,你只想滚动元素的位置,无论当前的滚动位置如何。

所以应该将当前滚动位置从等式中取出并使用jQuery的 .position 函数而不是 .offset

$('.sidebar a').click(function() {
  var $url = $(this).attr('href');
  var $offset =  $($url).position(); //Getting the position of the anchor
  $('.site-wrap').animate({
    scrollTop: $offset.top
  }, 1000);
  return false;
});

如果当前元素是 .site-wrap 的直接子元素,则此方法有效。