Reputation: 310
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
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
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