Bootstrap 4 Dropdown fix for data container, bootstrap kebab
Fix the Bootstrap dropdown hidden by next container
by djibe89
HTML
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.0/css/font-awesome.min.css">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/mdbootstrap/4.3.1/css/mdb.min.css">
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js"></script>
<div class="col-6 offset-4" id="test">
<div class="dropdown">
<a data-toggle="dropdown"><i class="fa fa-ellipsis-v fa-2x waves-effect"></i></a>
<div class="dropdown-menu">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">Separated link</a>
</div>
</div>
</div>
CSS
#test {
margin-top: 10rem;
height: 70px;
overflow: scroll;
}
a {
margin-left: 40%;
}
i:hover {
color: #4285F4;
}
.dropdown-menu {
position: fixed;
}
.dropdown .dropdown-menu .dropdown-item {
padding: 1rem;
margin-left: 0;
}
.dropdown .dropdown-menu .dropdown-item:hover {
box-shadow: 0 8px 17px 0 rgba(0, 0, 0, .2), 0 6px 20px 0 rgba(0, 0, 0, .19);
color: white;
background: #4285F4;
}
JavaScript
$('a[data-toggle="dropdown"]').click(function() {
dropDownFixPosition($(this), $('.dropdown-menu'));
});
function dropDownFixPosition(a, dropdown) {
var dropDownTop = a.offset().top + a.outerHeight();
dropdown.css('top', dropDownTop + "px");
//Delete - dropdown.width() if you want menu to be bottom right of link
dropdown.css('left', a.offset().left - dropdown.width() + "px");
}