简体   繁体   中英

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?

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>

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> 

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