在Bootstrap框架中,响应式导航栏(通常称为"navbar")在移动设备上会折叠成一个汉堡菜单。当用户点击菜单项时,导航栏应该自动关闭,特别是在单页面应用或锚点链接中。
当点击导航栏中的链接时导航栏未自动关闭,通常由以下原因导致:
<a>
标签或未正确设置确保已正确引入Bootstrap的JavaScript文件,并且位于body结束标签之前:
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
为导航栏切换按钮添加data-bs-toggle
和data-bs-target
属性:
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
为每个导航链接添加data-bs-toggle
和data-bs-dismiss
属性:
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="#section1" data-bs-toggle="collapse" data-bs-target=".navbar-collapse.show">Section 1</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#section2" data-bs-toggle="collapse" data-bs-target=".navbar-collapse.show">Section 2</a>
</li>
</ul>
</div>
如果上述方法无效,可以使用JavaScript手动关闭导航栏:
document.querySelectorAll('.nav-link').forEach(link => {
link.addEventListener('click', () => {
const navbarCollapse = document.querySelector('.navbar-collapse');
if (navbarCollapse.classList.contains('show')) {
const bsCollapse = new bootstrap.Collapse(navbarCollapse, {
toggle: false
});
bsCollapse.hide();
}
});
});
这种解决方案适用于:
data-toggle
改为data-bs-toggle
没有搜到相关的文章