根据滚动方向切换移动导航

时间:2014-12-09 14:33:52

标签: javascript jquery

我有这个移动导航,我想隐藏/显示取决于视口滚动的方向。所以如果向下滚动我希望它隐藏,向上滚动我希望它显示。

我当前的代码看起来像这样。它只是在滚动顶部切换。任何人吗?

$(function() {
    $(window).on("scroll touchmove", function () {
        $('.mobile-nav').toggleClass('tiny', $(document).scrollTop() > 0);
    });
});

1 个答案:

答案 0 :(得分:0)

也许是这样的:

var menu_height = 80;
var menu_visible = true;
var old_scroll = $(window).scrollTop();

function checkMenu() {
    new_scroll = $(window).scrollTop();
    if (old_scroll < new_scroll && new_scroll > 0) {
        // Scroll down
        if (menu_visible == true) {
            toggleMenu();
        }
    } else if (old_scroll > new_scroll) {
        // Scroll up
        if (menu_visible != true) {
            toggleMenu();
        }
    }
    old_scroll = new_scroll;
}

function toggleMenu() {
    if (menu_visible == true) {
        // Hide
        $('#menu').animate({top: '-='+menu_height+'px'}, 200, function(){ $(this).css('display', 'none') });
        menu_visible = false;
    } else {
        // Show
        menu_visible = true;
        $('#menu').css('display', 'block').animate({top: '+='+menu_height+'px'}, 200);
    }
}

$(document).ready(function() {
    // Show / hide menu on scroll
    setInterval(checkMenu, 100);
});

Codepen:http://codepen.io/anon/pen/dPGggg