欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Bootstrap4下拉菜单 鼠标移入显示菜单、鼠标移出隐藏菜单

程序员文章站 2022-07-11 11:58:04
...

废话不多说,自己研究了一下;就是增加一个类和删除该类就可以实现。

不过需要注意两个细节:

1、当我们移入下边的菜单栏的时候我们不让菜单栏消失,这里我们使用定时器。让它延迟100毫秒消失,如果在100毫秒内移入菜单栏, 那么我们就关闭定时器,dropdown-menu就不会消失
2、当我们从下边的菜单栏再次移入按钮的时候,也不能让菜单栏消失。原理同上
效果:
Bootstrap4下拉菜单 鼠标移入显示菜单、鼠标移出隐藏菜单

代码:

<!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>
相关标签: Bootstrap4.x