【问题标题】:Choosing how far you scroll before a jquery animate activates选择在激活 jquery 动画之前滚动多远
【发布时间】:2026-02-03 23:45:01
【问题描述】:

我有这个代码

$(window).load(function () {
            $elem1 = $('#div1');
            $elem2 = $('#div2');
            var scrollState = 'top';
            $(window).scroll(function () {
                var scrollPos = $(window).scrollTop();
                if ((scrollPos != 0) && (scrollState === 'top')) {
                    $elem1.stop().animate({
                        opacity: '1.0'
                    }, 300);
                    $elem2.stop().animate({
                        marginLeft: '50px'
                    }, 300);
                    scrollState = 'scrolled';
                } else if ((scrollPos === 0) && (scrollState === 'scrolled')) {
                    $elem1.stop().animate({
                        opacity: '0.0'
                    }, 300);
                    $elem2.stop().animate({
                        marginLeft: '0px'
                    }, 300);
                    scrollState = 'top';
                }
            });
}); //]]>

当我向下滚动页面时,jquery 会在您开始滚动时立即激活。我希望能够选择在页面激活之前您要走多远。

【问题讨论】:

    标签: jquery html scroll jquery-animate


    【解决方案1】:

    你不能只检查一下 scrollPos 的值吗?

    if(scrollPos > X && (scrollState === 'top')) {
        //activate
    } else {
        //do nothing
    }
    

    【讨论】:

    • 还需要什么吗?如果这就是您所需要的,您可以将其标记为正确答案吗?
    • 我必须使用大于或小于符号 if ((scrollPos >= 500) && (scrollState === 'top')) { //activate scrollState = 'scrolled'; } else if ((scrollPos
    【解决方案2】:

    您可以使用$(document).scrollTop() (docs) 了解您向下滚动了多远。

    【讨论】: