【问题标题】:Toggle nav based on screen resize根据屏幕调整大小切换导航
【发布时间】:2015-10-19 17:45:25
【问题描述】:

我正在使用 Bootstrap 3 构建网站,尤其是导航折叠功能。我让它工作,以便在小屏幕上主导航折叠,然后显示在大屏幕上。

我遇到的问题是标题在大屏幕上是固定的,并且我被要求将主导航默认折叠,并在用户悬停或单击标题中的任何位置(对于较大的手持设备)时出现。我通过检查窗口大小并相应地隐藏导航来实现其中的一些。

我遇到的问题是,当调整窗口大小时,它会使导航多次打开和关闭。另外,我不希望这个脚本在小屏幕上工作,因为它使用 Bootstraps 折叠功能。

这就是我所拥有的。

HTML:

<header class="navbar-fixed-top" id="header">
    <div class="top">
        <div class="logo">
            Logo here
        </div>
    </div>
    <nav class="navbar navbar-default" id="main-navbar">
        <div class="container-fluid">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div class="navbar-header">
                <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#main-navbar-collapse" aria-expanded="false">
                    <span class="sr-only">Toggle navigation</span>
                </button>
            </div>
            <!-- Collect the nav links, forms, and other content for toggling -->
            <div class="collapse navbar-collapse" id="main-navbar-collapse">
                <ul class="nav nav-justified">
                    <li class=""><a href="#">Item 1</a></li>
                    <li class=""><a href="#">Item 2</a></li>
                    <li class=""><a href="#">Item 3</a></li>
                    <li class=""><a href="#">Item 4</a></li>
                </ul>
            </div><!-- /.navbar-collapse -->
        </div><!-- /.container-fluid -->
    </nav>
</header>

JS:

var $window = $(window);

function checkWidth() {
    var windowsize = $window.width();

    if (windowsize >= 768) {
        $('#main-navbar').hide();
        $('#header').hover( function() {
            $('#main-navbar').slideToggle();
        } );
    } else {
        $('#main-navbar').show();
    }
};

// Check the width on load.
checkWidth();

// Bind event listener everytime the window size changes.
$(window).resize(checkWidth);

Here's the fiddle.

如何让脚本多次停止运行并在每次调整屏幕尺寸时重置?

谢谢

【问题讨论】:

    标签: jquery twitter-bootstrap navbar


    【解决方案1】:

    不要使用$('#main-navbar').slideToggle();

    使用$('#main-navbar').slideDown();

    $('#main-navbar').slideToggle(); 将触发不间断。

    另外考虑:.mouseenter().mouseleave() 监听悬停和鼠标何时离开悬停目标。

    ======

    if (windowsize >= 768) {
        $('#main-navbar').hide();
        $('#header').hover( function() {
            $('#main-navbar').slideToggle();
        } );
    } else {
        $('#main-navbar-collapse').hide();
        $('.navbar-toggle').on('click', function(){
            $('#main-navbar-collapse').toggle();
        });
    }   
    

    【讨论】:

    • 谢谢。它解决了我的一些问题,多重打开。但是我需要做的另一部分是在较小的设备(小于 768)上显示#main-navbar 并删除鼠标输入功能。调整大小后,我的脚本似乎对小屏幕没有任何作用。
    猜你喜欢
    • 1970-01-01
    • 2022-11-05
    • 1970-01-01
    • 2017-01-19
    • 2013-08-30
    • 2017-12-02
    • 1970-01-01
    相关资源
    最近更新 更多