如何用溢出来动画div的滚动位置:auto?

时间:2015-10-07 22:00:48

标签: javascript jquery

我正在尝试创建一个函数,该函数将div或body滚动到元素的位置。目前它看起来像:

function scrollTo($elem, offset, delay, $context){
    delay = delay || 800;
    offset = offset || 0;
    $context = $context || $('html, body');
    $context.animate({
        scrollTop: $elem.offset().top-offset
    }, delay);
}

它在正文上运行正常,但是,当我给它$ context时,第一个调用按预期工作,但所有连续调用都滚动到错误的位置。

为什么这种行为以及如何解决? FIDDLE

1 个答案:

答案 0 :(得分:1)

offset().top测量从页面顶部到元素的距离。

  • 点击.1后,到页面顶部的偏移距离为300
  • 现在.large的{​​{1}}滚动到该位置后,-300偏移变为.10变为300,.2变为.3
  • 因此您需要减去600的偏移量以获得真实位置。

代码

.large

这是jsfiddle https://jsfiddle.net/a8jc5q6r/4/