Brandon Skerritt
Brandon Skerritt

Reputation: 420

Too much space between list items in Navbar Bootstrap

How do I make it so the items (menu, about us, etc) are all evenly spaced out throughout the navbar and not bunched up to one side?

https://jsfiddle.net/dd19sg5x/

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">

 <nav class="navbar navbar-default">
     <div>
         <div class="navbar-header">
              <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-nav-demo" aria-expanded="false">
         <span class="sr-only">Toggle navigation</span>
         <span class="icon-bar">a</span>
         <span class="icon-bar">b</span>
         <span class="icon-bar">c</span>
       </button>
        <img src="images\logo.png" href="main_page.html" width=75% height=75% alt="Company Logo of Broadstairs Hotel" href="www.google.com"/>

         </div>
         <div class="collapse navbar-collapse container" id="bs-nav-demo">
                              <ul class="nav navbar-nav" id="top-navbar">
                 <li><a href="html\book.html">Book</a></li>
                 <li><a href="#">Menu</a></li>
                 <li><a href="#">Enquire</a></li>
                 <li><a href="#">Facillities</a></li>
                 <li><a href="#">Rooms</a></li>
                 <li><a href="#">Contact us</a></li>



    <!-- Navbar stuff is done -->

        </div>
     </div>
 </nav>

Upvotes: 0

Views: 1214

Answers (2)

confusius
confusius

Reputation: 591

CSS Flex seems to be a good solution.
These two links have helped me a lot.

Your code could look like this:

@media (min-width: 992px) { 
  ul.navbar-nav {
    display: flex;
    justify-content: space-between;
    width: 100%
  }
}
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>



<nav class="navbar navbar-toggleable-md navbar-light bg-faded">
  <button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
  <a class="nav-brand"><img src="images\logo.png" href="main_page.html" width=75% height=75% alt="Company Logo of Broadstairs Hotel" href="www.google.com"/></a>
  <div class="collapse navbar-collapse" id="navbarNav">
    <ul class="navbar-nav">
      <li class="nav-item"><a class="nav-link" href="html\book.html">Book</a></li>
      <li class="nav-item"><a class="nav-link" href="#">Menu</a></li>
      <li class="nav-item"><a class="nav-link" href="#">Enquire</a></li>
      <li class="nav-item"><a class="nav-link" href="#">Facillities</a></li>
      <li class="nav-item"><a class="nav-link" href="#">Rooms</a></li>
      <li class="nav-item"><a class="nav-link" href="#">Contact us</a></li>
    </ul>
  </div>
</nav>

Upvotes: 1

szegheo
szegheo

Reputation: 4425

My tip is to set the .navbar-header to a fixed width depending on your logo width and make it position: absolute;. I've set it to 200px;. Than the padding-left of the .navbar-collapse will be that 200px; After that if you have 6 menuitems, than one item should be exactly 16.666% wide.

See it in action here: https://jsfiddle.net/9ts0Lcxe/

Added code in css in is:

@media (min-width: 768px) {
  .navbar .navbar-header {
      position: absolute;
      left: 0;
      top: 0;
      width: 200px;
  }

  .navbar .navbar-collapse {
    width: 100%;
    padding-left: 200px;
  }

  .navbar .navbar-collapse .navbar-nav {
    width: 100%;
  }

  .navbar .navbar-collapse .navbar-nav > li {
    width: 16.666%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
  }
}

Upvotes: 1

Related Questions