0

我正在使用对象中的函数将侧面板转换为滚动时的顶部面板。

看起来像这样(我“缩小了代码并删除了对象名称”):

$(document).on("scroll", vars.stickyNav );

var vars = { ... etc

    undoStick: function() {
        vars.sticked = false; 
        vars.stickyMenu.removeClass('_sticked');

        return vars.stickyMenu.animate({ 'top': '-60px' }, 0, function() {
            vars.clone.css({'left':-32,display:'none'});
        });
    },

    stickyNav: function() {
        if ( ! vars.sticked && vars.stickyHeight <= vars.scrollTop ) {
            vars.sticked = true;

            return vars.stickyMenu.addClass('_sticked').animate({ 'top': '40px'}, 0, function(){
                vars.clone.show(null);
                vars.clone.css('left',0);
            });
        } 
        else if ( vars.sticked && vars.stickyTop >= vars.scrollTop ) {
            return vars.undoStick();
        }
    }
}

问题在于..如果我从页面底部的某个地方快速滚动到页面顶部,面板不会粘在一边。如果我滚动正常/慢速/正常快速它可以工作。

大多数变量是在滚动函数之外定义的。有一个附加的滚动函数绑定到窗口,它在滚动时更新 $(window).scrollTop() 变量。

这种行为的原因可能是什么?动画函数设置为 0ms 。

PS:有一个 css 过渡(三次贝塞尔曲线)。

4

1 回答 1

0

发现了问题。如果我将动画()转换为 css(),一切正常。谢谢。

对不起,要快。它工作得更好,但并非总是如此。

于 2014-02-10T03:58:04.830 回答