【问题标题】:Responsive navigation - how to get the nav to open/close, when browser is minimized响应式导航 - 如何在浏览器最小化时打开/关闭导航
【发布时间】:2013-04-09 06:11:20
【问题描述】:

我正在制作自己的响应式导航:http://www.hongkiat.com/blog/responsive-web-nav/

这是我的小提琴:http://jsfiddle.net/2Pqch/

当窗口最小化并且您按下打开/关闭按钮时,我希望能够通过单击按钮或单击导航外部来关闭它。

这个功能怎么加?

这是脚本:

$(function() {
            var pull        = $('.btn');
                menu        = $('nav ul');
                menuHeight  = menu.height();

            $(pull).on('click', function(e) {
                e.preventDefault();
                menu.slideToggle();
            });

            $(window).resize(function(){
                var w = $(window).width();
                if(w > 320 && menu.is(':hidden')) {
                    menu.removeAttr('style');
                }
            });
        });

【问题讨论】:

    标签: jquery html css responsive-design


    【解决方案1】:

    你可以这样做:

    http://jsfiddle.net/2Pqch/1/

    我添加了e.stopPropagation(); 以阻止事件冒泡并添加了

           $(document).on('click',function(e){
                if(!menu.is(":hidden")){
                    menu.slideToggle();
                }
            });
    

    它检查菜单是否隐藏,如果没有隐藏,单击document 将再次关闭菜单。执行此操作的更好方法可能是定位内容容器以提示关闭,因为单击 document 上的任意位置将关闭它。

    【讨论】:

    • 我刚刚在我的 iPhone 和外面的点击事件上测试了这个,似乎不起作用?
    • 外部点击事件无法正常工作。它也关闭了主导航
    • @DWTBC 您可以添加一个检查:if(window.innerWidht <= 600) {do the menu stuff} 这样当您显示完整菜单时它不会被触发。
    • @DWTBC 类似 jsfiddle.net/2Pqch/12 的东西会起作用,显然你必须改变它以满足你的需要。
    • @Rchristiani... 抱歉给我带来了麻烦,但是是的,它在窗口全屏时修复了它,但是当您单击其中一个菜单时它仍然关闭,并且单击外部不起作用苹果手机。这可以解决,还是我应该解决?
    【解决方案2】:

    检测是否单击了导航或窗口,如果单击导航,则切换导航。
    否则,如果导航已打开并单击窗口,则切换导航。

          演示 http://jsfiddle.net/2Pqch/2/

    var clickedOnMenu = false;              
    
    $(pull).on('click', function(e) {
        e.preventDefault();
        clickedOnMenu = true;                     
            });
    
        $(window).on('click', function(e) {
    
            if(clickedOnMenu)
            {
                menu.slideToggle();
                clickedOnMenu = false;
            }
            else if ((menu).is(":visible")) {
            menu.slideToggle();
          } 
        });
    

    【讨论】:

    • 外部的点击事件似乎在 Iphone 上不起作用?...有没有办法解决这个问题?
    • 而且它还触发菜单在没有最小化时关闭
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 2019-03-27
    • 1970-01-01
    相关资源
    最近更新 更多