JQuery - Animate Scroll但不是点击,而是滚动

时间:2015-05-16 16:28:10

标签: jquery css scroll jquery-animate

我知道我可以使用"点击" event并使jquery滚动到某个div,如下所示:

('a').click(function(){
    $('html, body').animate({
        scrollTop: $( '#div' ).offset().top
    }, 500);
    return false;
});

我想要做的是检测一个滚动,然后根据窗口的高度,使jquery滚动到不同的位置。

我尝试了以下部分工作,但是一旦触发了animate事件,它就不允许我滚动回顶部。

function goToByScroll(id){
    $('html,body').animate({
        scrollTop: $("#"+id).offset().top},
        'slow');
}
$( document ).ready(function() {
    $(window).scroll(function() {
        if ($(this).height() < 990) {
            goToByScroll('about');
        }else if($(this).height() < 500){
            goToByScroll('contact');
        }
    }); 
}); 

任何想法?! 感谢

1 个答案:

答案 0 :(得分:0)

我真的不知道你在做什么,但你的javascript条件错了。 因此,如果您将< 990置于第一个条件中,则所有高度&lt; 990将会达到这个结果,如果是,它将永远不会进入第二个。 请参阅此更新的代码。

function goToByScroll(id){
    $('html,body').animate({
        scrollTop: $("#"+id).offset().top},
        'slow');
}

var lastScrollTop = 0;
$(window).scroll(function(event){
    var scrollTop = $(this).scrollTop();
    if (scrollTop > lastScrollTop){
        // downscroll code
        if (scrollTop < 500) {
            goToByScroll('contact');
        }else if(scrollTop < 990){
            goToByScroll('about');
        }
    } else {
        // upscroll code
        if (scrollTop > 990) {
            goToByScroll('about');
        }else if(scrollTop > 500){
            goToByScroll('contact');
        }
    }
    lastScrollTop = scrollTop;
});