【问题标题】:JQuery - Animate Scroll but NOT on click but on ScrollJQuery - 动画滚动但不是点击但滚动
【发布时间】:2015-05-16 16:28:10
【问题描述】:

我知道我可以使用“点击”事件让 jquery 滚动到某个 div,如下所示:

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

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

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

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');
        }
    }); 
}); 

有什么想法吗?! 谢谢

【问题讨论】:

    标签: jquery css scroll jquery-animate


    【解决方案1】:

    我真的不明白你在做什么,但你的 javascript 条件是错误的。 因此,如果您将&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;
    });
    

    【讨论】:

    • 为了给出更多解释,我希望当用户开始向下滚动时,他/她会到达介绍下方的第一个 div。然后,如果他/她滚动的次数超过 jquery,那么他们会滚动到下面的第二个 div。等等 -
      --> 滚动到
      - 滚动到
    • 这是我想要实现的一个示例:mediaboom.com - 你可以向下滚动,你会明白我的意思。
    猜你喜欢
    • 2012-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多