【问题标题】:Dropdown menu not showing the listed elements when hovered悬停时下拉菜单不显示列出的元素
【发布时间】:2022-01-20 20:37:03
【问题描述】:

由于某种原因,此下拉菜单在悬停时未显示列出的元素。使用引导程序。

我在这里遗漏了什么吗?也许这很简单,但我就是看不到。

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.min.js" integrity="sha384-QJHtvGhmr9XOIpI6YVutG+2QOK9T+ZnN4kzFN1RtK3zEFEIsxhlmWl5/YESvpZ13" crossorigin="anonymous"></script>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">

<!-- Services -->
<li class="nav-item dropdown">

  <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown">Services</a>

  <div class="dropdown-menu" aria-labelledby="navbarDropdown">
    <h6 class="dropdown-header">Dropdown header</h6>
    <a class="dropdown-item" href="#">Rewiring</a>
    <a class="dropdown-item" href="#">Light Fixes</a>
    <a class="dropdown-item" href="#">Showers</a>
    <div class="dropdown-divider"></div>
    <a class="dropdown-item" href="#">Rewiring</a>
    <a class="dropdown-item" href="#">Light Fixes</a>
    <a class="dropdown-item" href="#">Showers</a>
  </div>
</li>

【问题讨论】:

  • 能否也添加注册此悬停动作的 CSS?
  • 我给你做了一个sn-p。请将其更改为 minimal reproducible example 并标记引导版本

标签: html css twitter-bootstrap


【解决方案1】:

更改&lt;a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown"&gt;Services&lt;/a&gt;

&lt;button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown"&gt; Dropdown button &lt;/button&gt;

把它改成一个按钮就可以了!!

【讨论】:

    【解决方案2】:

    在 Bootstrap 中,下拉菜单默认在鼠标点击时运行,如果你想在鼠标悬停时显示下拉菜单,那么你必须使用 css 或 js

    我用过css

    .dropdown:hover ul.dropdown-menu{ display: block; }
    

    .dropdown:hover ul.dropdown-menu{ display: block; }
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/css/bootstrap.min.css" rel="stylesheet">
      <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.2/dist/js/bootstrap.bundle.min.js"></script>
    
      <div class="dropdown">
        <button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown">
          Services
        </button>
        <ul class="dropdown-menu">
          <li><h6 class="dropdown-header">Dropdown header</h6></li>
          <li><a class="dropdown-item" href="#">Rewiring</a></li>
          <li><a class="dropdown-item" href="#">Light Fixes</a></li>
          <li><a class="dropdown-item" href="#">Showers</a></li>
          <li><hr class="dropdown-divider"></li>
          <li><a class="dropdown-item" href="#">Rewiring</a></li>
          <li><a class="dropdown-item" href="#">Light Fixes</a></li>
          <li><a class="dropdown-item" href="#">Showers</a></li>
        </ul>
      </div>

    【讨论】:

      【解决方案3】:

      这里有更多要讨论的事情:

      1. BS 中的打开下拉菜单由Popper.js 完成(不属于bootstrap.min.js)。因此,为了使下拉菜单正常工作,您需要通过 bundle 加载 Bootstrap JS,其中包含 Popper.js https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js

      2. 由于您使用的是BS5,您需要将data-toggle="dropdown"更改为data-bs-toggle="dropdown"。这是从版本 5 开始的新标记。

      3. 正如另一个答案中提到的,单击(而不是悬停)打开下拉菜单是 BS 哲学的核心部分(不幸的是)。因此,如果您想在悬停时打开子菜单,则必须添加额外的 CSS。

      4. 还要小心标记。使用BS推荐的结构进行导航会更干净(使用&lt;ul&gt;&lt;li&gt;等)

      【讨论】:

        【解决方案4】:

        我找到了解决办法:

        这是造成麻烦的线路。

        <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown">Services</a>
        

        我只是通过 Bootstrap 添加了以下内容:

        aria-haspopup="true" aria-expanded="false"
        

        【讨论】:

          猜你喜欢
          • 2016-04-24
          • 2016-11-11
          • 1970-01-01
          • 1970-01-01
          • 2021-09-08
          • 2018-02-09
          • 2019-12-26
          • 2013-10-10
          • 2013-03-14
          相关资源
          最近更新 更多