Javascript jQuery滚动到元素后的元素动画

Javascript jQuery滚动到元素后的元素动画,javascript,jquery,css,animation,scroll,Javascript,Jquery,Css,Animation,Scroll,我有一点动画滚动的问题,并已用尽我的调试工作。简而言之,我要做的是在用户点击时滚动到一个打开的面板。用户单击一系列面板中的一个,该面板打开动画,新打开的面板滚动到视图中。很简单 我遇到的问题是,如果我点击一个已经打开的面板下面的面板,滚动会将我新打开的面板拖离屏幕一半。如果我单击已打开面板上方的面板,它可以正常工作。不知道发生了什么事。我正在用CSS设置面板打开的动画,并使用jQuery设置滚动动画。我假设有一些动画队列计时是导致问题的原因,但我不知道。我甚至试图延迟滚动动画,以等待面板完成它的

我有一点动画滚动的问题,并已用尽我的调试工作。简而言之,我要做的是在用户点击时滚动到一个打开的面板。用户单击一系列面板中的一个,该面板打开动画,新打开的面板滚动到视图中。很简单

我遇到的问题是,如果我点击一个已经打开的面板下面的面板,滚动会将我新打开的面板拖离屏幕一半。如果我单击已打开面板上方的面板,它可以正常工作。不知道发生了什么事。我正在用CSS设置面板打开的动画,并使用jQuery设置滚动动画。我假设有一些动画队列计时是导致问题的原因,但我不知道。我甚至试图延迟滚动动画,以等待面板完成它的动画,但这也没有帮助。例如:

$('html, body').delay(1000).animate({scrollTop: $(this).offset().top - 75}, 250);
而不是

$('html, body').animate({scrollTop: $(this).offset().top - 75}, 250);
无论如何,任何帮助都将不胜感激。您可以在此处找到我正在使用的代码:

更新:您可以在此处找到工作代码:


我相信使用超时将有效:

setTimeout(function() {
    $('html, body').animate({scrollTop: $(this).offset().top - 75}, 250);
}, 1000);
或者,jquery animate在动画完成时也将回调作为参数:

$('html, body').animate({scrollTop: $(this).offset().top - 75}, function() {
 //Animation complete, do something now like animate other stuff.
}, 250);
尝试移除.top

  $('html, body').animate({
                scrollTop: $(this).offset() - 75
            }, 250);

在这里检查一下。它起作用了

你发送的链接带有代码。top仍在那里。我从代码中删除了.top,根本没有滚动动画发生。目标是从顶部滚动并打开75像素的面板。哦,对不起。我一定没有保存它。它对我有用。不用担心,谢谢你的帮助。但是动画滚动根本没有发生。面板只是在适当的位置打开,从不从顶部滚动到75像素的视图中。设置超时有效。问题肯定是面板关闭动画。执行原始代码滚动行时,面板高度的值仍表示为展开。使用超时解决了这个问题,因为代码直到超时才执行。有趣的是,延迟函数也以同样的方式工作。谢谢你的帮助!