Navbar导航栏
Documentation and examples for Bootstrap’s powerful, responsive navigation header, the navbar. Bootstrap功能强大、响应迅速的导航标题navbar的文档和示例。Includes support for branding, navigation, and more, including support for our collapse plugin.包括对品牌、导航等的支持,包括对我们的折叠插件的支持。
How it works工作原理
Here’s what you need to know before getting started with the navbar:在开始使用导航栏之前,您需要了解以下内容:
Navbars require a wrapping导航栏需要一个带有.navbar
with.navbar-expand{-sm|-md|-lg|-xl|-xxl}
for responsive collapsing and color scheme classes..navbar-expand{-sm|-md|-lg|-xl|-xxl}
的包装.navbar
,用于响应折叠和颜色方案类。Navbars and their contents are fluid by default.默认情况下,导航栏及其内容为流体。Change the container to limit their horizontal width in different ways.更改容器以以不同方式限制其水平宽度。Use our spacing and flex utility classes for controlling spacing and alignment within navbars.使用间距和弹性实用程序类来控制导航栏中的间距和对齐。Navbars are responsive by default, but you can easily modify them to change that.默认情况下,导航栏是响应的,但您可以很容易地对其进行修改以更改。Responsive behavior depends on our Collapse JavaScript plugin.响应行为取决于Collapse JavaScript插件。Ensure accessibility by using a通过使用<nav>
element or, if using a more generic element such as a<div>
, add arole="navigation"
to every navbar to explicitly identify it as a landmark region for users of assistive technologies.<nav>
元素来确保可访问性,或者如果使用更通用的元素,例如<div>
,则添加role="navigation"
将其明确标识为辅助技术用户的标志性区域。Indicate the current item by using通过对于当前页面使用aria-current="page"
for the current page oraria-current="true"
for the current item in a set.aria-current="page"
来指示当前项目,或者对于当前集中使用aria-current="true"
来指示当前项目。
prefers-reduced-motion
media query. prefers-reduced-motion
媒体查询。Supported content支持的内容
Navbars come with built-in support for a handful of sub-components. 导航栏内置了对少数子组件的支持。Choose from the following as needed:根据需要从以下选项中进行选择:
.navbar-brand
for your company, product, or project name.用于您的公司、产品或项目名称。.navbar-nav
for a full-height and lightweight navigation (including support for dropdowns).用于实现全高度和轻量化导航(包括对下拉菜单的支持)。.navbar-toggler
for use with our collapse plugin and other navigation toggling behaviors.用于折叠插件和其他导航切换行为。Flex and spacing utilities for any form controls and actions.用于任何表单控件和操作的Flex和spacing实用程序。.navbar-text
for adding vertically centered strings of text.用于添加垂直居中的文本字符串。.collapse.navbar-collapse
for grouping and hiding navbar contents by a parent breakpoint.用于按父断点分组和隐藏导航栏内容。Add an optional添加可选.navbar-scroll
to set amax-height
and scroll expanded navbar content..navbar-scroll
以设置max-height
和滚动扩展的导航栏内容。
Here’s an example of all the sub-components included in a responsive light-themed navbar that automatically collapses at the 下面是一个包含在响应性灯光主题导航栏中的所有子组件的示例,该导航栏在lg
(large) breakpoint.lg
(大)断点处自动折叠。
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<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 mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdown">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
</li>
</ul>
<form class="d-flex">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</div>
</nav>
This example uses background (此示例使用背景(bg-light
) and spacing (my-2
, my-lg-0
, me-sm-0
, my-sm-0
) utility classes.bg-light
)和间距(my-2
、my-lg-0
、me-sm-0
、my-sm-0
)实用程序类。
Brand商标
The .navbar-brand
can be applied to most elements, but an anchor works best, as some elements might require utility classes or custom styles..navbar-brand
可以应用于大多数元素,但锚点效果最好,因为某些元素可能需要实用程序类或自定义样式。
Text文本
Add your text within an element with the 使用.navbar-brand
class..navbar-brand
类在元素中添加文本。
<!-- As a link -->
<nav class="navbar navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
</div>
</nav>
<!-- As a heading -->
<nav class="navbar navbar-light bg-light">
<div class="container-fluid">
<span class="navbar-brand mb-0 h1">Navbar</span>
</div>
</nav>
Image形象
You can replace the text within the 您可以用.navbar-brand
with an <img>
.<img>
替换.navbar-brand
中的文本。
<nav class="navbar navbar-light bg-light">
<div class="container">
<a class="navbar-brand" href="#">
<img src="/bootstrap5.1/assets/brand/bootstrap-logo.svg" alt="" width="30" height="24">
</a>
</div>
</nav>
Image and text图像和文本
You can also make use of some additional utilities to add an image and text at the same time. 您还可以使用一些附加的实用程序来同时添加图像和文本。Note the addition of 注意在.d-inline-block
and .align-text-top
on the <img>
.<img>
上添加了.d-inline-block
和.align-text-top
。
<nav class="navbar navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">
<img src="/bootstrap5.1/assets/brand/bootstrap-logo.svg" alt="" width="30" height="24" class="d-inline-block align-text-top">
Bootstrap
</a>
</div>
</nav>
Nav
Navbar navigation links build on our 导航栏导航链接以.nav
options with their own modifier class and require the use of toggler classes for proper responsive styling. .nav
选项为基础,并带有自己的修改器类,需要使用切换器类来实现正确的响应样式。Navigation in navbars will also grow to occupy as much horizontal space as possible to keep your navbar contents securely aligned.导航栏中的导航也将尽可能多地占据水平空间,以确保导航栏内容安全对齐。
Add the 在.active
class on .nav-link
to indicate the current page..nav-link
上添加.active
类以指示当前页面。
Please note that you should also add the 请注意,您还应该在活动aria-current
attribute on the active .nav-link
..nav-link
上添加aria-current
属性。
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Features</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Pricing</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
</li>
</ul>
</div>
</div>
</nav>
And because we use classes for our navs, you can avoid the list-based approach entirely if you like.因为我们使用类来进行导航,所以如果您愿意,可以完全避免使用基于列表的方法。
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavAltMarkup">
<div class="navbar-nav">
<a class="nav-link active" aria-current="page" href="#">Home</a>
<a class="nav-link" href="#">Features</a>
<a class="nav-link" href="#">Pricing</a>
<a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
</div>
</div>
</div>
</nav>
You can also use dropdowns in your navbar. 您也可以在导航栏中使用下拉菜单。Dropdown menus require a wrapping element for positioning, so be sure to use separate and nested elements for 下拉菜单需要一个包装元素来定位,所以请确保为.nav-item
and .nav-link
as shown below..nav-item
和.nav-link
使用单独的嵌套元素,如下所示。
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavDropdown">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Features</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Pricing</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown link
</a>
<ul class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
Forms表单
Place various form controls and components within a navbar:在导航栏中放置各种表单控件和组件:
<nav class="navbar navbar-light bg-light">
<div class="container-fluid">
<form class="d-flex">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</nav>
Immediate child elements of .navbar
use flex layout and will default to justify-content: space-between
. .navbar
的直接子元素使用弹性布局,并将默认为justify-content: space-between
。Use additional flex utilities as needed to adjust this behavior.根据需要使用其他弹性实用程序来调整此行为。
<nav class="navbar navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand">Navbar</a>
<form class="d-flex">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</nav>
Input groups work, too. 输入组也起作用。If your navbar is an entire form, or mostly a form, you can use the 如果导航栏是一个完整的表单,或者主要是一个表单,那么可以使用<form>
element as the container and save some HTML.<form>
元素作为容器并保存一些HTML。
<nav class="navbar navbar-light bg-light">
<form class="container-fluid">
<div class="input-group">
<span class="input-group-text" id="basic-addon1">@</span>
<input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1">
</div>
</form>
</nav>
Various buttons are supported as part of these navbar forms, too. 这些导航栏表单也支持各种按钮。This is also a great reminder that vertical alignment utilities can be used to align different sized elements.这也是一个很好的提醒,垂直对齐实用程序可以用于对齐不同大小的元素。
<nav class="navbar navbar-light bg-light">
<form class="container-fluid justify-content-start">
<button class="btn btn-outline-success me-2" type="button">Main button</button>
<button class="btn btn-sm btn-outline-secondary" type="button">Smaller button</button>
</form>
</nav>
Text文本
Navbars may contain bits of text with the help of 导航栏可以在.navbar-text
. .navbar-text
的帮助下包含文本位。This class adjusts vertical alignment and horizontal spacing for strings of text.此类调整文本字符串的垂直对齐方式和水平间距。
<nav class="navbar navbar-light bg-light">
<div class="container-fluid">
<span class="navbar-text">
Navbar text with an inline element
</span>
</div>
</nav>
Mix and match with other components and utilities as needed.根据需要与其他组件和公用设施混合和匹配。
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar w/ text</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarText">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Features</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Pricing</a>
</li>
</ul>
<span class="navbar-text">
Navbar text with an inline element
</span>
</div>
</div>
</nav>
Color schemes配色方案
Theming the navbar has never been easier thanks to the combination of theming classes and 由于主题类和background-color
utilities. background-color
实用程序的结合,导航栏的主题化从未如此简单。Choose from 选择.navbar-light
for use with light background colors, or .navbar-dark
for dark background colors. .navbar-light
用于浅色背景色,或.navbar-dark
用于深色背景色。Then, customize with 然后,使用.bg-*
utilities..bg-*
实用程序进行自定义。
<nav class="navbar navbar-dark bg-dark">
<!-- Navbar content -->
</nav>
<nav class="navbar navbar-dark bg-primary">
<!-- Navbar content -->
</nav>
<nav class="navbar navbar-light" style="background-color: #e3f2fd;">
<!-- Navbar content -->
</nav>
Containers容器
Although it’s not required, you can wrap a navbar in a 虽然这不是必需的,但您可以将导航条包装在.container
to center it on a page–though note that an inner container is still required. .container
中,使其在页面上居中,但请注意,仍然需要内部容器。Or you can add a container inside the 或者,您可以在.navbar
to only center the contents of a fixed or static top navbar..navbar
中添加一个容器,以仅将固定或静态顶部导航栏的内容居中。
<div class="container">
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
</div>
</nav>
</div>
Use any of the responsive containers to change how wide the content in your navbar is presented.使用任何响应容器来更改导航栏中内容的显示范围。
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-md">
<a class="navbar-brand" href="#">Navbar</a>
</div>
</nav>
Placement位置
Use our position utilities to place navbars in non-static positions. 使用位置实用程序将导航栏放置在非静态位置。Choose from fixed to the top, fixed to the bottom, or stickied to the top (scrolls with the page until it reaches the top, then stays there). 选择固定到顶部、固定到底部或粘贴到顶部(滚动页面直到到达顶部,然后停留在那里)。Fixed navbars use 固定导航条使用position: fixed
, meaning they’re pulled from the normal flow of the DOM and may require custom CSS (e.g., padding-top
on the <body>
) to prevent overlap with other elements.position: fixed
,这意味着它们从DOM的正常流中被拉出来,可能需要自定义CSS(例如,<body>
上的padding-top
)以防止与其他元素重叠。
Also note that 还要注意,.sticky-top
uses position: sticky
, which isn’t fully supported in every browser..sticky-top
使用position: sticky
,这不是每个浏览器都完全支持的。
<nav class="navbar navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Default</a>
</div>
</nav>
<nav class="navbar fixed-top navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Fixed top</a>
</div>
</nav>
<nav class="navbar fixed-bottom navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Fixed bottom</a>
</div>
</nav>
<nav class="navbar sticky-top navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Sticky top</a>
</div>
</nav>
Scrolling滚动
Add 将.navbar-nav-scroll
to a .navbar-nav
(or other navbar sub-component) to enable vertical scrolling within the toggleable contents of a collapsed navbar. .navbar-nav-scroll
添加到.navbar-nav
(或其他导航栏子组件),以在折叠导航栏的可切换内容内启用垂直滚动。By default, scrolling kicks in at 默认情况下,滚动速度为75vh
(or 75% of the viewport height), but you can override that with the local CSS custom property --bs-navbar-height
or custom styles. 75vh
(或视口高度的75%),但您可以使用本地CSS自定义属性--bs-navbar-height
或自定义样式来覆盖它。At larger viewports when the navbar is expanded, content will appear as it does in a default navbar.当导航栏展开时,在较大的视口中,内容将显示为默认导航栏中的内容。
Please note that this behavior comes with a potential drawback of 请注意,当设置overflow
—when setting overflow-y: auto
(required to scroll the content here), overflow-x
is the equivalent of auto
, which will crop some horizontal content.overflow-y:auto
(需要滚动此处的内容)时,这种行为可能存在overflow
的缺点,overflow-x
相当于auto
,它将裁剪一些水平内容。
Here’s an example navbar using 这里有一个使用.navbar-nav-scroll
with style="--bs-scroll-height: 100px;"
, with some extra margin utilities for optimum spacing..navbar-nav-scroll
配合style="--bs-scroll-height: 100px;"
的示例,它具有一些额外的余量实用程序以实现最佳间距。
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar scroll</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarScroll" aria-controls="navbarScroll" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarScroll">
<ul class="navbar-nav me-auto my-2 my-lg-0 navbar-nav-scroll" style="--bs-scroll-height: 100px;">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="navbarScrollingDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Link
</a>
<ul class="dropdown-menu" aria-labelledby="navbarScrollingDropdown">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Link</a>
</li>
</ul>
<form class="d-flex">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</div>
</nav>
Responsive behaviors反应性行为
Navbars can use 导航栏可以使用.navbar-toggler
, .navbar-collapse
, and .navbar-expand{-sm|-md|-lg|-xl|-xxl}
classes to determine when their content collapses behind a button. .navbar-toggler
、.navbar-collapse
和.navbar-expand{-sm|-md|-lg|-xl|-xxl}
类来确定它们的内容何时折叠到按钮后面。In combination with other utilities, you can easily choose when to show or hide particular elements.结合其他实用程序,您可以轻松选择何时显示或隐藏特定元素。
For navbars that never collapse, add the 对于从不折叠的导航栏,请在导航栏上添加.navbar-expand
class on the navbar. .navbar-expand
类。For navbars that always collapse, don’t add any 对于总是折叠的导航栏,不要添加任何.navbar-expand
class..navbar-expand
类。
Toggler
Navbar togglers are left-aligned by default, but should they follow a sibling element like a 默认情况下,导航栏开关是左对齐的,但如果它们跟随.navbar-brand
, they’ll automatically be aligned to the far right. .navbar-brand
等同级元素,它们将自动对齐到最右侧。Reversing your markup will reverse the placement of the toggler. 反转标记将反转切换开关的位置。Below are examples of different toggle styles.以下是不同切换样式的示例。
With no 在最小断点处没有显示.navbar-brand
shown at the smallest breakpoint:.navbar-brand
:
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarTogglerDemo01" aria-controls="navbarTogglerDemo01" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarTogglerDemo01">
<a class="navbar-brand" href="#">Hidden brand</a>
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
</li>
</ul>
<form class="d-flex">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</div>
</nav>
With a brand name shown on the left and toggler on the right:左侧显示品牌名称,右侧显示切换开关:
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarTogglerDemo02" aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarTogglerDemo02">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
</li>
</ul>
<form class="d-flex">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</div>
</nav>
With a toggler on the left and brand name on the right:左侧有一个开关,右侧有品牌名称:
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarTogglerDemo03" aria-controls="navbarTogglerDemo03" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="#">Navbar</a>
<div class="collapse navbar-collapse" id="navbarTogglerDemo03">
<ul class="navbar-nav me-auto mb-2 mb-lg-0">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Disabled</a>
</li>
</ul>
<form class="d-flex">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</div>
</nav>
External content外部内容
Sometimes you want to use the collapse plugin to trigger a container element for content that structurally sits outside of the 有时您希望使用折叠插件为结构上位于.navbar
. .navbar
外部的内容触发容器元素。Because our plugin works on the 因为插件工作在id
and data-bs-target
matching, that’s easily done!id
和data-bs-target
匹配上,这很容易做到!
<div class="collapse" id="navbarToggleExternalContent">
<div class="bg-dark p-4">
<h5 class="text-white h4">Collapsed content</h5>
<span class="text-muted">Toggleable via the navbar brand.</span>
</div>
</div>
<nav class="navbar navbar-dark bg-dark">
<div class="container-fluid">
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
</div>
</nav>
When you do this, we recommend including additional JavaScript to move the focus programmatically to the container when it is opened. 当您这样做时,我们建议在打开容器时添加其他JavaScript,以编程方式将焦点移动到容器。Otherwise, keyboard users and users of assistive technologies will likely have a hard time finding the newly revealed content - particularly if the container that was opened comes before the toggler in the document’s structure. 否则,键盘用户和辅助技术用户可能很难找到新显示的内容,特别是如果打开的容器位于文档结构中的切换开关之前。We also recommend making sure that the toggler has the 我们还建议确保切换器具有aria-controls
attribute, pointing to the id
of the content container. aria-controls
属性,指向内容容器的id
。In theory, this allows assistive technology users to jump directly from the toggler to the container it controls–but support for this is currently quite patchy.理论上,这允许辅助技术用户直接从触发器跳到它控制的容器,但目前对此的支持还很不完善。
Offcanvas侧滑
Transform your expanding and collapsing navbar into an offcanvas drawer with the offcanvas plugin. 使用offcanvas插件将扩展和折叠导航栏转换为offcanvas抽屉。We extend both the offcanvas default styles and use our 我们扩展了两种非画布默认样式,并使用.navbar-expand-*
classes to create a dynamic and flexible navigation sidebar..navbar-expand-*
类创建动态灵活的导航侧边栏。
In the example below, to create an offcanvas navbar that is always collapsed across all breakpoints, omit the 在下面的示例中,要创建始终在所有断点之间折叠的画布外导航栏,请完全省略.navbar-expand-*
class entirely..navbar-expand-*
类。
<nav class="navbar navbar-light bg-light fixed-top">
<div class="container-fluid">
<a class="navbar-brand" href="#">Offcanvas navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasNavbar" aria-controls="offcanvasNavbar">
<span class="navbar-toggler-icon"></span>
</button>
<div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasNavbar" aria-labelledby="offcanvasNavbarLabel">
<div class="offcanvas-header">
<h5 class="offcanvas-title" id="offcanvasNavbarLabel">Offcanvas</h5>
<button type="button" class="btn-close text-reset" data-bs-dismiss="offcanvas" aria-label="Close"></button>
</div>
<div class="offcanvas-body">
<ul class="navbar-nav justify-content-end flex-grow-1 pe-3">
<li class="nav-item">
<a class="nav-link active" aria-current="page" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" id="offcanvasNavbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</a>
<ul class="dropdown-menu" aria-labelledby="offcanvasNavbarDropdown">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li>
<hr class="dropdown-divider">
</li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</li>
</ul>
<form class="d-flex">
<input class="form-control me-2" type="search" placeholder="Search" aria-label="Search">
<button class="btn btn-outline-success" type="submit">Search</button>
</form>
</div>
</div>
</div>
</nav>
To create an offcanvas navbar that expands into a normal navbar at a specific breakpoint like lg
, use .navbar-expand-lg
.
<nav class="navbar navbar-light navbar-expand-lg bg-light fixed-top">
<a class="navbar-brand" href="#">Offcanvas navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="offcanvas" data-bs-target="#navbarOffcanvasLg" aria-controls="navbarOffcanvasLg">
<span class="navbar-toggler-icon"></span>
</button>
<div class="offcanvas offcanvas-end" tabindex="-1" id="navbarOffcanvasLg" aria-labelledby="navbarOffcanvasLgLabel">
...
</div>
</nav>
Sass
Variables变量
$navbar-padding-y: $spacer * .5;
$navbar-padding-x: null;
$navbar-nav-link-padding-x: .5rem;
$navbar-brand-font-size: $font-size-lg;
// Compute the navbar-brand padding-y so the navbar-brand will have the same height as navbar-text and nav-link
$nav-link-height: $font-size-base * $line-height-base + $nav-link-padding-y * 2;
$navbar-brand-height: $navbar-brand-font-size * $line-height-base;
$navbar-brand-padding-y: ($nav-link-height - $navbar-brand-height) * .5;
$navbar-brand-margin-end: 1rem;
$navbar-toggler-padding-y: .25rem;
$navbar-toggler-padding-x: .75rem;
$navbar-toggler-font-size: $font-size-lg;
$navbar-toggler-border-radius: $btn-border-radius;
$navbar-toggler-focus-width: $btn-focus-width;
$navbar-toggler-transition: box-shadow .15s ease-in-out;
$navbar-dark-color: rgba($white, .55);
$navbar-dark-hover-color: rgba($white, .75);
$navbar-dark-active-color: $white;
$navbar-dark-disabled-color: rgba($white, .25);
$navbar-dark-toggler-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-dark-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>");
$navbar-dark-toggler-border-color: rgba($white, .1);
$navbar-light-color: rgba($black, .55);
$navbar-light-hover-color: rgba($black, .7);
$navbar-light-active-color: rgba($black, .9);
$navbar-light-disabled-color: rgba($black, .3);
$navbar-light-toggler-icon-bg: url("data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke='#{$navbar-light-color}' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg>");
$navbar-light-toggler-border-color: rgba($black, .1);
$navbar-light-brand-color: $navbar-light-active-color;
$navbar-light-brand-hover-color: $navbar-light-active-color;
$navbar-dark-brand-color: $navbar-dark-active-color;
$navbar-dark-brand-hover-color: $navbar-dark-active-color;
Loop环
Responsive navbar expand/collapse classes (e.g., 响应性导航栏扩展/折叠类(例如,.navbar-expand-lg
) are combined with the $breakpoints
map and generated through a loop in scss/_navbar.scss
..navbar-expand-lg
)与$breakpoints
映射相结合,并通过scss/_navbar.scss
中的循环生成。
// Generate series of `.navbar-expand-*` responsive classes for configuring
// where your navbar collapses.
.navbar-expand {
@each $breakpoint in map-keys($grid-breakpoints) {
$next: breakpoint-next($breakpoint, $grid-breakpoints);
$infix: breakpoint-infix($next, $grid-breakpoints);
// stylelint-disable-next-line scss/selector-no-union-class-name
&#{$infix} {
@include media-breakpoint-up($next) {
flex-wrap: nowrap;
justify-content: flex-start;
.navbar-nav {
flex-direction: row;
.dropdown-menu {
position: absolute;
}
.nav-link {
padding-right: $navbar-nav-link-padding-x;
padding-left: $navbar-nav-link-padding-x;
}
}
.navbar-nav-scroll {
overflow: visible;
}
.navbar-collapse {
display: flex !important; // stylelint-disable-line declaration-no-important
flex-basis: auto;
}
.navbar-toggler {
display: none;
}
.offcanvas-header {
display: none;
}
.offcanvas {
position: inherit;
bottom: 0;
z-index: 1000;
flex-grow: 1;
visibility: visible !important; // stylelint-disable-line declaration-no-important
background-color: transparent;
border-right: 0;
border-left: 0;
@include transition(none);
transform: none;
}
.offcanvas-top,
.offcanvas-bottom {
height: auto;
border-top: 0;
border-bottom: 0;
}
.offcanvas-body {
display: flex;
flex-grow: 0;
padding: 0;
overflow-y: visible;
}
}
}
}
}