4 description: Toggle contextual overlays for displaying lists of links and more with the Bootstrap dropdown plugin.
8 Dropdowns are toggleable, contextual overlays for displaying lists of links and more. They're made interactive with the included Bootstrap dropdown JavaScript plugin. They're toggled by clicking, not by hovering; this is [an intentional design decision.](http://markdotto.com/2012/02/27/bootstrap-explained-dropdowns/)
12 * Will be replaced with the ToC, excluding the "Contents" header
17 Wrap the dropdown's toggle (your button or link) and the dropdown menu within `.dropdown`, or another element that declares `position: relative;`. Dropdowns can be triggered from `<a>` or `<button>` elements to better fit your potential needs.
19 ### Single button dropdowns
21 Any single `.btn` can be turned into a dropdown toggle with some markup changes. Here's how you can put them to work with either `<button>` elements:
24 <div class="dropdown">
25 <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
28 <div class="dropdown-menu" aria-labelledby="dropdownMenuButton">
29 <a class="dropdown-item" href="#">Action</a>
30 <a class="dropdown-item" href="#">Another action</a>
31 <a class="dropdown-item" href="#">Something else here</a>
36 And with `<a>` elements:
39 <div class="dropdown show">
40 <a class="btn btn-secondary dropdown-toggle" href="https://example.com" id="dropdownMenuLink" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
44 <div class="dropdown-menu" aria-labelledby="dropdownMenuLink">
45 <a class="dropdown-item" href="#">Action</a>
46 <a class="dropdown-item" href="#">Another action</a>
47 <a class="dropdown-item" href="#">Something else here</a>
52 The best part is you can do this with any button variant, too:
54 <div class="bd-example">
55 <div class="btn-group">
56 <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Primary</button>
57 <div class="dropdown-menu">
58 <a class="dropdown-item" href="#">Action</a>
59 <a class="dropdown-item" href="#">Another action</a>
60 <a class="dropdown-item" href="#">Something else here</a>
61 <div class="dropdown-divider"></div>
62 <a class="dropdown-item" href="#">Separated link</a>
64 </div><!-- /btn-group -->
65 <div class="btn-group">
66 <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Secondary</button>
67 <div class="dropdown-menu">
68 <a class="dropdown-item" href="#">Action</a>
69 <a class="dropdown-item" href="#">Another action</a>
70 <a class="dropdown-item" href="#">Something else here</a>
71 <div class="dropdown-divider"></div>
72 <a class="dropdown-item" href="#">Separated link</a>
74 </div><!-- /btn-group -->
75 <div class="btn-group">
76 <button type="button" class="btn btn-success dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Success</button>
77 <div class="dropdown-menu">
78 <a class="dropdown-item" href="#">Action</a>
79 <a class="dropdown-item" href="#">Another action</a>
80 <a class="dropdown-item" href="#">Something else here</a>
81 <div class="dropdown-divider"></div>
82 <a class="dropdown-item" href="#">Separated link</a>
84 </div><!-- /btn-group -->
85 <div class="btn-group">
86 <button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Info</button>
87 <div class="dropdown-menu">
88 <a class="dropdown-item" href="#">Action</a>
89 <a class="dropdown-item" href="#">Another action</a>
90 <a class="dropdown-item" href="#">Something else here</a>
91 <div class="dropdown-divider"></div>
92 <a class="dropdown-item" href="#">Separated link</a>
94 </div><!-- /btn-group -->
95 <div class="btn-group">
96 <button type="button" class="btn btn-warning dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Warning</button>
97 <div class="dropdown-menu">
98 <a class="dropdown-item" href="#">Action</a>
99 <a class="dropdown-item" href="#">Another action</a>
100 <a class="dropdown-item" href="#">Something else here</a>
101 <div class="dropdown-divider"></div>
102 <a class="dropdown-item" href="#">Separated link</a>
104 </div><!-- /btn-group -->
105 <div class="btn-group">
106 <button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Danger</button>
107 <div class="dropdown-menu">
108 <a class="dropdown-item" href="#">Action</a>
109 <a class="dropdown-item" href="#">Another action</a>
110 <a class="dropdown-item" href="#">Something else here</a>
111 <div class="dropdown-divider"></div>
112 <a class="dropdown-item" href="#">Separated link</a>
114 </div><!-- /btn-group -->
118 <!-- Example single danger button -->
119 <div class="btn-group">
120 <button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
123 <div class="dropdown-menu">
124 <a class="dropdown-item" href="#">Action</a>
125 <a class="dropdown-item" href="#">Another action</a>
126 <a class="dropdown-item" href="#">Something else here</a>
127 <div class="dropdown-divider"></div>
128 <a class="dropdown-item" href="#">Separated link</a>
133 ### Split button dropdowns
135 Similarly, create split button dropdowns with virtually the same markup as single button dropdowns, but with the addition of `.dropdown-toggle-split` for proper spacing around the dropdown caret.
137 We use this extra class to reduce the horizontal `padding` on either side of the caret by 25% and remove the `margin-left` that's added for regular button dropdowns. Those extra changes keep the caret centered in the split button and provide a more appropriately sized hit area next to the main button.
139 <div class="bd-example">
140 <div class="btn-group">
141 <button type="button" class="btn btn-primary">Primary</button>
142 <button type="button" class="btn btn-primary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
143 <span class="sr-only">Toggle Dropdown</span>
145 <div class="dropdown-menu">
146 <a class="dropdown-item" href="#">Action</a>
147 <a class="dropdown-item" href="#">Another action</a>
148 <a class="dropdown-item" href="#">Something else here</a>
149 <div class="dropdown-divider"></div>
150 <a class="dropdown-item" href="#">Separated link</a>
152 </div><!-- /btn-group -->
153 <div class="btn-group">
154 <button type="button" class="btn btn-secondary">Secondary</button>
155 <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
156 <span class="sr-only">Toggle Dropdown</span>
158 <div class="dropdown-menu">
159 <a class="dropdown-item" href="#">Action</a>
160 <a class="dropdown-item" href="#">Another action</a>
161 <a class="dropdown-item" href="#">Something else here</a>
162 <div class="dropdown-divider"></div>
163 <a class="dropdown-item" href="#">Separated link</a>
165 </div><!-- /btn-group -->
166 <div class="btn-group">
167 <button type="button" class="btn btn-success">Success</button>
168 <button type="button" class="btn btn-success dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
169 <span class="sr-only">Toggle Dropdown</span>
171 <div class="dropdown-menu">
172 <a class="dropdown-item" href="#">Action</a>
173 <a class="dropdown-item" href="#">Another action</a>
174 <a class="dropdown-item" href="#">Something else here</a>
175 <div class="dropdown-divider"></div>
176 <a class="dropdown-item" href="#">Separated link</a>
178 </div><!-- /btn-group -->
179 <div class="btn-group">
180 <button type="button" class="btn btn-info">Info</button>
181 <button type="button" class="btn btn-info dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
182 <span class="sr-only">Toggle Dropdown</span>
184 <div class="dropdown-menu">
185 <a class="dropdown-item" href="#">Action</a>
186 <a class="dropdown-item" href="#">Another action</a>
187 <a class="dropdown-item" href="#">Something else here</a>
188 <div class="dropdown-divider"></div>
189 <a class="dropdown-item" href="#">Separated link</a>
191 </div><!-- /btn-group -->
192 <div class="btn-group">
193 <button type="button" class="btn btn-warning">Warning</button>
194 <button type="button" class="btn btn-warning dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
195 <span class="sr-only">Toggle Dropdown</span>
197 <div class="dropdown-menu">
198 <a class="dropdown-item" href="#">Action</a>
199 <a class="dropdown-item" href="#">Another action</a>
200 <a class="dropdown-item" href="#">Something else here</a>
201 <div class="dropdown-divider"></div>
202 <a class="dropdown-item" href="#">Separated link</a>
204 </div><!-- /btn-group -->
205 <div class="btn-group">
206 <button type="button" class="btn btn-danger">Danger</button>
207 <button type="button" class="btn btn-danger dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
208 <span class="sr-only">Toggle Dropdown</span>
210 <div class="dropdown-menu">
211 <a class="dropdown-item" href="#">Action</a>
212 <a class="dropdown-item" href="#">Another action</a>
213 <a class="dropdown-item" href="#">Something else here</a>
214 <div class="dropdown-divider"></div>
215 <a class="dropdown-item" href="#">Separated link</a>
217 </div><!-- /btn-group -->
221 <!-- Example split danger button -->
222 <div class="btn-group">
223 <button type="button" class="btn btn-danger">Action</button>
224 <button type="button" class="btn btn-danger dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
225 <span class="sr-only">Toggle Dropdown</span>
227 <div class="dropdown-menu">
228 <a class="dropdown-item" href="#">Action</a>
229 <a class="dropdown-item" href="#">Another action</a>
230 <a class="dropdown-item" href="#">Something else here</a>
231 <div class="dropdown-divider"></div>
232 <a class="dropdown-item" href="#">Separated link</a>
239 Button dropdowns work with buttons of all sizes, including default and split dropdown buttons.
241 <div class="bd-example">
242 <div class="btn-toolbar" role="toolbar">
243 <div class="btn-group">
244 <button class="btn btn-secondary btn-lg dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
247 <div class="dropdown-menu">
248 <a class="dropdown-item" href="#">Action</a>
249 <a class="dropdown-item" href="#">Another action</a>
250 <a class="dropdown-item" href="#">Something else here</a>
251 <div class="dropdown-divider"></div>
252 <a class="dropdown-item" href="#">Separated link</a>
254 </div><!-- /btn-group -->
255 <div class="btn-group ml-2">
256 <button type="button" class="btn btn-lg btn-secondary">Large split button</button>
257 <button type="button" class="btn btn-lg btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
258 <span class="sr-only">Toggle Dropdown</span>
260 <div class="dropdown-menu">
261 <a class="dropdown-item" href="#">Action</a>
262 <a class="dropdown-item" href="#">Another action</a>
263 <a class="dropdown-item" href="#">Something else here</a>
264 <div class="dropdown-divider"></div>
265 <a class="dropdown-item" href="#">Separated link</a>
267 </div><!-- /btn-group -->
268 </div><!-- /btn-toolbar -->
269 <div class="btn-toolbar" role="toolbar">
270 <div class="btn-group">
271 <button class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
274 <div class="dropdown-menu">
275 <a class="dropdown-item" href="#">Action</a>
276 <a class="dropdown-item" href="#">Another action</a>
277 <a class="dropdown-item" href="#">Something else here</a>
278 <div class="dropdown-divider"></div>
279 <a class="dropdown-item" href="#">Separated link</a>
281 </div><!-- /btn-group -->
282 <div class="btn-group ml-2">
283 <button type="button" class="btn btn-sm btn-secondary">Small split button</button>
284 <button type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
285 <span class="sr-only">Toggle Dropdown</span>
287 <div class="dropdown-menu">
288 <a class="dropdown-item" href="#">Action</a>
289 <a class="dropdown-item" href="#">Another action</a>
290 <a class="dropdown-item" href="#">Something else here</a>
291 <div class="dropdown-divider"></div>
292 <a class="dropdown-item" href="#">Separated link</a>
294 </div><!-- /btn-group -->
295 </div><!-- /btn-toolbar -->
296 </div><!-- /example -->
299 <!-- Large button groups (default and split) -->
300 <div class="btn-group">
301 <button class="btn btn-secondary btn-lg dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
304 <div class="dropdown-menu">
308 <div class="btn-group">
309 <button class="btn btn-secondary btn-lg dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
312 <button type="button" class="btn btn-lg btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
313 <span class="sr-only">Toggle Dropdown</span>
315 <div class="dropdown-menu">
320 <!-- Small button groups (default and split) -->
321 <div class="btn-group">
322 <button class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
325 <div class="dropdown-menu">
329 <div class="btn-group">
330 <button class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
333 <button type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
334 <span class="sr-only">Toggle Dropdown</span>
336 <div class="dropdown-menu">
344 Trigger dropdown menus above elements by adding `.dropup` to the parent element.
346 <div class="bd-example">
347 <div class="btn-group dropup">
348 <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
351 <div class="dropdown-menu">
352 <a class="dropdown-item" href="#">Action</a>
353 <a class="dropdown-item" href="#">Another action</a>
354 <a class="dropdown-item" href="#">Something else here</a>
355 <div class="dropdown-divider"></div>
356 <a class="dropdown-item" href="#">Separated link</a>
360 <div class="btn-group dropup">
361 <button type="button" class="btn btn-secondary">
364 <button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
365 <span class="sr-only">Toggle Dropdown</span>
367 <div class="dropdown-menu">
368 <a class="dropdown-item" href="#">Action</a>
369 <a class="dropdown-item" href="#">Another action</a>
370 <a class="dropdown-item" href="#">Something else here</a>
371 <div class="dropdown-divider"></div>
372 <a class="dropdown-item" href="#">Separated link</a>
378 <!-- Default dropup button -->
379 <div class="btn-group dropup">
380 <button type="button" class="btn btn-secondary">Dropup</button>
381 <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
382 <span class="sr-only">Toggle Dropdown</span>
384 <div class="dropdown-menu">
385 <!-- Dropdown menu links -->
389 <!-- Split dropup button -->
390 <div class="btn-group dropup">
391 <button type="button" class="btn btn-secondary">
394 <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
395 <span class="sr-only">Toggle Dropdown</span>
397 <div class="dropdown-menu">
398 <!-- Dropdown menu links -->
405 Historically dropdown menu contents *had* to be links, but that's no longer the case with v4. Now you can optionally use `<button>` elements in your dropdowns instead of just `<a>`s.
408 <div class="dropdown">
409 <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenu2" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
412 <div class="dropdown-menu" aria-labelledby="dropdownMenu2">
413 <button class="dropdown-item" type="button">Action</button>
414 <button class="dropdown-item" type="button">Another action</button>
415 <button class="dropdown-item" type="button">Something else here</button>
422 By default, a dropdown menu is automatically positioned 100% from the top and along the left side of its parent. Add `.dropdown-menu-right` to a `.dropdown-menu` to right align the dropdown menu.
425 **Heads up!** Dropdowns are positioned only with CSS and may need some additional styles for exact alignment.
429 <div class="btn-group">
430 <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
431 This dropdown's menu is right-aligned
433 <div class="dropdown-menu dropdown-menu-right">
434 <button class="dropdown-item" type="button">Action</button>
435 <button class="dropdown-item" type="button">Another action</button>
436 <button class="dropdown-item" type="button">Something else here</button>
443 Add a header to label sections of actions in any dropdown menu.
446 <div class="dropdown-menu">
447 <h6 class="dropdown-header">Dropdown header</h6>
448 <a class="dropdown-item" href="#">Action</a>
449 <a class="dropdown-item" href="#">Another action</a>
455 Separate groups of related menu items with a divider.
458 <div class="dropdown-menu">
459 <a class="dropdown-item" href="#">Action</a>
460 <a class="dropdown-item" href="#">Another action</a>
461 <a class="dropdown-item" href="#">Something else here</a>
462 <div class="dropdown-divider"></div>
463 <a class="dropdown-item" href="#">Separated link</a>
467 ## Disabled menu items
469 Add `.disabled` to items in the dropdown to **style them as disabled**.
472 <div class="dropdown-menu">
473 <a class="dropdown-item" href="#">Regular link</a>
474 <a class="dropdown-item disabled" href="#">Disabled link</a>
475 <a class="dropdown-item" href="#">Another link</a>
481 Via data attributes or JavaScript, the dropdown plugin toggles hidden content (dropdown menus) by toggling the `.show` class on the parent list item.
483 On mobile devices, opening a dropdown adds a `.dropdown-backdrop` as a tap area for closing dropdown menus when tapping outside the menu, a requirement for proper iOS support. **This means that switching from an open dropdown menu to a different dropdown menu requires an extra tap on mobile.**
485 Note: The `data-toggle="dropdown"` attribute is relied on for closing dropdown menus at an application level, so it's a good idea to always use it.
487 ### Via data attributes
489 Add `data-toggle="dropdown"` to a link or button to toggle a dropdown.
492 <div class="dropdown">
493 <button id="dLabel" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
496 <div class="dropdown-menu" aria-labelledby="dLabel">
504 Call the dropdowns via JavaScript:
507 $('.dropdown-toggle').dropdown()
511 ##### `data-toggle="dropdown"` still required
513 Regardless of whether you call your dropdown via JavaScript or instead use the data-api, `data-toggle="dropdown"` is always required to be present on the dropdown's trigger element.
522 | Method | Description |
524 | `$().dropdown('toggle')` | Toggles the dropdown menu of a given navbar or tabbed navigation. |
528 All dropdown events are fired at the `.dropdown-menu`'s parent element and have a `relatedTarget` property, whose value is the toggling anchor element.
530 | Event | Description |
532 | `show.bs.dropdown` | This event fires immediately when the show instance method is called. |
533 | `shown.bs.dropdown` | This event is fired when the dropdown has been made visible to the user (will wait for CSS transitions, to complete). |
534 | `hide.bs.dropdown` | This event is fired immediately when the hide instance method has been called. |
535 | `hidden.bs.dropdown`| This event is fired when the dropdown has finished being hidden from the user (will wait for CSS transitions, to complete). |
538 $('#myDropdown').on('show.bs.dropdown', function () {