如何使用Bootstrap实现可替代navbar-toggler的下拉菜单功能
故障解决方法
核心问题1:JS资源重复加载冲突
你当前引入的bootstrap.bundle.min.js已经内置了Popper.js和Bootstrap核心JS代码,后续额外引入的Popper和单独版Bootstrap JS会造成功能冲突,导致下拉菜单无法正常初始化,这是下拉菜单无法触发的核心原因。
修复方案
删除body末尾以下两行JS引入代码,仅保留bootstrap.bundle.min.js即可:
<!-- 删掉这两行 --> <script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.3/dist/umd/popper.min.js" integrity="sha384-W8fXfP3gkOKtndU4JGtKDvXbO53Wy8SZCQHczT5FMiiqmQfUpWbYdTil/SxwZgAN" crossorigin="anonymous"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.1/dist/js/bootstrap.min.js" integrity="sha384-skAcpIdS7UcVUC05LJ9Dxay8AXcDYfBJqt1CJ85S/CFujBsIzCIv+l9liuYLaMQ/" crossorigin="anonymous"></script>
核心问题2:下拉菜单显示隐藏规则不匹配
你CSS中定义的大屏隐藏类是.dropD,但HTML里的下拉菜单使用的类是.dropdown,导致媒体查询规则没有生效,且下拉菜单没有放在导航栏内,位置不符合替代导航折叠按钮的需求。
修复方案
- 将下拉菜单移入导航栏的
container-fluid容器内,和品牌标识、原有导航项同级,修改后的导航栏代码如下:
<nav class="navbar navbar-light bg-light"> <div class="container-fluid"> <a href="#" class="text-decoration-none navbar-brand ms-5 ps-5 mt-0 pt-0"> <div class="d-flex justify-content-center"> <img src="/Tabler/logo.png" style="width: 25px; height: 25px;"> <span class="mx-2 text-dark fw-bold" style="font-family: 'Nunito', sans-serif;"> tabler </span> </div> </a> <!-- 原有导航项 --> <div class="me-5 pe-5" id="TheNav"> <div> <a class="nav-link px-2" href="#" style="font-size: 11px; font-weight: 420;">Demo</a> </div> <div> <a class="nav-link px-2" href="#" style="font-size: 11px; font-weight: 420;">Source Email</a> </div> <div> <a class="nav-link px-2" href="#" style="font-size: 11px; font-weight: 420;">Tabler Email</a> </div> </div> <!-- 新增的下拉菜单,加上dropD类匹配CSS规则 --> <div class="dropdown dropD me-5 pe-5"> <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton1" data-bs-toggle="dropdown" aria-expanded="false"> 菜单 </button> <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1"> <li><a class="dropdown-item" href="#">Demo</a></li> <li><a class="dropdown-item" href="#">Source Email</a></li> <li><a class="dropdown-item" href="#">Tabler Email</a></li> </ul> </div> </div> </nav>
- 补充小屏下下拉菜单的显示规则,在CSS中添加:
@media screen and (max-width: 580px) { .dropD { display: block; } }
修改完成后下拉菜单即可正常触发,且会在小屏显示、大屏隐藏,完全符合你的需求。
内容的提问来源于stack exchange,提问作者user16648942
相关产品推荐
相关产品推荐

