我正在尝试创建一个函数,该函数将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
答案 0 :(得分:1)
offset().top
测量从页面顶部到元素的距离。
.1
后,到页面顶部的偏移距离为300
。.large
的{{1}}滚动到该位置后,-300
偏移变为.1
,0
变为300,.2
变为.3
。600
的偏移量以获得真实位置。代码
.large
这是jsfiddle https://jsfiddle.net/a8jc5q6r/4/