navbar.md 14.7 KB
Newer Older
Mark Otto's avatar
Mark Otto committed
1
---
Mark Otto's avatar
Mark Otto committed
2
layout: docs
Mark Otto's avatar
Mark Otto committed
3
title: Navbar
Mark Otto's avatar
Mark Otto committed
4
description: Documentation and examples for Bootstrap's powerful, responsive navigation header.
5
group: components
Mark Otto's avatar
Mark Otto committed
6
7
---

8
The navbar is a wrapper that positions branding, navigation, and other elements in a concise header. It's easily extensible and, thanks to our Collapse plugin, can easily integrate responsive behaviors.
Mark Otto's avatar
Mark Otto committed
9

Mark Otto's avatar
Mark Otto committed
10
11
12
13
14
## Contents

* Will be replaced with the ToC, excluding the "Contents" header
{:toc}

Mark Otto's avatar
Mark Otto committed
15
## How it works
Mark Otto's avatar
Mark Otto committed
16
17
18

Here's what you need to know before getting started with the navbar:

19
- Navbars require a wrapping `.navbar` and [color scheme](#color-schemes) classes.
Mark Otto's avatar
Mark Otto committed
20
- Navbars and their contents are fluid by default. Use [optional containers](#containers) to limit their horizontal width.
Mark Otto's avatar
Mark Otto committed
21
22
- Navbars and their contents are built with flexbox, providing easy alignment options via utility classes.
- Navbars are responsive by default, but you can easily modify them to change that. Responsive behavior depends on our Collapse JavaScript plugin.
Mark Otto's avatar
Mark Otto committed
23
- Ensure accessibility by using a `<nav>` element or, if using a more generic element such as a `<div>`, add a `role="navigation"` to every navbar to explicitly identify it as a landmark region for users of assistive technologies.
Mark Otto's avatar
Mark Otto committed
24

Mark Otto's avatar
Mark Otto committed
25
26
Read on for an example and list of supported sub-components.

Mark Otto's avatar
Mark Otto committed
27
## Supported content
Mark Otto's avatar
Mark Otto committed
28

29
Navbars come with built-in support for a handful of sub-components. Choose from the following as needed:
Mark Otto's avatar
Mark Otto committed
30

Mark Otto's avatar
Mark Otto committed
31
32
- `.navbar-brand` for your company, product, or project name
- `.navbar-nav` for a full-height and lightweight navigation (including support for dropdowns)
33
- `.navbar-toggler` for use with our collapse plugin and other [navigation toggling](#collapsible-content) behaviors.
34
35
- Inline forms with `.float-` utilities for form controls and components.
- `.navbar-text` for adding vertically centered strings of text.
36
- `.inline-form` for form controls and more.
37
- `.collapse.navbar-collapse` for grouping and hiding navbar contents by a parent breakpoint.
Mark Otto's avatar
Mark Otto committed
38

39
Here's an example of all the sub-components included in a responsive light-themed navbar.
Mark Otto's avatar
Mark Otto committed
40

Mark Otto's avatar
Mark Otto committed
41
{% example html %}
42
<nav class="navbar navbar-light navbar-toggleable-md bg-faded">
43
  <button class="navbar-toggler navbar-toggler-right hidden-lg-up" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"></button>
Mark Otto's avatar
Mark Otto committed
44
  <a class="navbar-brand" href="#">Navbar</a>
45

46
  <div class="collapse navbar-collapse" id="navbarSupportedContent">
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
    <ul class="nav navbar-nav">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></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>
    <form class="form-inline mt-2 mt-md-0">
      <input class="form-control" type="text" placeholder="Search">
      <button class="btn btn-outline-success my-2 my-md-0" type="submit">Search</button>
    </form>
  </div>
Mark Otto's avatar
Mark Otto committed
63
</nav>
Mark Otto's avatar
Mark Otto committed
64
65
{% endexample %}

66
67
### Brand

Mark Otto's avatar
Mark Otto committed
68
The `.navbar-brand` can be applied to most elements, but an anchor works best as some elements might require utility classes or custom styles.
69
70

{% example html %}
71
<!-- As a link -->
72
73
74
75
<nav class="navbar navbar-light bg-faded">
  <a class="navbar-brand" href="#">Navbar</a>
</nav>

76
<!-- As a heading -->
77
<nav class="navbar navbar-light bg-faded">
78
  <h1 class="navbar-brand mb-0">Navbar</h1>
79
80
81
</nav>
{% endexample %}

82
83
84
85
86
87
Adding images to the `.navbar-brand` will likely always require custom styles or utilities to properly size. Here are some examples to demonstrate.

{% example html %}
<!-- Just an image -->
<nav class="navbar navbar-light bg-faded">
  <a class="navbar-brand" href="#">
Mark Otto's avatar
Mark Otto committed
88
    <img src="{{ site.baseurl }}/assets/brand/bootstrap-solid.svg" width="30" height="30" alt="">
89
90
91
92
93
94
95
96
  </a>
</nav>
{% endexample %}

{% example html %}
<!-- Image and text -->
<nav class="navbar navbar-light bg-faded">
  <a class="navbar-brand" href="#">
Mark Otto's avatar
Mark Otto committed
97
    <img src="{{ site.baseurl }}/assets/brand/bootstrap-solid.svg" width="30" height="30" class="d-inline-block align-top" alt="">
98
99
100
101
102
    Bootstrap
  </a>
</nav>
{% endexample %}

103
104
### Nav

105
Navbar navigation is similar to our regular nav options—use the `.nav` base class with the `.navbar-nav` modifier correctly position your links. **Navbar navigation will grow to occupy as much horizontal space as possible** to keep your navbar contents aligned properly.
106

107
108
Active states—with `.active`—to indicate the current page can be applied directly to `.nav-link`s or their immediate parent `.nav-item`s.

109
110
111
112
113
114
115
116
117
118
119
120
121
{% example html %}
<nav class="navbar navbar-light bg-faded">
  <ul class="nav navbar-nav">
    <li class="nav-item active">
      <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></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">
122
      <a class="nav-link disabled" href="#">Disabled</a>
123
124
125
126
127
    </li>
  </ul>
</nav>
{% endexample %}

128
And because we use classes for our navs, you can avoid the list-based approach entirely if you like.
129
130
131
132
133
134
135

{% example html %}
<nav class="navbar navbar-light bg-faded">
  <div class="nav navbar-nav">
    <a class="nav-item nav-link active" href="#">Home <span class="sr-only">(current)</span></a>
    <a class="nav-item nav-link" href="#">Features</a>
    <a class="nav-item nav-link" href="#">Pricing</a>
136
    <a class="nav-item nav-link disabled" href="#">Disabled</a>
137
138
139
140
  </div>
</nav>
{% endexample %}

141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
You may also utilize dropdowns in your navbar nav. 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.

{% example html %}
<nav class="navbar navbar-light bg-faded">
  <ul class="nav navbar-nav">
    <li class="nav-item active">
      <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></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">
156
      <a class="nav-link dropdown-toggle" href="http://example.com" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
157
158
159
160
161
162
163
164
165
166
167
168
        Dropdown link
      </a>
      <div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
        <a class="dropdown-item" href="#">Action</a>
        <a class="dropdown-item" href="#">Another action</a>
        <a class="dropdown-item" href="#">Something else here</a>
      </div>
    </li>
  </ul>
</nav>
{% endexample %}

169
170
### Forms

171
Place various form controls and components within a navbar with `.form-inline`.
172
173
174

{% example html %}
<nav class="navbar navbar-light bg-faded">
175
176
177
178
179
180
181
182
183
184
185
186
  <form class="form-inline">
    <input class="form-control" type="text" placeholder="Search">
    <button class="btn btn-outline-success" type="submit">Search</button>
  </form>
</nav>
{% endexample %}

Align the contents of your inline forms with utilities as needed.

{% example html %}
<nav class="navbar navbar-light bg-faded flex-items-right">
  <form class="form-inline">
187
188
189
190
191
192
193
194
195
196
    <input class="form-control" type="text" placeholder="Search">
    <button class="btn btn-outline-success" type="submit">Search</button>
  </form>
</nav>
{% endexample %}

Input groups work, too:

{% example html %}
<nav class="navbar navbar-light bg-faded">
197
  <form class="form-inline">
198
199
200
201
202
203
204
205
    <div class="input-group">
      <span class="input-group-addon" id="basic-addon1">@</span>
      <input type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1">
    </div>
  </form>
</nav>
{% endexample %}

206
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.
207
208
209

{% example html %}
<nav class="navbar navbar-light bg-faded">
210
  <form class="form-inline">
211
212
213
214
215
216
    <button class="btn btn-outline-success" type="button">Main button</button>
    <button class="btn btn-sm align-middle btn-outline-secondary" type="button">Smaller button</button>
  </form>
</nav>
{% endexample %}

217
218
219
220
221
222
### Text

Navbars may contain bits of text with the help of `.navbar-text`. This class adjusts vertical alignment and horizontal spacing for strings of text.

{% example html %}
<nav class="navbar navbar-light bg-faded">
223
224
225
  <span class="navbar-text">
    Navbar text with an inline element
  </span>
226
227
228
</nav>
{% endexample %}

229
## Color schemes
Mark Otto's avatar
Mark Otto committed
230

231
Theming the navbar has never been easier thanks to the combination of theming classes and `background-color` utilities. Chose from `.navbar-light` for use with light background colors, or `.navbar-dark` for dark background colors. Then, customize with `.bg-*` utilities.
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249

<div class="bd-example">
  <nav class="navbar navbar-dark bg-inverse">
    <a class="navbar-brand" href="#">Navbar</a>
    <ul class="nav navbar-nav">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></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" href="#">About</a>
      </li>
    </ul>
250
    <form class="form-inline">
251
      <input class="form-control" type="text" placeholder="Search">
252
      <button class="btn btn-outline-info" type="submit">Search</button>
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
    </form>
  </nav>
  <nav class="navbar navbar-dark bg-primary">
    <a class="navbar-brand" href="#">Navbar</a>
    <ul class="nav navbar-nav">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></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" href="#">About</a>
      </li>
    </ul>
271
    <form class="form-inline">
272
      <input class="form-control" type="text" placeholder="Search">
273
      <button class="btn btn-outline-secondary" type="submit">Search</button>
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
    </form>
  </nav>
  <nav class="navbar navbar-light" style="background-color: #e3f2fd;">
    <a class="navbar-brand" href="#">Navbar</a>
    <ul class="nav navbar-nav">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></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" href="#">About</a>
      </li>
    </ul>
292
    <form class="form-inline">
293
      <input class="form-control" type="text" placeholder="Search">
294
      <button class="btn btn-outline-primary" type="submit">Search</button>
295
296
297
298
299
300
301
    </form>
  </nav>
</div>

{% highlight html %}
<nav class="navbar navbar-dark bg-inverse">
  <!-- Navbar content -->
Mark Otto's avatar
Mark Otto committed
302
</nav>
303
304
305
306
307
308
309
310
311

<nav class="navbar navbar-dark bg-primary">
  <!-- Navbar content -->
</nav>

<nav class="navbar navbar-light" style="background-color: #e3f2fd;">
  <!-- Navbar content -->
</nav>
{% endhighlight %}
Mark Otto's avatar
Mark Otto committed
312

Mark Otto's avatar
Mark Otto committed
313
## Containers
314

315
Although it's not required, you can wrap a navbar in a `.container` to center it on a page or add one within to only center the contents of a [fixed or static top navbar](#placement).
316

Mark Otto's avatar
Mark Otto committed
317
318
{% example html %}
<div class="container">
319
  <nav class="navbar navbar-light bg-faded">
Mark Otto's avatar
Mark Otto committed
320
    <a class="navbar-brand" href="#">Navbar</a>
321
322
  </nav>
</div>
Mark Otto's avatar
Mark Otto committed
323
{% endexample %}
324

Mark Otto's avatar
Mark Otto committed
325
{% example html %}
326
<nav class="navbar navbar-light bg-faded">
Mark Otto's avatar
Mark Otto committed
327
328
329
  <div class="container">
    <a class="navbar-brand" href="#">Navbar</a>
  </div>
330
</nav>
Mark Otto's avatar
Mark Otto committed
331
{% endexample %}
332

Mark Otto's avatar
Mark Otto committed
333
334
## Placement

335
336
337
Navbars can be statically placed (their default behavior), static without rounded corners, or fixed to the top or bottom of the viewport.

{% example html %}
Mark Otto's avatar
Mark Otto committed
338
<nav class="navbar navbar-light bg-faded">
339
340
341
  <a class="navbar-brand" href="#">Full width</a>
</nav>
{% endexample %}
Mark Otto's avatar
Mark Otto committed
342
343
344
345
346
347
348
349
350
351
352
353
354
355

{% example html %}
<nav class="navbar navbar-fixed-top navbar-light bg-faded">
  <a class="navbar-brand" href="#">Fixed top</a>
</nav>
{% endexample %}

{% example html %}
<nav class="navbar navbar-fixed-bottom navbar-light bg-faded">
  <a class="navbar-brand" href="#">Fixed bottom</a>
</nav>
{% endexample %}


Mark Otto's avatar
Mark Otto committed
356
## Collapsible content
Mark Otto's avatar
Mark Otto committed
357

Mark Otto's avatar
Mark Otto committed
358
Our collapse plugin allows you to use a `<button>` or `<a>` to toggle hidden content.
Mark Otto's avatar
Mark Otto committed
359
360

{% example html %}
361
<nav class="navbar navbar-light bg-faded">
362
  <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#exCollapsingNavbar" aria-controls="exCollapsingNavbar" aria-expanded="false" aria-label="Toggle navigation"></button>
363
  <div class="collapse" id="exCollapsingNavbar">
364
    <div class="bg-inverse text-muted p-1">
365
366
367
368
      <h4>Collapsed content</h4>
      <span class="text-muted">Toggleable via the navbar brand.</span>
    </div>
  </div>
Mark Otto's avatar
Mark Otto committed
369
</nav>
Mark Otto's avatar
Mark Otto committed
370
{% endexample %}
Mark Otto's avatar
Mark Otto committed
371
372
373
374

For more complex navbar patterns, like those used in Bootstrap v3, use the `.navbar-toggleable-*` classes in conjunction with the `.navbar-toggler`. These classes override our responsive utilities to show navigation only when content is meant to be shown.

{% example html %}
375
<nav class="navbar navbar-light bg-faded">
Mark Otto's avatar
Mark Otto committed
376
  <button class="navbar-toggler hidden-lg-up" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation"></button>
377
378
  <div class="collapse navbar-toggleable-md" id="navbarResponsive">
    <a class="navbar-brand" href="#">Navbar</a>
Mark Otto's avatar
Mark Otto committed
379
380
381
382
383
    <ul class="nav navbar-nav">
      <li class="nav-item active">
        <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
      </li>
      <li class="nav-item">
384
        <a class="nav-link" href="#">Link</a>
Mark Otto's avatar
Mark Otto committed
385
386
      </li>
      <li class="nav-item">
387
        <a class="nav-link" href="#">Link</a>
Mark Otto's avatar
Mark Otto committed
388
      </li>
389
      <li class="nav-item dropdown">
Mark Otto's avatar
Mark Otto committed
390
391
        <a class="nav-link dropdown-toggle" href="http://example.com" id="responsiveNavbarDropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dropdown</a>
        <div class="dropdown-menu" aria-labelledby="responsiveNavbarDropdown">
392
393
394
395
          <a class="dropdown-item" href="#">Action</a>
          <a class="dropdown-item" href="#">Another action</a>
          <a class="dropdown-item" href="#">Something else here</a>
        </div>
Mark Otto's avatar
Mark Otto committed
396
397
      </li>
    </ul>
398
399
400
401
    <form class="form-inline float-lg-right">
      <input class="form-control" type="text" placeholder="Search">
      <button class="btn btn-outline-success" type="submit">Search</button>
    </form>
Mark Otto's avatar
Mark Otto committed
402
403
404
  </div>
</nav>
{% endexample %}