Bootstrap 5 中的多级下拉菜单

问题描述 投票:0回答:3

我想为新的 Bootsrap 5 使用多级下拉菜单。我尝试了 4 的旧代码,但没有任何效果。有人有 Bootstrap 5 的工作代码吗?

twitter-bootstrap bootstrap-5
3个回答
8
投票

您可以使用普通的引导组件来实现它,而不需要任何额外的 JavaScript 代码: 这个想法是将 Dropdowns 组件 与嵌套的 Dropend 或 Dropstart 组件一起使用,并在父 Dropdown 组件上使用选项 data-bs-auto-close="outside" 。 检查下面的简单示例:

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Bootstrap demo</title>
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet"
          integrity="sha384-Zenh87qX5JnK2Jl0vWa8Ck2rdkQ2Bzep5IDxbcnCeuOxjzrPF/et3URy9Bv1WTRi" crossorigin="anonymous">
</head>
<body>
<div class="dropdown">
    <button
            class="btn btn-secondary dropdown-toggle bg-transparent text-dark btn-sm ms-3"
            type="button"
            id="MyAccountDDM"
            data-bs-toggle="dropdown"
            data-bs-auto-close="outside"
            aria-expanded="false">
        AAA
    </button>

    <ul class="dropdown-menu" aria-labelledby="MyAccountDDM" id="AppDropDownId">
        <li><a>BBB</a></li>
        <li>
            <div class="btn-group dropend">
                <a type="button" class="dropdown-item dropdown-toggle p-0" data-bs-toggle="dropdown"
                   aria-expanded="false">
                    CCC
                </a>
                <ul class="dropdown-menu">
                    <li><a class="dropdown-item" href="#">DDD</a></li>
                    <li><a class="dropdown-item" href="#">EEE</a></li>
                </ul>
            </div>
        </li>

        <li><hr class="dropdown-divider"/></li>
        <li><a>FFF</a></li>

    </ul>
</div>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-OERcA2EqjJCMA+/3y+gxIOqMEjwtxJY7qPCqsdltbNJuaOe923+mo//f6V8Qbsw3"
        crossorigin="anonymous"></script>
</body>
</html>


5
投票

多级菜单项,只需少量 CSS 自定义

.dropdown:hover >.dropdown-menu{
  display: block !important;
}
.dropdown-submenu:hover > .dropdown-menu{
  display: block !important;
    left: 100%;
    margin-top: -37px;
}

.dropdown-item{
  font-size: small; /* 13px */
}
.dropdown-toggle::after{
  font-size: var(--font-md);
  margin-bottom: -2px;
}
.dropdown-menu li a.active{
  color:#fff;
}

.custom-toggle-arrow{
      font-size: 18px;
      margin-top: 1px;
      line-height: 12px;
}
<!doctype html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Bootstrap demo</title>
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">
  </head>
  <body>
    <nav class="nav justify-content-center" aria-label="Secondary navigation">
              <li class="nav-item"><a class="nav-link" href="#">Single Item</a></li>
        
              <li class="nav-item dropdown">
                <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown"                     aria-expanded="false">
                  Multi-level Item
                </a>
                <ul class="dropdown-menu">
                  <li><a class="dropdown-item" href="#"> Menu Item 1</a></li>
                  <li><a class="dropdown-item" href="#"> Menu Item 2</a></li>
                  <li class="dropdown-submenu">
                    <a class="dropdown-item" href="#"> Second Level <span
                        class="float-end custom-toggle-arrow">&#187</span></a>
                    <ul class="dropdown-menu">
                      <li><a class="dropdown-item" href="#">Second Level Item 1</a></li>
                      <li><a class="dropdown-item" href="#">Second Level Item 2</a></li>
    
                      <li class="dropdown-submenu">
                        <a class="dropdown-item" href="#"> Third Level <span
                            class="float-end custom-toggle-arrow">&#187</span></a>
                        <ul class="dropdown-menu">
                          <li><a class="dropdown-item" href="#">Third Level Item 1</a></li>
                          <li><a class="dropdown-item" href="#">Third Level Item 2</a></li>
                        </ul>
                      </li>
    
    
                    </ul>
                  </li>
                </ul>
              </li>
  </nav>
            
           
    <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-A3rJD856KowSb7dwlZdYEkO39Gagi7vIsF0jrRAoQmDKKtQBHUuLZ9AsSv4jD4Xa" crossorigin="anonymous"></script>
  </body>
</html>

参考:链接


0
投票

感谢您提供这个解决方案,非常有帮助。 :)

© www.soinside.com 2019 - 2024. All rights reserved.