jQuery offset().top 每隔一段时间稍微关闭一次

Jas*_*Lin 3 html javascript css jquery

我试图让父 div 的内部以设定的间隔滚动到下一个子 div。然而,滚动只工作了一半,我不知道为什么。它应该滚动浏览所有 8 个孩子,但只浏览大约一半。

在我制作的这个 jsfiddle 中,当它应该是 ~250px 时,每隔一次偏移量只是 1px。在我的实际代码中,它关闭了 0px,而它应该关闭了 ~250px。

https://jsfiddle.net/rLeLogx0/3/

这是JS:

//scroll to 2nd one first
var index = 1;

setInterval(function(){
    var parent = $('.parent');
    var children = parent.find('.child');
    var target = children.eq(index);   
    var offset = target.offset().top - $('.parent').offset().top;

    //ISSUE: outputs the "same" value every other time
    console.log(target.offset().top);

    parent.animate({
        scrollTop: offset
    }, 200);
    index = (index+1) % children.length;
}, 1000);
Run Code Online (Sandbox Code Playgroud)

Pru*_*rus 5

试试这个来计算你的偏移量:

var offset = target.position().top + parent.scrollTop();
Run Code Online (Sandbox Code Playgroud)

更新 jsfiddle:https ://jsfiddle.net/rLeLogx0/21/

更新:

如果您真的希望您的offset变量包含偏移量,您可以增加scrollTop您的参数中的值.animate()

var target = children.eq(index);

[...]

parent.animate({
    scrollTop: '+='+offset
}, 200);
Run Code Online (Sandbox Code Playgroud)

见jsfiddle:https ://jsfiddle.net/rLeLogx0/23/