实现 Bootstrap 5 多级下拉垂直导航栏的干净方法是啥? [复制]

Posted

技术标签:

【中文标题】实现 Bootstrap 5 多级下拉垂直导航栏的干净方法是啥? [复制]【英文标题】:What is the clean way to implement Bootstrap 5 multi-level dropdown vertical navbar? [duplicate]实现 Bootstrap 5 多级下拉垂直导航栏的干净方法是什么? [复制] 【发布时间】:2021-04-30 22:32:58 【问题描述】:

我想要一个响应式垂直导航栏,我正在尝试通过 Bootstrap 5 获得它。在这方面,我想要多级下拉菜单项。我确信可以通过向 CSS 添加自定义代码并自行创建整个多级下拉功能来实现这一点,但我希望尽可能保持干净。

我尝试了以下代码,但没有转到子级别,下拉列表崩溃了。

<!-- Sidebar -->
<aside class="col-12 col-md-3 col-xl-2 p-0 bg-dark flex-shrink-1">
  <nav class="navbar navbar-expand-md navbar-dark bg-dark flex-md-column flex-row align-items-center py-2 text-center sticky-top" id="sidebar">
    <div class="text-center p-3">
      <h1 class="h1"><a href="home.php" class="navbar-brand mx-0 font-weight-bold text-nowrap">DrishyamTech</a></h1>
      <h1 class="text-white display-6"><?php echo $current_user_id; ?></h1>
    </div>

    <button type="button" class="navbar-toggler border-0 order-1" data-bs-toggle="collapse" data-bs-target="#nav" aria-controls="nav" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>

    <div class="collapse navbar-collapse order-last" id="nav">
      <ul class="navbar-nav flex-column w-100 justify-content-center">
        <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" href="#" id="userHomeDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
            Home
          </a>
          <ul class="dropdown-menu dropdown-menu-dark dropdown-menu-end w-100 text-center" aria-labelledby="userHomeDropdown">
            <li><a class="dropdown-item" href="#">New Registration</a></li>
            <li class="dropdown">
              <a class="dropdown-item dropdown-toggle" href="#" id="getTopupDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
                Get Top-up
              </a>
              <ul class="dropdown-menu dropdown-menu-dark dropdown-menu-end w-100 text-center" aria-labelledby="getTopupDropdown">
                <li><a class="dropdown-item" href="#">New Registration</a></li>
                <li><a class="dropdown-item" href="#">New Registration</a></li>
              </ul>
            </li>
          </ul>
        </li>
      </ul>
    </div>
    
  </nav>
</aside>

我搜索了很多,但现在我怀疑 BS 是否具有满足我要求的内置功能。如果没有,实现这一目标的最简洁方法是什么,最好不更改当前代码(适用于单级下拉菜单,但不适用于多级下拉菜单)?

【问题讨论】:

【参考方案1】:

通过将.dropend 添加到父元素来触发元素右侧的下拉菜单。

基于 Bootstrap 5 的无限多级下拉菜单 https://jsfiddle.net/dallaslu/mvk4uhzL/

【讨论】:

【参考方案2】:

好问题!我也仍在解决这个问题。我学到的一件事是,几年前有一个设计决定,下拉菜单只能在点击时起作用,并且父项不可点击。 https://markdotto.com/2012/02/27/bootstrap-explained-dropdowns/(通过https://getbootstrap.com/docs/5.0/components/dropdowns/)。

因此,我添加了一些 vanillajs 来实现悬停显示,同时仍然尽可能多地坚持引导文档: https://mandrasch.github.io/11ty-plain-bootstrap5/

【讨论】:

以上是关于实现 Bootstrap 5 多级下拉垂直导航栏的干净方法是啥? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Bootstrap 4 和 Angular 7 在导航栏中制作多级下拉菜单

双击导航栏的下拉菜单。

在移动设备中查看时带有侧边栏的 Bootstrap 导航栏

请问如何设置bootstrap导航栏中的菜单项居中均匀分布?谢谢

Bootstrap - 更改断点导航栏?

仅在折叠位置时如何设置 Bootstrap 5 导航栏的样式?