滚动不起作用时的动画 - JQuery

时间:2017-06-05 21:59:14

标签: javascript jquery html css animation

我有一个网站,当你滚动时,它会“平滑地”(在jquery中使用动画滚动顶部)到另一个部分,拒绝滚动到另一个网站。现在,我想要做的是当你滚动到section2时,元素会显示一些动画,当你离开它时,它会消失,依此类推......

我这样做但它只在我刷新页面时才有用,我已经在那个部分了。在其他情况下,它不起作用。我认为它不起作用,因为当你调用$(window).scrollTop()它会立即返回scrollTop,但它实际上应该等待750ms才能完成滚动动画。我尝试使用setTimeOut和其他东西,但我无法让它运行。

以下是代码:

function animacionObjetosDeSections() {
$(window).scroll(function() {
    //each height of the sections
    var altoSection2 = $('#section2').offset().top;
    var altoSection3 = $('#section3').offset().top;

    //if scrolltop is the same to the height of section2, it displays the animation, else it returns to original state
    if ($(window).scrollTop() == altoSection2) {
        $('.view-of-page').animate({left: '2%'},600);
        $('.page-info h2').animate({opacity: 1}, 650);
    } else {
        $('.view-of-page').animate({left: '-50%'},600);
        $('.page-info h2').animate({opacity: 0}, 650);
    }
});

}

修改

知道它有效,但对于每个滚动它识别为30个滚动事件,我必须等待那30个事件* 750毫秒才能使该功能再次工作。

CODE:

function animacionObjetosDeSections() {
$(window).scroll(function() {
    setTimeout(function() {
    //each height of the sections
    var altoSection2 = $('#section2').offset().top;
    var altoSection3 = $('#section3').offset().top;

    //if scrolltop is the same to the height of section2, it displays the animation, else it returns to original state
    if ($(window).scrollTop() == altoSection2) {
        alert("hola");
        $('#section2 .view-of-page').animate({left: '2%'},600);
        $('#section2 .page-info h2').animate({opacity: 1}, 650);
    } else {
        $('#section2 .view-of-page').animate({left: '-50%'},600);
        $('#section2 .page-info h2').animate({opacity: 0}, 650);
    }
        },701);
});

}

1 个答案:

答案 0 :(得分:0)

当您到达该部分时,

使用slideup()slidedown()功能。 例如,当您滚动到section2时,在div节上使用slidedown()函数,它将显示动画,当您离开该部分时,使用slideup()函数,您的部分将随动画消失。