navbar.md 14.3 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
## Basics
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
- 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
22

Mark Otto's avatar
Mark Otto committed
23
## Supported content
Mark Otto's avatar
Mark Otto committed
24

25
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
26

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

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

Mark Otto's avatar
Mark Otto committed
36
{% example html %}
37
<nav class="navbar navbar-light bg-faded">
Mark Otto's avatar
Mark Otto committed
38
39
  <a class="navbar-brand" href="#">Navbar</a>
  <ul class="nav navbar-nav">
Mark Otto's avatar
Mark Otto committed
40
    <li class="nav-item active">
Mark Otto's avatar
Mark Otto committed
41
      <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
Mark Otto's avatar
Mark Otto committed
42
43
    </li>
    <li class="nav-item">
44
      <a class="nav-link" href="#">Link</a>
Mark Otto's avatar
Mark Otto committed
45
46
    </li>
    <li class="nav-item">
47
      <a class="nav-link disabled" href="#">Disabled</a>
Mark Otto's avatar
Mark Otto committed
48
    </li>
49
    <li class="nav-item dropdown">
Mark Otto's avatar
Mark Otto committed
50
51
      <a class="nav-link dropdown-toggle" href="http://example.com" id="supportedContentDropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Dropdown</a>
      <div class="dropdown-menu" aria-labelledby="supportedContentDropdown">
52
53
54
55
        <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
56
57
    </li>
  </ul>
58
  <form class="form-inline">
Mark Otto's avatar
Mark Otto committed
59
    <input class="form-control" type="text" placeholder="Search">
60
    <button class="btn btn-outline-success" type="submit">Search</button>
Mark Otto's avatar
Mark Otto committed
61
  </form>
Mark Otto's avatar
Mark Otto committed
62
</nav>
Mark Otto's avatar
Mark Otto committed
63
64
{% endexample %}

65
66
### Brand

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

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

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

81
82
83
84
85
86
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
87
    <img src="{{ site.baseurl }}/assets/brand/bootstrap-solid.svg" width="30" height="30" alt="">
88
89
90
91
92
93
94
95
  </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
96
    <img src="{{ site.baseurl }}/assets/brand/bootstrap-solid.svg" width="30" height="30" class="d-inline-block align-top" alt="">
97
98
99
100
101
    Bootstrap
  </a>
</nav>
{% endexample %}

102
103
### Nav

104
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.
105

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

108
109
110
111
112
113
114
115
116
117
118
119
120
{% 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">
121
      <a class="nav-link disabled" href="#">Disabled</a>
122
123
124
125
126
    </li>
  </ul>
</nav>
{% endexample %}

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

{% 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>
135
    <a class="nav-item nav-link disabled" href="#">Disabled</a>
136
137
138
139
  </div>
</nav>
{% endexample %}

140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
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">
155
      <a class="nav-link dropdown-toggle" href="http://example.com" id="navbarDropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
156
157
158
159
160
161
162
163
164
165
166
167
        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 %}

168
169
### Forms

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

{% example html %}
<nav class="navbar navbar-light bg-faded">
174
175
176
177
178
179
180
181
182
183
184
185
  <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">
186
187
188
189
190
191
192
193
194
195
    <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">
196
  <form class="form-inline">
197
198
199
200
201
202
203
204
    <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 %}

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

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

216
217
218
219
220
221
### 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">
222
223
224
  <span class="navbar-text">
    Navbar text with an inline element
  </span>
225
226
227
</nav>
{% endexample %}

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

230
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.
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248

<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>
249
    <form class="form-inline">
250
      <input class="form-control" type="text" placeholder="Search">
251
      <button class="btn btn-outline-info" type="submit">Search</button>
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
    </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>
270
    <form class="form-inline">
271
      <input class="form-control" type="text" placeholder="Search">
272
      <button class="btn btn-outline-secondary" type="submit">Search</button>
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
    </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>
291
    <form class="form-inline">
292
      <input class="form-control" type="text" placeholder="Search">
293
      <button class="btn btn-outline-primary" type="submit">Search</button>
294
295
296
297
298
299
300
    </form>
  </nav>
</div>

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

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

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

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

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

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

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

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

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

{% 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
355
## Collapsible content
Mark Otto's avatar
Mark Otto committed
356

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

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

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 %}
374
<nav class="navbar navbar-light bg-faded">
Mark Otto's avatar
Mark Otto committed
375
  <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>
376
377
  <div class="collapse navbar-toggleable-md" id="navbarResponsive">
    <a class="navbar-brand" href="#">Navbar</a>
Mark Otto's avatar
Mark Otto committed
378
379
380
381
382
    <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">
383
        <a class="nav-link" href="#">Link</a>
Mark Otto's avatar
Mark Otto committed
384
385
      </li>
      <li class="nav-item">
386
        <a class="nav-link" href="#">Link</a>
Mark Otto's avatar
Mark Otto committed
387
      </li>
388
      <li class="nav-item dropdown">
Mark Otto's avatar
Mark Otto committed
389
390
        <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">
391
392
393
394
          <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
395
396
      </li>
    </ul>
397
398
399
400
    <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
401
402
403
  </div>
</nav>
{% endexample %}