Swim89
Swim89

Reputation: 310

Navbar Dropdown menu right on bootstrap 4

I have a problem with dropdown menu right on Bootstrap 4.

Here my code:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet"/>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>


<nav class="navbar fixed-top navbar-dark bg-primary py-1">
    <a class="navbar-brand" href="#">
        BRAND
    </a>
    <span class="navbar-text py-0">
      <ul class="navbar-nav mr-auto">
          <li class="nav-item dropdown">
              <a class="nav-item nav-link dropdown-toggle" id="userMenu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                  <img src="<?= $objUser->photo ?>" width="40px" height="40px" class="rounded-circle">
                  <span class="caret"></span>
              </a>
              <div class="dropdown-menu dropdown-menu-right" aria-labelledby="userMenu">
                Hi Name
                <a class="dropdown-item" id="logout_btn" href="#">Logout</a>
              </div>
          </li>
      </ul>
    </span>
</nav>

When I click on link on right, navbar expands instead to popup the dropdown menu. And the link is not readable.

Do you have any solutions?

Upvotes: 1

Views: 2037

Answers (2)

Roy
Roy

Reputation: 8069

The problem here is that the .navbar .dropdown-menu has position: static;, coming from navbar.css.

When overriding the CSS with a more specific selector: .navbar .dropdown-menu.dropdown-menu. and changing the position from static to absolute it works as expected.

For the color of the 'Logout' functionality, you could do something like this to override the default styling:

.navbar-nav .dropdown-item.dropdown-item,
.navbar-nav .dropdown-item.dropdown-item:hover {
  color: blue;
}

.navbar-nav .dropdown-menu.dropdown-menu {
  position: absolute;
}

.navbar-nav .dropdown-item.dropdown-item,
.navbar-nav .dropdown-item.dropdown-item:hover {
  color: blue;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" />
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>


<nav class="navbar fixed-top navbar-dark bg-primary py-1">
  <a class="navbar-brand" href="#">
        BRAND
    </a>
  <span class="navbar-text py-0">
      <ul class="navbar-nav mr-auto">
          <li class="nav-item dropdown">
              <a class="nav-item nav-link dropdown-toggle" id="userMenu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                  <img src="<?= $objUser->photo ?>" width="40px" height="40px" class="rounded-circle">
                  <span class="caret"></span>
  </a>
  <div class="dropdown-menu dropdown-menu-right" aria-labelledby="userMenu">
    Hi Name
    <a class="dropdown-item" id="logout_btn" href="#">Logout</a>
  </div>
  </li>
  </ul>
  </span>
</nav>

Upvotes: 0

Vladimir Mujakovic
Vladimir Mujakovic

Reputation: 680

You are missing some dropdown classes i think, the following code should work

see here https://jsbin.com/jayukijavi/edit?html,output

<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
  <a class="navbar-brand" href="#">BRAND</a>
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
    <span class="navbar-toggler-icon"></span>
  </button>
  <div class="collapse navbar-collapse" id="navbarNavDropdown">
    <ul class="navbar-nav ml-auto">

      <li class="nav-item dropdown">
        <a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
          Dropdown link
        </a>
        <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
          <a class="nav-item nav-link dropdown-toggle" id="userMenu" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
             <img src="<?= $objUser->photo ?>" width="40px" height="40px" class="rounded-circle">
             <span class="caret"></span>
          </a>
          <a class="dropdown-item" id="logout_btn" href="#">Logout</a>
        </div>
      </li>
    </ul>
  </div>
</nav>

Upvotes: 3

Related Questions