navbar.md 19.4 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
    <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">
Mark Otto's avatar
Mark Otto committed
59
60
      <input class="form-control mr-md-2" type="text" placeholder="Search">
      <button class="btn btn-outline-success my-2 my-lg-0" type="submit">Search</button>
61
62
    </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 links build on our `.nav` options with their own modifier class and require the use of [toggler classes](#toggler) for proper responsive styling. **Navigation in navbars will also grow to occupy as much horizontal space as possible** to keep your navbar contents securely aligned.
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
{% example html %}
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<nav class="navbar navbar-light navbar-toggleable-md bg-faded">
  <button class="navbar-toggler navbar-toggler-right hidden-lg-up" type="button" data-toggle="collapse" data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"></button>
  <a class="navbar-brand" href="#">Navbar</a>
  <div class="collapse navbar-collapse" id="navbarNav">
    <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 disabled" href="#">Disabled</a>
      </li>
    </ul>
  </div>
129
130
131
</nav>
{% endexample %}

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

{% example html %}
135
136
137
138
139
140
141
142
143
144
<nav class="navbar navbar-light navbar-toggleable-md bg-faded">
  <button class="navbar-toggler navbar-toggler-right hidden-lg-up" type="button" data-toggle="collapse" data-target="#navbarNavAltMarkup" aria-controls="navbarNavAltMarkup" aria-expanded="false" aria-label="Toggle navigation"></button>
  <a class="navbar-brand" href="#">Navbar</a>
  <div class="collapse navbar-collapse" id="navbarNavAltMarkup">
    <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>
      <a class="nav-item nav-link disabled" href="#">Disabled</a>
    </div>
145
146
147
148
  </div>
</nav>
{% endexample %}

149
150
151
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 %}
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
<nav class="navbar navbar-light navbar-toggleable-md bg-faded">
  <button class="navbar-toggler navbar-toggler-right hidden-lg-up" type="button" data-toggle="collapse" data-target="#navbarNavDropdown" aria-controls="navbarNavDropdown" aria-expanded="false" aria-label="Toggle navigation"></button>
  <a class="navbar-brand" href="#">Navbar</a>
  <div class="collapse navbar-collapse" id="navbarNavDropdown">
    <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">
        <a class="nav-link dropdown-toggle" href="http://example.com" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
          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>
  </div>
178
179
180
</nav>
{% endexample %}

181
182
### Forms

183
Place various form controls and components within a navbar with `.form-inline`.
184
185
186

{% example html %}
<nav class="navbar navbar-light bg-faded">
187
  <form class="form-inline">
Mark Otto's avatar
Mark Otto committed
188
189
    <input class="form-control mr-md-2" type="text" placeholder="Search">
    <button class="btn btn-outline-success my-2 my-lg-0" type="submit">Search</button>
190
191
192
193
194
195
196
197
198
  </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">
Mark Otto's avatar
Mark Otto committed
199
200
    <input class="form-control mr-md-2" type="text" placeholder="Search">
    <button class="btn btn-outline-success my-2 my-lg-0" type="submit">Search</button>
201
202
203
204
205
206
207
208
  </form>
</nav>
{% endexample %}

Input groups work, too:

{% example html %}
<nav class="navbar navbar-light bg-faded">
209
  <form class="form-inline">
210
211
212
213
214
215
216
217
    <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 %}

218
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.
219
220
221

{% example html %}
<nav class="navbar navbar-light bg-faded">
222
  <form class="form-inline">
223
224
225
226
227
228
    <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 %}

229
230
231
232
233
234
### 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">
235
236
237
  <span class="navbar-text">
    Navbar text with an inline element
  </span>
238
239
240
</nav>
{% endexample %}

241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
Mix and match with other components and utilities as needed.

{% example html %}
<nav class="navbar navbar-light navbar-toggleable-md bg-faded">
  <button class="navbar-toggler navbar-toggler-right hidden-lg-up" type="button" data-toggle="collapse" data-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation"></button>
  <a class="navbar-brand" href="#">Navbar w/ text</a>
  <div class="collapse navbar-collapse" id="navbarText">
    <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>
    </ul>
    <span class="navbar-text">
      Navbar text with an inline element
    </span>
  </div>
</nav>
{% endexample %}

266
## Color schemes
Mark Otto's avatar
Mark Otto committed
267

268
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.
269
270

<div class="bd-example">
Mark Otto's avatar
Mark Otto committed
271
272
  <nav class="navbar navbar-dark navbar-toggleable-md bg-inverse">
    <button class="navbar-toggler navbar-toggler-right hidden-lg-up" type="button" data-toggle="collapse" data-target="#navbarColor01" aria-controls="navbarColor01" aria-expanded="false" aria-label="Toggle navigation"></button>
273
    <a class="navbar-brand" href="#">Navbar</a>
Mark Otto's avatar
Mark Otto committed
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290

    <div class="collapse navbar-collapse" id="navbarColor01">
      <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>
      <form class="form-inline">
291
292
        <input class="form-control mr-md-2" type="text" placeholder="Search">
        <button class="btn btn-outline-info my-2 my-lg-0" type="submit">Search</button>
Mark Otto's avatar
Mark Otto committed
293
294
      </form>
    </div>
295
  </nav>
Mark Otto's avatar
Mark Otto committed
296
297
298

  <nav class="navbar navbar-dark navbar-toggleable-md bg-primary">
    <button class="navbar-toggler navbar-toggler-right hidden-lg-up" type="button" data-toggle="collapse" data-target="#navbarColor02" aria-controls="navbarColor02" aria-expanded="false" aria-label="Toggle navigation"></button>
299
    <a class="navbar-brand" href="#">Navbar</a>
Mark Otto's avatar
Mark Otto committed
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316

    <div class="collapse navbar-collapse" id="navbarColor02">
      <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>
      <form class="form-inline">
317
318
        <input class="form-control mr-md-2" type="text" placeholder="Search">
        <button class="btn btn-outline-secondary my-2 my-lg-0" type="submit">Search</button>
Mark Otto's avatar
Mark Otto committed
319
320
      </form>
    </div>
321
  </nav>
Mark Otto's avatar
Mark Otto committed
322
323
324

  <nav class="navbar navbar-light navbar-toggleable-md" style="background-color: #e3f2fd;">
    <button class="navbar-toggler navbar-toggler-right hidden-lg-up" type="button" data-toggle="collapse" data-target="#navbarColor03" aria-controls="navbarColor03" aria-expanded="false" aria-label="Toggle navigation"></button>
325
    <a class="navbar-brand" href="#">Navbar</a>
Mark Otto's avatar
Mark Otto committed
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342

    <div class="collapse navbar-collapse" id="navbarColor03">
      <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>
      <form class="form-inline">
343
344
        <input class="form-control mr-md-2" type="text" placeholder="Search">
        <button class="btn btn-outline-primary my-2 my-lg-0" type="submit">Search</button>
Mark Otto's avatar
Mark Otto committed
345
346
      </form>
    </div>
347
348
349
350
351
352
  </nav>
</div>

{% highlight html %}
<nav class="navbar navbar-dark bg-inverse">
  <!-- Navbar content -->
Mark Otto's avatar
Mark Otto committed
353
</nav>
354
355
356
357
358
359
360
361
362

<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
363

Mark Otto's avatar
Mark Otto committed
364
## Containers
365

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

Mark Otto's avatar
Mark Otto committed
368
369
{% example html %}
<div class="container">
370
  <nav class="navbar navbar-light bg-faded navbar-toggleable-md">
Mark Otto's avatar
Mark Otto committed
371
    <a class="navbar-brand" href="#">Navbar</a>
372
373
  </nav>
</div>
Mark Otto's avatar
Mark Otto committed
374
{% endexample %}
375

376
377
When the container is within your navbar, it's horizontal padding is removed at breakpoints lower than your specified `.navbar-toggleable-*` class. This ensures we're not doubling up on padding unnecessarily on lower viewports when your navbar is collapsed.

Mark Otto's avatar
Mark Otto committed
378
{% example html %}
379
<nav class="navbar navbar-light bg-faded navbar-toggleable-md">
Mark Otto's avatar
Mark Otto committed
380
381
382
  <div class="container">
    <a class="navbar-brand" href="#">Navbar</a>
  </div>
383
</nav>
Mark Otto's avatar
Mark Otto committed
384
{% endexample %}
385

Mark Otto's avatar
Mark Otto committed
386
387
## Placement

388
389
390
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
391
<nav class="navbar navbar-light bg-faded">
392
393
394
  <a class="navbar-brand" href="#">Full width</a>
</nav>
{% endexample %}
Mark Otto's avatar
Mark Otto committed
395
396
397
398
399
400
401
402
403
404
405
406
407

{% 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
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
## Responsive behaviors

Navbars can utilize `.navbar-toggler`, `.navbar-collapse`, and `.navbar-toggleable-*` classes to change when their content collapses behind a button. In combination with other utilities, you can easily choose when to show or hide particular elements.

### Toggler

Navbar togglers can be left or right aligned with `.navbar-toggler-left` or `.navbar-toggler-right` modifiers. These are absolutely positioned within the navbar to avoid interference with the collapsed state. You can also use your own styles to position togglers. Below are examples of different toggle styles.

With no `.navbar-brand` shown in lowest breakpoint:

{% example html %}
<nav class="navbar navbar-light navbar-toggleable-md bg-faded">
  <button class="navbar-toggler hidden-lg-up" type="button" data-toggle="collapse" data-target="#navbarTogglerDemo01" aria-controls="navbarTogglerDemo01" aria-expanded="false" aria-label="Toggle navigation"></button>
  <div class="collapse navbar-collapse" id="navbarTogglerDemo01">
    <a class="navbar-brand" href="#">Hidden brand</a>
    <ul class="nav navbar-nav mt-2 mt-lg-0">
      <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-lg-0">
      <input class="form-control" type="text" placeholder="Search">
      <button class="btn btn-outline-success my-2 my-lg-0" type="submit">Search</button>
    </form>
  </div>
</nav>
{% endexample %}

With a brand name shown on the left and toggler on the right:

{% example html %}
<nav class="navbar navbar-light navbar-toggleable-md bg-faded">
  <button class="navbar-toggler navbar-toggler-right hidden-lg-up" type="button" data-toggle="collapse" data-target="#navbarTogglerDemo02" aria-controls="navbarTogglerDemo02" aria-expanded="false" aria-label="Toggle navigation"></button>
  <a class="navbar-brand" href="#">Navbar</a>

  <div class="collapse navbar-collapse" id="navbarTogglerDemo02">
    <ul class="nav navbar-nav mt-2 mt-md-0">
      <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-lg-0">
      <input class="form-control" type="text" placeholder="Search">
      <button class="btn btn-outline-success my-2 my-lg-0" type="submit">Search</button>
    </form>
  </div>
</nav>
{% endexample %}

### External content

Sometimes you want to use the collapse plugin to trigger hidden content elsewhere on the page. Because our plugin works on the `id` and `data-target` matching, that's easily done!

{% example html %}
<div class="pos-f-t">
  <div class="collapse" id="navbarToggleExternalContent">
Mark Otto's avatar
Mark Otto committed
476
477
    <div class="bg-inverse p-4">
      <h4 class="text-white">Collapsed content</h4>
Mark Otto's avatar
Mark Otto committed
478
479
480
481
482
483
484
485
      <span class="text-muted">Toggleable via the navbar brand.</span>
    </div>
  </div>
  <nav class="navbar navbar-dark bg-inverse">
    <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent" aria-expanded="false" aria-label="Toggle navigation"></button>
  </nav>
</div>
{% endexample %}