JQuery - 动画滚动但不是点击而是滚动

标签 jquery css scroll jquery-animate

我知道我可以使用“click”事件并使 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');
        }
    }); 
}); 

有什么想法吗?! 谢谢

最佳答案

我真的不明白你在做什么,但你的 javascript 条件是错误的。 所以如果你把 < 990在第一个条件中,所有 height < 990 都将转到那个结果,它永远不会转到第二个 if。 请参阅此更新后的代码。

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

关于JQuery - 动画滚动但不是点击而是滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30278073/

相关文章:

javascript - outerHeight() 和 height() 给出 0,在事件中元素显示为 "display: block"之后

Android listView 找到滚动的像素数量

css - 是什么导致某些 iOS 网页在滑动手指松开时不继续滚动?

html - 在页面上方滑动内容而不是向下滚动到它

jquery - 指向同一页面上的位置的链接不匹配

javascript - 如何使用 JavaScript 对从 JSON 数据生成的 HTML Div 使用搜索/过滤器?

javascript - Bootstrap : Modal closing while inputs not filled

php - 尝试创建干净的 url 时 css 消失

jquery - 如何使用 jQuery 增加字体大小变化?

html - 我如何在 .net 中导入 LESS CSS?