Bootstrap4下拉菜单 鼠标移入显示菜单、鼠标移出隐藏菜单
程序员文章站
2022-07-11 11:58:04
...
废话不多说,自己研究了一下;就是增加一个类和删除该类就可以实现。
不过需要注意两个细节:
1、当我们移入下边的菜单栏的时候我们不让菜单栏消失,这里我们使用定时器。让它延迟100毫秒消失,如果在100毫秒内移入菜单栏, 那么我们就关闭定时器,dropdown-menu就不会消失
2、当我们从下边的菜单栏再次移入按钮的时候,也不能让菜单栏消失。原理同上
效果:
代码:
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>鼠标移入显示,鼠标移出隐藏</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/aaa@qq.com/dist/css/bootstrap.min.css" integrity="sha384-9aIt2nRpC12Uk9gS9baDl411NQApFmC26EwAOH8WgZl5MYYxFfc+NcPb1dKGj7Sk" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/aaa@qq.com/dist/jquery.slim.min.js" integrity="sha384-DfXdz2htPH0lsSSs5nCTpuj/zy4C+OGpamoFVy38MVBnE+IbbVYUew+OrCXaRkfj" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/aaa@qq.com/dist/umd/popper.min.js" integrity="sha384-Q6E9RHvbIyZFJoft+2mJbHaEWldlvI9IOYy5n3zV9zzTtmI3UksdQRVvoxMfooAo" crossorigin="anonymous"></script>
<script src="https://cdn.jsdelivr.net/npm/aaa@qq.com/dist/js/bootstrap.min.js" integrity="sha384-OgVRvuATP1z7JjHLkuOU7Xw704+h835Lr+6QL9UvYjZE3Ipu6Tp75j7Bh/kR0JKI" crossorigin="anonymous"></script>
</head>
<body>
<div class="btn-group">
<button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Action
</button>
<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>
</body>
<script>
$(document).ready(function(){
hoverMenuShow();
});
function hoverMenuShow(){
let $btn = $('.btn-group');
let $menu = $('.dropdown-menu');
// 移入显示 原理是手动给 dropdown-menu 加入一个显示类
$btn.mouseover(function(){
$menu.addClass('show');
});
/*
移出消失 原理是手动删除 dropdown-menu 的类
这里需要注意两个细节:
1、当我们移入下边的菜单栏的时候我们不让菜单栏消失,这里我们使用定时器。让它延迟100毫秒消失,如果在100毫秒内移入菜单栏, 那么我们就关闭定时器,dropdown-menu就不会消失
2、当我们从下边的菜单栏再次移入按钮的时候,也不能让菜单栏消失。原理同上
*/
$btn.mouseout(function (){
$hide = setTimeout(function(){
// 移入菜单栏,取消隐藏
$menu.mouseover(function(){
clearTimeout($hide);
});
// 再次移入按钮,取消定时器,不让其隐藏。
$btn.mouseover(function(){
clearTimeout($hide);
});
$menu.removeClass('show');
},100);
})
}
</script>
</html>
下一篇: zabbix下的API