现在我的导航下拉菜单可以通过点击打开。
我希望它能在鼠标悬停时自动打开。我该怎么做?
现在我的导航下拉菜单可以通过点击打开。
我希望它能在鼠标悬停时自动打开。我该怎么做?
只需添加以下 CSS
.dropdown:hover>.dropdown-menu {
display: block;
}
.dropdown:hover>.dropdown-menu {
display: block;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" rel="stylesheet"/>
<nav class="navbar navbar-toggleable-md navbar-light bg-faded">
<ul class="navbar-nav">
<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="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
<a class="dropdown-item" href="#">Something else here</a>
</div>
</li>
</ul>
</nav>
padding-bottom: 0.5rem;
也有助于使下拉菜单展开的时间更长一些(鼠标移动有时会影响它)。 - GendrithZnaneswar的CSS非常好用,但我建议再加入这行代码。
.dropdown-menu {
margin: -0.125rem 0 0;
}
data-toggle="dropdown"
以下 CSS 可以正常工作
.dropdown:hover>.dropdown-menu {
display: block;
}
.dropdown>.dropdown-toggle:active {
pointer-events: none; // Add this, to prevent clicking dropdown's default click function
}
虽然我很感激对这个问题的回答,但是给出的答案似乎不是最好的。这是因为这些答案忽略了可访问性。
请注意,当仅使用CSS在.nav-link
悬停时显示下拉菜单时,.nav-link
元素上的aria-expanded
参数不会更改为true。
因此,您必须使用一些JS才能拥有完整的可访问性功能。
以下是我想到的解决方法。
// header_scripts.js
$('body').on('hover', '.nav-item.dropdown', function() {
$(this).find('.dropdown-toggle').dropdown('toggle');
});
/* header.css */
.dropdown-menu {
margin: 0 0 0 0;
}
<div class="dropdown">
...
</div>
$(".dropdown").hover(function(){
$(this).addClass("show");
});
.dropdown:hover>.dropdown-menu {
display: block;}
HTML:
<li class="nav-item dropdown" ngbDropdown>
<a class="nav-link h5 dropdown-toggle" id="navbarDropdown" ngbDropdownToggle>
Parent</a>
<div ngbDropdownMenu class="dropdown-menu">
<a class="dropdown-item" href="#" ngbDropdownItem>Child1</a>
<a class="dropdown-item" href="#" ngbDropdownItem>Child2</a>
</div>
</li>
因此,如果不使用CSS属性,则仅会在单击父链接时出现下拉菜单。