Valeria S.
Valeria S.

Reputation: 348

Bootstrap navbar changing button and menu positions

I am creating a website header using Bootstrap navbar, like this:

<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<nav class="navbar navbar-expand-sm navbar-dark bg-dark">
  <a class="navbar-brand all-upper mb-1 h1 ml-1" href="#">Brand</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggle" aria-controls="navbarToggle" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
    </button>

  <div class="navbar-expand">
    <button class="btn btn-primary mr-3" onclick="goToTrip()">Button</button>
  </div>

  <div class="collapse navbar-collapse">
    <ul class="navbar-nav ml-auto">
      <li class="nav-item">
        <a class="nav-link all-upper" href="index.html">Home</a>
      </li>
      <li class="nav-item">
        <a class="nav-link all-upper" href="#">Settings</a>
      </li>
      <li class="nav-item">
        <a class="nav-link all-upper" href="#">Log Out</a>
      </li>
    </ul>
  </div>
</nav>

So I have some links to the right of the navbar and a button to the left. how it looks like

But when the screen gets smaller, the button and collapsing menu are changing their positions like this:

And without the button everything is OK:

So how to keep the items on their places?

Upvotes: 0

Views: 1399

Answers (3)

Carol Skelly
Carol Skelly

Reputation: 362620

There's no need for extra CSS. Just change the position of the button and use mr-auto to keep it to the left.

<nav class="navbar navbar-expand-sm navbar-dark bg-dark">
    <a class="navbar-brand all-upper mb-1 h1 ml-1" href="#">Brand</a>
    <div class="navbar-expand mr-auto">
        <button class="btn btn-primary mr-3" onclick="goToTrip()">Button</button>
    </div>
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggle" aria-controls="navbarToggle" aria-expanded="false" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarToggle">
        <ul class="navbar-nav ml-auto">
            <li class="nav-item">
                <a class="nav-link all-upper" href="index.html">Home</a>
            </li>
            <li class="nav-item">
                <a class="nav-link all-upper" href="#">Settings</a>
            </li>
            <li class="nav-item">
                <a class="nav-link all-upper" href="#">Log Out</a>
            </li>
        </ul>
    </div>
</nav>

Demo: https://www.codeply.com/go/vTTFyRkyoF

Upvotes: 0

aflyzer
aflyzer

Reputation: 563

@media screen and (max-width: 540px) {
   .navbar-brand{
       flex-grow: 2;
   }
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
    <nav class="navbar navbar-expand-sm navbar-dark bg-dark">
      <a class="navbar-brand all-upper mb-1 h1 ml-1" href="#">Brand</a>


      <div class="navbar-expand">
        <button class="btn btn-primary mr-3" onclick="goToTrip()">Button</button>
      </div>  
      <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggle" aria-controls="navbarToggle" aria-expanded="false" aria-label="Toggle navigation">
            <span class="navbar-toggler-icon"></span>
        </button>

      <div class="collapse navbar-collapse">
        <ul class="navbar-nav ml-auto">
          <li class="nav-item">
            <a class="nav-link all-upper" href="index.html">Home</a>
          </li>
          <li class="nav-item">
            <a class="nav-link all-upper" href="#">Settings</a>
          </li>
          <li class="nav-item">
            <a class="nav-link all-upper" href="#">Log Out</a>
          </li>
        </ul>
      </div>
    </nav>

can you try with this? You just put your navbar-toggler at the wrong plage..

Try again? This is what you want?

Upvotes: 2

Vipul Sharma
Vipul Sharma

Reputation: 545

  <div class="navbar-expand">
    <button class="btn btn-primary mr-3" onclick="goToTrip()">Button</button>
  </div>

there should not be this navbar-expand class in the div since you have already defined navbar-expand-sm in the nav tag

Upvotes: 0

Related Questions