You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现Bootstrap响应式导航栏:大屏下拉,小屏汉堡图标整合所有项

解决Bootstrap导航栏小屏折叠显示问题

核心办法

利用Bootstrap自带的响应式类,把“显示更多”里的选项分成两套:大屏时藏在下拉菜单里,中屏及以下直接放到汉堡展开的菜单里,同时把原“显示更多”按钮在小屏时隐藏掉。

直接可用的代码示例

<nav class="navbar navbar-expand-md navbar-light bg-light">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">你的品牌</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarContent" aria-controls="navbarContent" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarContent">
      <!-- 固定的3个导航链接 -->
      <ul class="navbar-nav me-auto mb-2 mb-md-0">
        <li class="nav-item">
          <a class="nav-link active" aria-current="page" href="#">首页</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">产品</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">关于我们</a>
        </li>
        <!-- 仅大屏显示的下拉菜单 -->
        <li class="nav-item dropdown d-none d-md-block">
          <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
            显示更多
          </a>
          <ul class="dropdown-menu">
            <li><a class="dropdown-item" href="#">设置</a></li>
            <li><a class="dropdown-item" href="#">帮助中心</a></li>
            <li><hr class="dropdown-divider"></li>
            <li><a class="dropdown-item" href="#">退出登录</a></li>
          </ul>
        </li>
      </ul>
      <!-- 仅中屏及以下显示的额外链接 -->
      <ul class="navbar-nav d-md-none">
        <li class="nav-item">
          <a class="nav-link" href="#">设置</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">帮助中心</a>
        </li>
        <li class="nav-item">
          <hr class="dropdown-divider">
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">退出登录</a>
        </li>
      </ul>
    </div>
  </div>
</nav>

关键细节

  • d-none d-md-block:让原“显示更多”下拉按钮仅在≥768px的大屏显示,小屏自动隐藏。
  • d-md-none:让额外的导航项列表仅在中屏及以下显示,大屏自动隐藏。
  • 设置完成后,点击汉堡图标会直接展开所有导航项(含原下拉内的功能项),无需二次点击“显示更多”。

避免代码重复的小技巧

如果不想重复编写下拉内的选项,可以用JS动态复制元素:

// 复制下拉菜单里的项到小屏菜单
const dropdownItems = document.querySelector('.dropdown-menu').children;
const mobileMenu = document.querySelector('.d-md-none');

Array.from(dropdownItems).forEach(item => {
  const copyItem = item.cloneNode(true);
  // 把dropdown-item样式改为nav-link,保持小屏样式统一
  if (copyItem.classList.contains('dropdown-item')) {
    copyItem.classList.remove('dropdown-item');
    copyItem.classList.add('nav-link');
    copyItem.parentElement.classList.add('nav-item');
  }
  mobileMenu.appendChild(copyItem);
});

内容的提问来源于stack exchange,提问作者Oscar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 15:20:21