Navs and tabs

Base nav

Navigation bits in Bootstrap all share a general Nav component and styles. Swap variants 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 activeKey="/home">
    <Nav.Item>
        <Nav.Link href="/home">Active</Nav.Link>
    </Nav.Item>
    <Nav.Item>
        <Nav.Link eventKey="link-1">Link</Nav.Link>
    </Nav.Item>
    <Nav.Item>
        <Nav.Link eventKey="link-2">Link</Nav.Link>
    </Nav.Item>
    <Nav.Item>
        <Nav.Link eventKey="disabled" disabled>
        Disabled
        </Nav.Link>
    </Nav.Item>
</Nav> 

<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).

<Nav defaultActiveKey="/home" as="ul">
    <Nav.Item as="li">
        <Nav.Link href="#">Active</Nav.Link>
    </Nav.Item>
    <Nav.Item as="li">
        <Nav.Link eventKey="link-1">Link</Nav.Link>
    </Nav.Item>
    <Nav.Item as="li">
        <Nav.Link eventKey="link-2">Link</Nav.Link>
    </Nav.Item>
</Nav> 

Available styles

Horizontal alignment

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.

<Nav className="justify-content-center" activeKey="#">
    <Nav.Item>
    <Nav.Link href="/home">Active</Nav.Link>
    </Nav.Item>
    <Nav.Item>
    <Nav.Link eventKey="link-1">Link</Nav.Link>
    </Nav.Item>
    <Nav.Item>
    <Nav.Link eventKey="link-2">Link</Nav.Link>
    </Nav.Item>
    <Nav.Item>
    <Nav.Link eventKey="disabled" disabled>
        Disabled
    </Nav.Link>
    </Nav.Item>
</Nav> 
<Nav className="justify-content-end" activeKey="/home">
    <Nav.Item>
      <Nav.Link href="/home">Active</Nav.Link>
    </Nav.Item>
    <Nav.Item>
      <Nav.Link eventKey="link-1">Link</Nav.Link>
    </Nav.Item>
    <Nav.Item>
      <Nav.Link eventKey="link-2">Link</Nav.Link>
    </Nav.Item>
    <Nav.Item>
      <Nav.Link eventKey="disabled" disabled>
        Disabled
      </Nav.Link>
    </Nav.Item>
  </Nav>
 

Vertical alignment

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).

<Nav defaultActiveKey="#" className="flex-column">
    <Nav.Link href="#">Active</Nav.Link>
    <Nav.Link eventKey="link-1">Link</Nav.Link>
    <Nav.Link eventKey="link-2">Link</Nav.Link>
    <Nav.Link eventKey="disabled" disabled>
        Disabled
    </Nav.Link>
</Nav>
 

Tabs

Visually represent nav items as "tabs". This style pairs nicely with tabbable regions created by our Tab components.

<Nav variant="tabs" defaultActiveKey="#">
    <Nav.Item>
        <Nav.Link href="#">Active</Nav.Link>
    </Nav.Item>
    <Nav.Item>
        <Nav.Link eventKey="link-1">Option 2</Nav.Link>
    </Nav.Item>
    <Nav.Item>
        <Nav.Link eventKey="disabled" disabled>
        Disabled
        </Nav.Link>
    </Nav.Item>
</Nav>
 

Pills

An alternative visual variant.

<Nav variant="pills" defaultActiveKey="#">
    <Nav.Item>
        <Nav.Link href="#">Active</Nav.Link>
    </Nav.Item>
    <Nav.Item>
        <Nav.Link eventKey="link-1">Option 2</Nav.Link>
    </Nav.Item>
    <Nav.Item>
        <Nav.Link eventKey="disabled" disabled>
        Disabled
        </Nav.Link>
    </Nav.Item>
</Nav>
 

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.

<Nav fill variant="tabs" defaultActiveKey="#">
    <Nav.Item>
        <Nav.Link href="#">Active</Nav.Link>
    </Nav.Item>
    <Nav.Item>
        <Nav.Link eventKey="link-1">Loooonger NavLink</Nav.Link>
    </Nav.Item>
    <Nav.Item>
        <Nav.Link eventKey="link-2">Link</Nav.Link>
    </Nav.Item>
    <Nav.Item>
        <Nav.Link eventKey="disabled" disabled>
        Disabled
        </Nav.Link>
    </Nav.Item>
</Nav>
 

If you want each NavItem to be the same size use justify.

<Nav justify variant="tabs" defaultActiveKey="#">
    <Nav.Item>
        <Nav.Link href="#">Active</Nav.Link>
    </Nav.Item>
    <Nav.Item>
        <Nav.Link eventKey="link-1">Loooonger NavLink</Nav.Link>
    </Nav.Item>
    <Nav.Item>
        <Nav.Link eventKey="link-2">Link</Nav.Link>
    </Nav.Item>
    <Nav.Item>
        <Nav.Link eventKey="disabled" disabled>
        Disabled
        </Nav.Link>
    </Nav.Item>
</Nav>
 

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

<Nav variant="pills" activeKey="1" onSelect={handleSelect}>
    <Nav.Item>
        <Nav.Link eventKey="1" href="#/home">
        NavLink 1 content
        </Nav.Link>
    </Nav.Item>
    <Nav.Item>
        <Nav.Link eventKey="2" title="Item">
        NavLink 2 content
        </Nav.Link>
    </Nav.Item>
    <Nav.Item>
        <Nav.Link eventKey="3" disabled>
        NavLink 3 content
        </Nav.Link>
    </Nav.Item>
    <NavDropdown title="Dropdown" id="nav-dropdown">
        <NavDropdown.Item eventKey="4.1">Action</NavDropdown.Item>
        <NavDropdown.Item eventKey="4.2">Another action</NavDropdown.Item>
        <NavDropdown.Item eventKey="4.3">Something else here</NavDropdown.Item>
        <NavDropdown.Divider />
        <NavDropdown.Item eventKey="4.4">Separated link</NavDropdown.Item>
    </NavDropdown>
</Nav>