Navigation available in Bootstrap share general markup and styles, from the base .nav class to the active and disabled states.
Roll your own navigation by extending the base .nav
component. Use <ul>
or roll your own with say a <nav>
element. Space out nav links in a horizontal band with .nav-inline
.
<nav class="nav nav-inline">
<a class="nav-link active" href="#">Active</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link disabled" href="#">Disabled</a>
</nav>
<ul class="nav nav-inline">
<li class="nav-item">
<a class="nav-link active" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#">Disabled</a>
</li>
</ul>
Add the .nav-tabs
class to generate a tabbed interface. Also add dropdowns menu.
<ul class="nav nav-tabs">
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#home" role="tab">Home</a>
</li>
...
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Dropdown</a>
<div class="dropdown-menu">
<a class="dropdown-item" href="#">Action</a>
<a class="dropdown-item" href="#">Another action</a>
</div>
</li>
</ul>
Add .nav-underline
to the .nav.nav-tabs
, and use tabs with lines below.
<ul class="nav nav-tabs nav-underline">
...
</ul>
Use .nav-collapse
in .nav-tabs
.
<ul class="nav nav-tabs nav-underline nav-collapse">
<li class="nav-item">
<a class="nav-link" href="javascript:;">Deploy</a>
</li>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle active" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Arquivos</a>
<div class="dropdown-menu">
<a class="dropdown-item active" data-dropdown="Arquivos" href="/">
<span class="icon icon icon-file-upload icon-muted mr-1"></span>Gerenciador
</a>
<a class="dropdown-item" data-dropdown="Arquivos" href="/">
<span class="icon icon icon-synchronize-timeout icon-muted mr-1"></span>Pontos de restauração
</a>
</div>
</li>
<li class="nav-item">
<a class="nav-link" href="#database">Banco de dados</a>
</li>
<li class="nav-item">
<a class="nav-link dropdown-toggle" href="#settings" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">Configurações</a>
<div class="dropdown-menu">
<a class="dropdown-item" data-dropdown="Configurações" href="/">
<span class="icon icon icon-file-upload icon-muted mr-1"></span>Gerenciador
</a>
<a class="dropdown-item" data-dropdown="Configurações" href="/">
<span class="icon icon icon-synchronize-timeout icon-muted mr-1"></span>Pontos de restauração
</a>
</div>
</li>
<li class="nav-item">
<a class="nav-link" href="#logs">Logs</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#addons">Add-ons</a>
</li>
</ul>
Add .nav-overline
to the .nav.nav-tabs
, and use tabs with lines above.
<ul class="nav nav-tabs nav-overline">
...
</ul>
Add the .nav-justified
class to make the tabs responsive
<ul class="nav nav-tabs nav-justified">
...
</ul>
<ul class="nav nav-tabs nav-underline nav-justified">
...
</ul>
Take that same HTML, but use .nav-pills
instead:
<ul class="nav nav-pills">
...
</ul>
Add .nav-stacked
to the .nav.nav-pills
to stack them vertically.
<ul class="nav nav-pills nav-stacked">
<li class="nav-item">
<a class="nav-link active" href="#">Active</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#">Disabled</a>
</li>
</ul>
As always, stacked pills are possible without <ul>
s.
<nav class="nav nav-pills nav-stacked">
<a class="nav-link active" href="#">Active</a>
<a class="nav-link" href="#">Link</a>
<a class="nav-link disabled" href="#">Disabled</a>
</nav>
You can activate a tab or pill navigation without writing any JavaScript by simply specifying data-toggle="tab"
or data-toggle="pill"
on an element. Use these data attributes on .nav-tabs
or .nav-pills
.
Raw denim you probably haven't heard of them jean shorts Austin.
Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid.
Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic.
<ul class="nav nav-tabs nav-underline" role="tablist">
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#home" role="tab">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#profile" role="tab">Profile</a>
</li>
...
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div class="tab-pane active" id="home" role="tabpanel">...</div>
<div class="tab-pane" id="profile" role="tabpanel">...</div>
<div class="tab-pane" id="settings" role="tabpanel">...</div>
</div>
Add the .tab-content-block
class, and delete the margin-bottom
in .nav
.
Raw denim you probably haven't heard of them jean shorts Austin.
Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid.
Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic.
<!-- Delete margin-bottom with .mb-0 -->
<ul class="nav nav-tabs nav-justified mb-0" role="tablist">
...
</ul>
<div class="tab-content tab-content-block">
...
</div>
Enable tabbable tabs via JavaScript (each tab needs to be activated individually):
$('#myTab a').click(function (e) {
e.preventDefault()
$(this).tab('show')
})
You can activate individual tabs in several ways:
$('#myTab a[href="#profile"]').tab('show') // Select tab by name
$('#myTab a:first').tab('show') // Select first tab
$('#myTab a:last').tab('show') // Select last tab
$('#myTab li:eq(2) a').tab('show') // Select third tab (0-indexed)
To make tabs fade in, add .fade
to each .tab-pane
. The first tab pane must also have .in
to make the initial content visible.
<div class="tab-content">
<div class="tab-pane fade in active" id="home" role="tabpanel">...</div>
<div class="tab-pane fade" id="profile" role="tabpanel">...</div>
<div class="tab-pane fade" id="settings" role="tabpanel">...</div>
</div>
Activates a tab element and content container. Tab should have either a data-target
or an href
targeting a container node in the DOM.
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item">
<a class="nav-link active" data-toggle="tab" href="#home" role="tab" aria-controls="home">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#profile" role="tab" aria-controls="profile">Profile</a>
</li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="home" role="tabpanel">...</div>
<div class="tab-pane" id="profile" role="tabpanel">...</div>
</div>
<script>
$(function () {
$('#myTab a:last').tab('show')
})
</script>
Selects the given tab and shows its associated pane. Any other tab that was previously selected becomes unselected and its associated pane is hidden. Returns to the caller before the tab pane has actually been shown (i.e. before the shown.bs.tab
event occurs).
$('#someTab').tab('show')
When showing a new tab, the events fire in the following order:
hide.bs.tab
(on the current active tab)show.bs.tab
(on the to-be-shown tab)hidden.bs.tab
(on the previous active tab, the same one as for the hide.bs.tab
event)shown.bs.tab
(on the newly-active just-shown tab, the same one as for the show.bs.tab
event)If no tab was already active, then the hide.bs.tab
and hidden.bs.tab
events will not be fired.
Event Type | Description |
---|---|
show.bs.tab | This event fires on tab show, but before the new tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively. |
shown.bs.tab | This event fires on tab show after a tab has been shown. Use event.target and event.relatedTarget to target the active tab and the previous active tab (if available) respectively. |
hide.bs.tab | This event fires when a new tab is to be shown (and thus the previous active tab is to be hidden). Use event.target and event.relatedTarget to target the current active tab and the new soon-to-be-active tab, respectively. |
hidden.bs.tab | This event fires after a new tab is shown (and thus the previous active tab is hidden). Use event.target and event.relatedTarget to target the previous active tab and the new active tab, respectively. |
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
e.target // newly activated tab
e.relatedTarget // previous active tab
})
If you are using navs to provide a navigation bar, be sure to add a role="navigation"
to the most logical parent container of the <ul>
, or wrap a <nav>
element around the whole navigation. Do not add the role to the <ul>
.