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

标签 javascript jquery

我有一个移动导航,我想根据视口(viewport)滚动的方向隐藏/显示它。因此,如果向下滚动我希望它隐藏,向上滚动我希望它显示。

我当前的代码如下所示。它只是在滚动顶部切换。有人吗?

$(function() {
    $(window).on("scroll touchmove", function () {
        $('.mobile-nav').toggleClass('tiny', $(document).scrollTop() > 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);
});

代码笔:http://codepen.io/anon/pen/dPGggg

关于javascript - 根据滚动方向切换移动导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27381448/

相关文章:

javascript - 使用 Kenwheeler slick carousel 的问题

javascript - 使用 javascript 打开页面时立即显示上传对话框

javascript - 如何向 KendoUI Scheduler 动态添加和删除 GROUPS

javascript - 加一按钮导致 JavaScript 错误

javascript - 编码数据以发送到javascript

javascript - 如何垂直居中导航栏元素并删除右侧导航栏按钮?

javascript - NoUiSlider 在滑动和使用键盘时未发出正确的值

javascript - "Thinking in AngularJS"如果我有 jQuery 背景?

javascript - 如何去除自动对焦属性

javascript - Dreamweaver 窗体按钮