上下文我有一个导航栏,它触发我的主要内容容器上的 scrollTo 功能以滚动到相应的部分。我使用jscrollpane插件在这个容器上有一个纯 JavaScript 滚动条。它使我可以访问自定义事件“jsp-scroll-y”,该事件侦听鼠标滚动事件到容器中的给定位置。
我的导航栏上还有一些动画,它们在显示导航栏选项卡的部分时为其着色。 问题:我想实现一个滚动间谍,以便当滚动条在一定范围内时,告诉我显示哪个部分,我想为正确的导航栏选项卡设置动画。但是,当通过单击导航栏选项卡之一进行滚动时,我不希望此动画起作用,因为如果我从第一个元素开始滚动到最后一个元素,它将为中间的每个元素设置动画,因为 scrollspy 会检测到我们通过了通过每个部分。
我的解决方案不起作用:我放置了我认为相关的代码和伪代码,但如果需要,我可以提供完整代码。
可能的解释:经过一番调查,问题似乎是由于 scrollTo 方法是动画的,因此需要一些时间才能完成,但代码继续前进并在动画实际出现之前重新附加 scroll-spy 事件完全的。我认为这意味着我必须找到一种方法来完成 scrollTo 动画,然后我可以重新附加事件处理程序。
function navbarclickEvent(navbarElement, navbarId){
//detach scrollspy from jspPane, reattach after scrollTo to prevent switching through all sections.
scrollbar.off('jsp-scroll-y');
// navbar animation logic
//scrolling to sections
scrollbar.on('jsp-scroll-y');
return false;
}
function scrollspy(event, scrollPositionY, isAtTop, isAtBottom){
//logic to animate proper navbar tab depending on section displayed
}
scrollbar.bind('jsp-scroll-y',scrollspy); // in main code.