【问题标题】:How to make a hamburger menu show a dropdown list如何使汉堡菜单显示下拉列表
【发布时间】:2021-05-21 01:54:16
【问题描述】:

我正在学习 Bootstrap 4,我已经成功地将导航栏中的内容变成了我想要的更小屏幕尺寸的汉堡菜单。我现在遇到的问题是成为汉堡菜单的其中一个东西是一个浏览按钮,它在更大的屏幕尺寸下显示一个下拉列表:

它确实变成了较小屏幕尺寸的汉堡菜单,但是当我单击汉堡菜单时,浏览按钮出现在它的右侧,这并不是我想要发生的:

我试图在较小的屏幕尺寸下消除点击,并让汉堡菜单在点击时直接显示下拉列表,而不是必须点击汉堡菜单然后点击弹出的浏览按钮。

这是我的 HTML:

<!-- browse button hamburger menu button -->
<a class="navbar-toggler border" role="button" data-toggle="collapse" data-target="#navbarBrowseButton">
    <span class="navbar-toggler-icon text-center">
        <i class="fas fa-bars"></i>
    </span>
</a>

<!-- browse button collapse content -->
<div class="collapse navbar-collapse" id="navbarBrowseButton">
    <a class="btn btnBrowse dropdown-toggle" role="button" data-toggle="dropdown">Browse</a>
        <div class="dropdown-menu">
            <a href="#" class="dropdown-item">Games</a>
            <a href="#" class="dropdown-item">Popular Lists</a>

为了简单起见,我取出了 ARIA 的东西,我尝试给我的 dropdown-menu 一个 id 并更改 data-target 并取得了不同程度的成功,但它现在仍然按照我想要的方式工作。

【问题讨论】:

  • 简而言之,你有小屏幕的问题,你需要的是当你点击汉堡菜单时,浏览有一个打开的菜单?
  • 是的,当您单击“浏览”按钮时会出现下拉菜单,这正是我希望在单击汉堡菜单时发生的事情,我希望两次单击都做同样的事情,显示下拉菜单
  • 看我的回答兄弟
  • 我看到了,但是当我单击汉堡包按钮并重叠我的标题文本时,浏览按钮仍然弹出,我试图让它只显示菜单,而不是浏览按钮。通过摆弄 z-index,我让它看起来不错并且现在没有重叠。谢谢你。

标签: bootstrap-4 hamburger-menu


【解决方案1】:

你可以使用 JS。

添加了bg-dark navbar-dark 类,用于切换显示目的。

$('#navbarBrowseButton').on('shown.bs.collapse', function() {
  $('#navbarBrowseButton .btnBrowse').click();
});

$('#navbarBrowseButton').on('hidden.bs.collapse', function() {
  $('#navbarBrowseButton').collapse('hide');
  $('#navbarBrowseButton').dropdown('hide');
});
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">

<!-- browse button hamburger menu button -->
<a class="navbar-toggler border bg-dark navbar-dark" role="button" data-toggle="collapse" data-target="#navbarBrowseButton">
  <span class="navbar-toggler-icon text-center">
            <i class="fas fa-bars"></i>
        </span>
</a>

<!-- browse button collapse content -->
<div class="collapse navbar-collapse" id="navbarBrowseButton">
  <a class="btn btnBrowse dropdown-toggle" role="button" data-toggle="dropdown">Browse</a>
  <div class="dropdown-menu">
    <a href="#" class="dropdown-item">Games</a>
    <a href="#" class="dropdown-item">Popular Lists</a>
  </div>
</div>

<script src="https://code.jquery.com/jquery-3.4.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js"></script>

【讨论】:

  • 感谢 Nisarg,它正在工作,但浏览按钮仍在我的汉堡菜单右侧弹出,而不是像在您的 sn-p 中那样在下方弹出。知道如何让它出现在下面吗?因为我实际上更喜欢那样,它看起来更好 imo
  • 我认为,这是因为您的页面上有自定义 CSS 并且它与您的代码冲突
  • 它在&lt;div class="row"&gt; 不知道这是否会影响方向?
  • 给你的父类flex-column,我认为它会起作用,如果没有,发布新的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-30
  • 2021-08-21
相关资源
最近更新 更多