首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >由于滚动重新启动函数而导致的jQuery动画问题

由于滚动重新启动函数而导致的jQuery动画问题
EN

Stack Overflow用户
提问于 2014-07-06 04:34:08
回答 1查看 374关注 0票数 0

当用户向下滚动时,我有一个导航条滑入的问题。我的代码可以工作--但是如果你继续滚动(上下滚动,或者非常快地向下滚动),条形图的移动速度会很慢,而不是它应该达到的速度。我认为这是因为这个函数重新启动,即使它是在动画的一半,所以它必须移动一半的距离,但保持相同的时间,就好像它要走的整个距离。我发现了一些可能性,但它们都清除了动画队列,我不能这样做,如果我滚动到顶部之前,向下的动画已经完成,导航条仍将是可见的,即使它不应该。因此,基本上我希望导航条顺利地滑入,即使我继续滚动下来,但需要有一些东西阻止我滚动到顶部,导航条仍然可见。谢谢

JSFiddle:

http://jsfiddle.net/bhaZ6/8/

我的代码:

代码语言:javascript
复制
jQuery(document).ready(function() {
    var offset = 220;
    var duration = 500;

    jQuery(window).scroll(function() {
        if (jQuery(this).scrollTop() > offset) {
            jQuery('#nav').stop(true).animate({'top': '0'}, duration, 'linear');
        } else {
            jQuery('#nav').stop(true).animate({'top': '-72px'}, duration, 'linear');
        }
    });
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-06 22:35:08

因为动画只需要运行一次,所以我创建了一个名为position的变量,该变量限制“down”动画多次运行,直到一个“up”动画被调用和副vera为止。感谢adeno的想法

代码语言:javascript
复制
jQuery(document).ready(function() {
    var offset = 220;
    var duration = 300;
    var position = 'up';

    jQuery(window).scroll(function() {
        if (jQuery(this).scrollTop() > offset && position === 'up') {
            jQuery('#nav').stop(true).animate({'top': '0'}, duration, 'linear');
            position = 'down';
        } else if (jQuery(this).scrollTop() < offset && position === 'down'){
            jQuery('#nav').stop(true).animate({'top': '-72px'}, duration, 'linear');
            position = 'up';
        } else {
            return;
        }
    });
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24592738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档