我有一个按钮,按下时滚动到“目标”div。按钮和目标div将作为外部小部件注入站点。按钮的功能:
scrollToElement = function() {
jQuery([document.documentElement, document.body]).animate({
scrollTop: jQuery(".targetElementClass").offset().top - 10
}, 1000);
//other code
}
似乎在页面加载时,第一次按下按钮会滚动到页面的不同位置。这只会在页面加载期间发生,因为在加载期间,在滚动顶部计算和“目标”div的实际位置之间似乎存在某种竞争条件。
我想到了“停止(真的,真的)。动画(……”),但当我从文档中阅读时,它可以停止页面上的其他动画,因此我认为它可能会干扰客户网站的功能,我排除了这一点(如果我错了,请让我知道)。
除了停止功能外,我是否还有其他选项来尝试解决此问题?另外,我想知道是否其他代码执行“jquery().stop()”会导致这种行为,是否有某种方法可以解决这种冲突?
2条答案
按热度按时间iezvtpos1#
我有一个很小的Scroll函数,我认为它工作得很好,而且非常动态。您只需创建一个按钮,并在onclick括号中添加您的目标id/类。首先,在.html文件中需要一个如下所示的按钮:
然后在javascript/jquery文件中使用以下命令:
如果要在加载页面时运行该函数,可以使用以下命令:
向马克斯问好
798qvoo82#
似乎我的直觉是正确的,在我的小部件停止滚动动画后加载的某些元素,在动画的“完成”和“失败”功能上添加额外的动画后,滚动现在到达了正确的位置(尽管有点缓慢)。
其结果是,如果出现故障,或者有什么东西在实际完成之前将动画标记为已完成,则会生成另一个动画。这是不完美的,因为滚动有时似乎落后,我认为更多的调整是必要的。