简体   繁体   中英

How to make nav bar collapse only when in moble view

I am having issues with the nav bar collapsing when in full screen view. I want the nav bar to collapse in the hamburger via the mobile screen and i wrote a custom directive. Now when in full screen and you click a link the nav bar collapses and is causing an annoying flicker! Any ideas or help would be greatly appreciated! Here is my code:

js:

.directive('collapseMenu', function () {
    return {
        link: function (scope, elem, attrs) {
            $('.nav a').on('click', function(){
                $('.navbar-toggle').click() 
            });
        }
    }
});

html:

<!-- Navigation -->
    <nav class="navbar navbar-default" role="navigation">
        <div class="container">
            <!-- Brand and toggle get grouped for better mobile display -->
            <div collapse-menu class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-collapse-1">
                    <span class="sr-only">Show Menu</span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
                <!-- navbar-brand is hidden on larger screens, but visible when the menu is collapsed -->
                <a class="navbar-brand" href="#/home"></a><a <img src="images/phone.png" alt="press to call"></a>
            </div>
            <!-- Collect the nav links, forms, and other content for toggling -->
            <div  class="collapse navbar-collapse" id="navbar-collapse-1" >
                <ul class="nav navbar-nav">
                    <li><a class="home" href="#/home">Home</a></li>
                    <li><a class="about" href="#/about">About</a></li>
                    <li><a class="con" href="#/contact">Contact</a></li>
                    <li><a class="review" href="#/review">Reviews</a></li>
                    <li><a class="admin" href="#/admin">Admin</a></li>
                </ul>
            </div>
        </div>
    </nav>

So, if you want to eliminate the collapse on larger screens, you'll have to add a screen width check to your link click function. And, if it's less than a certain size, you fire off the .navbar-toggle click function. Otherwise, you do nothing. You could check the screen width using $(window).width() . So, your directive code would become:

.directive('collapseMenu', function () {
    return {
        link: function (scope, elem, attrs) {
            $('.nav a').on('click', function(){
                if ($(window).width() <= 1200) {
                  $('.navbar-toggle').click(); 
                }
            });
        }
    }
});

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM