Bootstrap 4 navbar flyout - styling issues

I’ve got a bootstrap 4 navbar. How to collapse the nav if they click anywhere off the expanded nav.

Here is a codepen

<nav class="navbar  navbar-dark bg-dark  d-flex">
  <div class="container">
    <a class="navbar-brand order-2" href="#"><img src="https://via.placeholder.com/210x40?text=logo

C/O https://placeholder.com/"></a>
    
    <button class="navbar-toggler order-1" type="button" data-toggle="collapse" data-target="#navFlyout" aria-controls="navFlyout" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>

    <div class="collapse navbar-collapse" id="navFlyout">
     
      <div class="close">
        <span data-toggle="collapse" data-target="#navFlyout" aria-controls="navFlyout" >X</span>
      </div>
      
      <ul class="navbar-nav mr-auto">
        <li class="nav-item active">
          <a class="nav-link" href="#">Home</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Link</a>
        </li>
        <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" href="#" id="dropdown01" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dropdown</a>
          <div class="dropdown-menu" aria-labelledby="dropdown01">
            <a class="dropdown-item" href="#">Action</a>
            <a class="dropdown-item" href="#">Another action</a>
            <a class="dropdown-item" href="#">Something else here</a>
          </div>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Another Link</a>
        </li>
        <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" href="#" id="dropdown01" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dropdown 2</a>
          <div class="dropdown-menu" aria-labelledby="dropdown01">
            <a class="dropdown-item" href="#">Action</a>
            <a class="dropdown-item" href="#">Another action</a>
            <a class="dropdown-item" href="#">Something else here</a>
          </div>
        </li>
      </ul>
      
<ul class="list-inline nav-social">
        <li class="list-inline-item"><a href="#"><i class="fab fa-facebook-f"></i></a> </li>
        <li class="list-inline-item"><a href="#"><i class="fab fa-twitter"></i></a> </li>
        <li class="list-inline-item"><a href="#"><i class="fab fa-linkedin-in"></i></a> </li>
        <li class="list-inline-item"><a href="#"><i class="fab fa-instagram"></i></a> </li>
        <li class="list-inline-item"><a href="#"><i class="fab fa-youtube"></i></a> </li>
      </ul>

      <ul class="list-unstyled nav-contact">
        <li class="list-item"><a href="#">555-555-5555</a></li>
        <li class="list-item"><a href="#">email@domain.com</a> </li>
      </ul>
    </div>

    <div class="order-3 ml-auto right-nav-items">
      <ul class="list-inline align-items-center">
        <li class="list-inline-item galleryLink uc"><a href="#">PROJECT GALLERY <i class="fas fa-th-large"></i></a></li>
        <li class="list-inline-item cta"><a class="btn btn-lg btn-primary" href="#">GET STARTED</a></li>
        
      </ul>
    </div>
  </div><!-- close container -->

</nav>

<style>
.navbar .container{
	max-width: 95%;
	margin: 0 auto;
	padding-top:20px;
}

.navbar-brand img{
	margin-left:60px;
}

.nav-social i.fab {
  display: inline-block;
  border-radius: 60px;
  box-shadow: 0px 0px 2px #8a8a8a;
  padding: 0.5em 0.6em;
}
.nav-social a i {
	color:#8a8a8a;
}

.right-nav-items .galleryLink {
	margin-right:40px;
	font-size: 20px;
}

.right-nav-items .galleryLink a{
	color:#fff;
}

#navFlyout{
	position: absolute;
	top:0px;
	left:0px;
  padding:40px;
	background-color: #fff;
	width:500px;
}
#navFlyout .nav-item, #navFlyout .nav-item a{
	color:#000;
	font-size: 18px;
	font-weight: 700;
	line-height: 36px;
}
#navFlyout .nav-social{
	margin-top:60px;
	padding-top:60px;
	border-top:4px solid #000;
}

#navFlyout .nav-contact, #navFlyout .nav-contact a{
	font-size: 18px;
	line-height: 36px;
	color:#838182;
}

#navFlyout .close{
    width:100%;
	text-align: left;
	margin-bottom: 40px;
	height:40px;
}
#navFlyout .close span{
	font-size: 40px;
	font-weight: 200;
	
}
</style>

There seem to be a number of scripts around for this task and just found this one.

$(document).ready(function () {
    $(document).click(function (event) {
        var elClicked = $(event.target);
        var isOpen = $(".navbar-collapse").hasClass("show");
        if (isOpen === true && !elClicked.hasClass("navbar-toggler")) {
            $(".navbar-toggler").click();
        }
    });
});

Thanks Paul!

This topic was automatically closed 91 days after the last reply. New replies are no longer allowed.