如何在单击时隐藏可折叠的 Bootstrap 导航栏
[英] How to hide collapsible Bootstrap navbar on click
本文介绍了如何在单击时隐藏可折叠的 Bootstrap 导航栏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用 Bootstrap 4 创建了这个可折叠的导航栏,效果很好,但我希望它在用户单击链接时关闭.有什么办法可以做到这一点?谢谢
html 导航栏:
<button id="nav-btn"class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarDiv" aria-expanded="false" aria-label="切换导航"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span>按钮><div class="容器"><a class="navbar-brand" href="#"><img src="Images/logo.png" width="60px"></a><div class="collapse navbar-collapse" id="navbarDiv"><ul class="navbar-nav mr-auto"><li class="nav-item active"><a class="nav-link" href="#home">Home <span class="sr-only">(current)</span></a><li class="nav-item"><a class="nav-link" href="#about-us">关于</a><li class="nav-item"><a class="nav-link" href="#pricing">定价</a>
</nav>
.icon-bar 的 css,因为 Bootstrap 4 不使用 icon-bar 类.
.navbar-toggler .icon-bar {边距:7px;显示:块;宽度:22px;高度:1px;背景颜色:#cccccc;边框半径:1px;}
解决方案
2021 年更新 - Bootstrap 5(测试版)
使用javascript在菜单项上添加一个点击事件监听器来关闭折叠导航栏..
const navLinks = document.querySelectorAll('.nav-item')const menuToggle = document.getElementById('navbarSupportedContent')const bsCollapse = new bootstrap.Collapse(menuToggle)navLinks.forEach((l) => {l.addEventListener('click', () => { bsCollapse.toggle() })})
BS5 演示 javascript 方法
或者 在每个链接的标记中使用 data-bs-toggle
和 data-bs-target
数据属性来切换收起导航栏...
<div class="container"><a class="navbar-brand";href=#">导航栏</a><button class="navbar-toggler";类型=按钮"data-bs-toggle=折叠"data-bs-target =#navbarSupportedContent";aria-controls="navbarSupportedContent";aria-expanded="false";aria-label =切换导航"><span class="navbar-toggler-icon"></span>按钮><div class="collapse navbar-collapse";id="navbarSupportedContent"><ul class="navbar-nav me-auto"><li class="nav-item active"><a class="nav-link";href=#"data-bs-toggle=折叠"data-bs-target=.navbar-collapse.show">首页</a><li class="nav-item"><a class="nav-link";href=#"data-bs-toggle=折叠"data-bs-target=.navbar-collapse.show">链接</a><li class="nav-item"><a class="nav-link disabled";href=#"data-bs-toggle=折叠"data-bs-target=.navbar-collapse.show">禁用</a><form class="d-flex my-2 my-lg-0"><input class="form-control me-sm-2";类型=搜索"占位符=搜索"aria-label =搜索"><button class="btn btn-outline-success my-2 my-sm-0";type=提交">搜索</button></表单>
</nav>
BS5 演示数据属性方法
2019 年更新 - Bootstrap 4
导航栏已更改,但单击后关闭"未更改方法还是一样的:
BS4 演示 jQuery 方法 BS4 演示 data-toggle
方法
引导程序 3(原始答案)
您可以像这样将 collapse
组件添加到链接中..
<li class="nav-item active"><a class="nav-link";href=#home"数据切换=折叠"data-target=.navbar-collapse.show">主页(当前) <li class="nav-item"><a class="nav-link";href="#about-us";数据切换=折叠"data-target=.navbar-collapse.show">关于</a><li class="nav-item"><a class="nav-link";href="#pricing";数据切换=折叠"data-target=.navbar-collapse.show">定价</a>
使用数据切换"方法的 BS3 演示
或者 ,(也许是更好的方法)像这样使用jQuery..
$('.navbar-nav>li>a').on('click', function(){$('.navbar-collapse').collapse('隐藏');});
使用 jQuery 方法的 BS3 演示
I've created this collapsable navbar using Bootstrap 4 that works nicely, but I would like it to close when the user clicks on a link. Any way to do this? Thanks
html navbar:
<nav class="navbar navbar-toggleable-md fixed-top">
<button id="nav-btn"class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarDiv" aria-expanded="false" aria-label="Toggle navigation">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="container">
<a class="navbar-brand" href="#"><img src="Images/logo.png" width="60px"></a>
<div class="collapse navbar-collapse" id="navbarDiv">
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="#home">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#about-us">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#pricing">Pricing</a>
</li>
</ul>
</div>
</div>
</nav>
css for .icon-bar, since Bootstrap 4 doesn't use the icon-bar class.
.navbar-toggler .icon-bar {
margin: 7px;
display: block;
width: 22px;
height: 1px;
background-color: #cccccc;
border-radius: 1px;
}
解决方案
Update 2021 - Bootstrap 5 (beta)
Use javascript to add a click event listener on the menu items to close the Collapse navbar..
const navLinks = document.querySelectorAll('.nav-item')
const menuToggle = document.getElementById('navbarSupportedContent')
const bsCollapse = new bootstrap.Collapse(menuToggle)
navLinks.forEach((l) => {
l.addEventListener('click', () => { bsCollapse.toggle() })
})
BS5 demo javascript method
Or, Use the data-bs-toggle
and data-bs-target
data attributes in the markup on each link to toggle the Collapse navbar...
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav me-auto">
<li class="nav-item active">
<a class="nav-link" href="#" data-bs-toggle="collapse" data-bs-target=".navbar-collapse.show">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#" data-bs-toggle="collapse" data-bs-target=".navbar-collapse.show">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#" data-bs-toggle="collapse" data-bs-target=".navbar-collapse.show">Disabled</a>
</li>
</ul>
<form class="d-flex my-2 my-lg-0">
<input class="form-control me-sm-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button>
</form>
</div>
</div>
</nav>
BS5 demo data-attributes method
Update 2019 - Bootstrap 4
The navbar has changed, but the "close after click" method is still the same:
BS4 demo jQuery method
BS4 demo data-toggle
method
Bootstrap 3 (original answer)
You can add the collapse
component to the links like this..
<ul class="navbar-nav mr-auto">
<li class="nav-item active">
<a class="nav-link" href="#home" data-toggle="collapse" data-target=".navbar-collapse.show">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#about-us" data-toggle="collapse" data-target=".navbar-collapse.show">About</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#pricing" data-toggle="collapse" data-target=".navbar-collapse.show">Pricing</a>
</li>
</ul>
BS3 demo using 'data-toggle' method
Or , (perhaps a better way) use jQuery like this..
$('.navbar-nav>li>a').on('click', function(){
$('.navbar-collapse').collapse('hide');
});
BS3 demo using jQuery method
这篇关于如何在单击时隐藏可折叠的 Bootstrap 导航栏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!