Base Nav
Navigation bits in Bootstrap all share a general Nav
component and styles. Swap variant
s to switch between each
style. The base Nav
component is built with flexbox and
provide a strong foundation for building all types of navigation
components.
<Nav>
markup is very flexible and styling is controlled via classes so you can
use whatever elements you like to build your navs. By default <Nav>
and <Nav.Item>
both
render <div>
s instead of <ul>
and <li>
elements respectively.
This because it's possible (and common) to leave off the <Nav.Item>
's and
render a <Nav.Link>
directly, which would create invalid markup by default (ul > a
).
When a <ul>
is appropriate you can render one via the as
prop; be sure to
also set your items to <li>
as well!
Alignment and orientation
You can control the the direction and orientation of the
Nav
by making use of the flexbox layout utility classes.
By default, navs are left-aligned, but that is easily changed to center or right-aligned.
Or right-aligned
Vertical
Create stacked navs by changing the flex item direction with the
.flex-column
class, or your own css. You can even use the
responsive versions to stack in some viewports but not others (e.g.
.flex-sm-column
).
Tabs
Visually represent nav items as "tabs". This style pairs nicely with tabbable regions created by our Tab components.
Note: creating a vertical nav (.flex-column
) with tabs styling is unsupported by Bootstrap's default stylesheet.
Pills
An alternative visual variant.
Fill and justify
Force the contents of your nav to extend the full available width. To
proportionately fill the space use fill
. Notice that the
nav is the entire width but each nav item is a different size.
If you want each NavItem to be the same size use justify
.
Using dropdowns
You can mix and match the Dropdown components with the NavLink and NavItem components to create a Dropdown that plays well in a Nav component
<Dropdown as={NavItem}> <Dropdown.Toggle as={NavLink}>Click to see more…</Dropdown.Toggle> <Dropdown.Menu> <Dropdown.Item>Hello there!</Dropdown.Item> </Dropdown.Menu> </Dropdown>;
The above demonstrates how flexible the component model can be. But if
you didn't want to roll your own versions we've included a
straight-forward <NavDropdown>
that works for most cases.
API
import Nav from 'react-bootstrap/Nav'
Copy import code for the Nav componentName | Type | Default | Description |
---|---|---|---|
activeKey | string | Marks the NavItem with a matching | |
as | elementType | You can use a custom element type for this component. | |
cardHeaderBsPrefix | string | ||
defaultActiveKey | EventKey | ||
fill | boolean | false | Have all |
justify | boolean | false | Have all |
navbar | boolean | Apply styling an alignment for use in a Navbar. This prop will be set automatically when the Nav is used inside a Navbar. | |
navbarBsPrefix | string | ||
navbarScroll | boolean | Enable vertical scrolling within the toggleable contents of a collapsed Navbar. | |
onKeyDown | function | ||
onSelect | function | A callback fired when a NavItem is selected.
| |
role | string | ARIA role for the Nav, in the context of a TabContainer, the default will be set to "tablist", but can be overridden by the Nav when set explicitly. When the role is "tablist", NavLink focus is managed according to the ARIA authoring practices for tabs: https://www.w3.org/TR/2013/WD-wai-aria-practices-20130307/#tabpanel | |
variant | 'tabs' | 'pills' | The visual variant of the nav items. | |
bsPrefix | string | 'nav' | Change the underlying component CSS base class name and modifier class names prefix. This is an escape hatch for working with heavily customized bootstrap css. |
Nav.Itemview source file
import Nav from 'react-bootstrap/Nav'
Copy import code for the Nav componentName | Type | Default | Description |
---|---|---|---|
as | elementType | <div> | You can use a custom element type for this component. |
role | string | The ARIA role of the component | |
bsPrefix | string | 'nav-item' | Change the underlying component CSS base class name and modifier class names prefix. This is an escape hatch for working with heavily customized bootstrap css. |
Nav.Linkview source file
import Nav from 'react-bootstrap/Nav'
Copy import code for the Nav componentName | Type | Default | Description |
---|---|---|---|
active | boolean | The active state of the NavItem item. | |
as | elementType | <a> | You can use a custom element type for this component. |
disabled | boolean | false | The disabled state of the NavItem item. |
eventKey | string | number | Uniquely idenifies the | |
href | string | The HTML href attribute for the | |
onSelect | function | A callback fired when the
| |
role | string | The ARIA role for the | |
bsPrefix | string | 'nav-link' | Change the underlying component CSS base class name and modifier class names prefix. This is an escape hatch for working with heavily customized bootstrap css. |
NavDropdownview source file
import NavDropdown from 'react-bootstrap/NavDropdown'
Copy import code for the NavDropdown componentName | Type | Default | Description |
---|---|---|---|
active | boolean | Style the toggle NavLink as active | |
disabled | boolean | Disables the toggle NavLink | |
id required | string|number | An html id attribute for the Toggle button, necessary for assistive technologies, such as screen readers. | |
menuRole | string | An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown | |
onClick | function | An | |
renderMenuOnMount | boolean | Whether to render the dropdown menu in the DOM before the first time it is shown | |
rootCloseEvent | string | Which event when fired outside the component will cause it to be closed. see DropdownMenu for more details | |
title required | node | The content of the non-toggle Button. | |
bsPrefix | string | Change the underlying component CSS base class name and modifier class names prefix. This is an escape hatch for working with heavily customized bootstrap css. |