根据屏幕调整大小切换导航

时间:2015-10-19 17:45:25

标签: jquery twitter-bootstrap navbar

我正在使用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

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

由于

1 个答案:

答案 0 :(得分:0)

请勿使用$('#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();
    });
}