button-dropdown.md 12.6 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: Button dropdown
4
group: components
Mark Otto's avatar
Mark Otto committed
5
6
---

7
Use any button to trigger a dropdown menu by placing it within a `.btn-group` and providing the proper dropdown menu markup.
Mark Otto's avatar
Mark Otto committed
8

9
10
11
12
13
{% callout danger %}
#### Plugin dependency

Button dropdowns require the [dropdown plugin](../javascript/#dropdowns) to be included in your version of Bootstrap.
{% endcallout %}
Mark Otto's avatar
Mark Otto committed
14

Mark Otto's avatar
Mark Otto committed
15
16
17
18
19
## Contents

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

Mark Otto's avatar
Mark Otto committed
20
21
22
23
### Single button dropdowns

Turn a button into a dropdown toggle with some basic markup changes.

24
<div class="bd-example">
Mark Otto's avatar
Mark Otto committed
25
  <div class="btn-group">
Mark Otto's avatar
Mark Otto committed
26
27
    <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Default</button>
    <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
28
29
30
      <li><a href="#">Action</a></li>
      <li><a href="#">Another action</a></li>
      <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
31
      <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
32
33
34
35
      <li><a href="#">Separated link</a></li>
    </ul>
  </div><!-- /btn-group -->
  <div class="btn-group">
Mark Otto's avatar
Mark Otto committed
36
37
    <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Primary</button>
    <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
38
39
40
      <li><a href="#">Action</a></li>
      <li><a href="#">Another action</a></li>
      <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
41
      <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
42
43
44
45
      <li><a href="#">Separated link</a></li>
    </ul>
  </div><!-- /btn-group -->
  <div class="btn-group">
Mark Otto's avatar
Mark Otto committed
46
47
    <button type="button" class="btn btn-success dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Success</button>
    <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
48
49
50
      <li><a href="#">Action</a></li>
      <li><a href="#">Another action</a></li>
      <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
51
      <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
52
53
54
55
      <li><a href="#">Separated link</a></li>
    </ul>
  </div><!-- /btn-group -->
  <div class="btn-group">
Mark Otto's avatar
Mark Otto committed
56
57
    <button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Info</button>
    <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
58
59
60
      <li><a href="#">Action</a></li>
      <li><a href="#">Another action</a></li>
      <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
61
      <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
62
63
64
65
      <li><a href="#">Separated link</a></li>
    </ul>
  </div><!-- /btn-group -->
  <div class="btn-group">
Mark Otto's avatar
Mark Otto committed
66
67
    <button type="button" class="btn btn-warning dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Warning</button>
    <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
68
69
70
      <li><a href="#">Action</a></li>
      <li><a href="#">Another action</a></li>
      <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
71
      <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
72
73
74
75
      <li><a href="#">Separated link</a></li>
    </ul>
  </div><!-- /btn-group -->
  <div class="btn-group">
Mark Otto's avatar
Mark Otto committed
76
77
    <button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">Danger</button>
    <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
78
79
80
      <li><a href="#">Action</a></li>
      <li><a href="#">Another action</a></li>
      <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
81
      <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
82
83
84
85
      <li><a href="#">Separated link</a></li>
    </ul>
  </div><!-- /btn-group -->
</div>
Mark Otto's avatar
Mark Otto committed
86
87
88
89

{% highlight html %}
<!-- Single button -->
<div class="btn-group">
Mark Otto's avatar
Mark Otto committed
90
  <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
91
    Action
Mark Otto's avatar
Mark Otto committed
92
  </button>
Mark Otto's avatar
Mark Otto committed
93
  <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
94
95
96
    <li><a href="#">Action</a></li>
    <li><a href="#">Another action</a></li>
    <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
97
    <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
98
99
100
101
102
    <li><a href="#">Separated link</a></li>
  </ul>
</div>
{% endhighlight %}

Mark Otto's avatar
Mark Otto committed
103
104
### Split button dropdowns

Mark Otto's avatar
typo    
Mark Otto committed
105
Similarly, create split button dropdowns with the same markup changes, only with a separate button.
Mark Otto's avatar
Mark Otto committed
106

107
<div class="bd-example">
Mark Otto's avatar
Mark Otto committed
108
109
  <div class="btn-group">
    <button type="button" class="btn btn-secondary">Default</button>
Mark Otto's avatar
Mark Otto committed
110
    <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Mark Otto's avatar
Mark Otto committed
111
112
      <span class="sr-only">Toggle Dropdown</span>
    </button>
Mark Otto's avatar
Mark Otto committed
113
    <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
114
115
116
      <li><a href="#">Action</a></li>
      <li><a href="#">Another action</a></li>
      <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
117
      <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
118
119
120
121
122
      <li><a href="#">Separated link</a></li>
    </ul>
  </div><!-- /btn-group -->
  <div class="btn-group">
    <button type="button" class="btn btn-primary">Primary</button>
Mark Otto's avatar
Mark Otto committed
123
    <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Mark Otto's avatar
Mark Otto committed
124
125
      <span class="sr-only">Toggle Dropdown</span>
    </button>
Mark Otto's avatar
Mark Otto committed
126
    <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
127
128
129
      <li><a href="#">Action</a></li>
      <li><a href="#">Another action</a></li>
      <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
130
      <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
131
132
133
134
135
      <li><a href="#">Separated link</a></li>
    </ul>
  </div><!-- /btn-group -->
  <div class="btn-group">
    <button type="button" class="btn btn-success">Success</button>
Mark Otto's avatar
Mark Otto committed
136
    <button type="button" class="btn btn-success dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Mark Otto's avatar
Mark Otto committed
137
138
      <span class="sr-only">Toggle Dropdown</span>
    </button>
Mark Otto's avatar
Mark Otto committed
139
    <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
140
141
142
      <li><a href="#">Action</a></li>
      <li><a href="#">Another action</a></li>
      <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
143
      <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
144
145
146
147
148
      <li><a href="#">Separated link</a></li>
    </ul>
  </div><!-- /btn-group -->
  <div class="btn-group">
    <button type="button" class="btn btn-info">Info</button>
Mark Otto's avatar
Mark Otto committed
149
    <button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Mark Otto's avatar
Mark Otto committed
150
151
      <span class="sr-only">Toggle Dropdown</span>
    </button>
Mark Otto's avatar
Mark Otto committed
152
    <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
153
154
155
      <li><a href="#">Action</a></li>
      <li><a href="#">Another action</a></li>
      <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
156
      <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
157
158
159
160
161
      <li><a href="#">Separated link</a></li>
    </ul>
  </div><!-- /btn-group -->
  <div class="btn-group">
    <button type="button" class="btn btn-warning">Warning</button>
Mark Otto's avatar
Mark Otto committed
162
    <button type="button" class="btn btn-warning dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Mark Otto's avatar
Mark Otto committed
163
164
      <span class="sr-only">Toggle Dropdown</span>
    </button>
Mark Otto's avatar
Mark Otto committed
165
    <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
166
167
168
      <li><a href="#">Action</a></li>
      <li><a href="#">Another action</a></li>
      <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
169
      <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
170
171
172
173
174
      <li><a href="#">Separated link</a></li>
    </ul>
  </div><!-- /btn-group -->
  <div class="btn-group">
    <button type="button" class="btn btn-danger">Danger</button>
Mark Otto's avatar
Mark Otto committed
175
    <button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Mark Otto's avatar
Mark Otto committed
176
177
      <span class="sr-only">Toggle Dropdown</span>
    </button>
Mark Otto's avatar
Mark Otto committed
178
    <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
179
180
181
      <li><a href="#">Action</a></li>
      <li><a href="#">Another action</a></li>
      <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
182
      <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
183
184
185
186
187
188
189
190
191
      <li><a href="#">Separated link</a></li>
    </ul>
  </div><!-- /btn-group -->
</div>

{% highlight html %}
<!-- Split button -->
<div class="btn-group">
  <button type="button" class="btn btn-danger">Action</button>
Mark Otto's avatar
Mark Otto committed
192
  <button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Mark Otto's avatar
Mark Otto committed
193
194
    <span class="sr-only">Toggle Dropdown</span>
  </button>
Mark Otto's avatar
Mark Otto committed
195
  <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
196
197
198
    <li><a href="#">Action</a></li>
    <li><a href="#">Another action</a></li>
    <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
199
    <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
200
201
202
203
204
205
206
207
208
    <li><a href="#">Separated link</a></li>
  </ul>
</div>
{% endhighlight %}

### Sizing

Button dropdowns work with buttons of all sizes.

209
<div class="bd-example">
Mark Otto's avatar
Mark Otto committed
210
  <div class="btn-toolbar" role="toolbar">
Mark Otto's avatar
Mark Otto committed
211
    <div class="btn-group">
Mark Otto's avatar
Mark Otto committed
212
      <button class="btn btn-secondary btn-lg dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Mark Otto's avatar
Mark Otto committed
213
        Large button
Mark Otto's avatar
Mark Otto committed
214
      </button>
Mark Otto's avatar
Mark Otto committed
215
      <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
216
217
218
        <li><a href="#">Action</a></li>
        <li><a href="#">Another action</a></li>
        <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
219
        <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
220
221
222
        <li><a href="#">Separated link</a></li>
      </ul>
    </div><!-- /btn-group -->
Mark Otto's avatar
Mark Otto committed
223
224
  </div><!-- /btn-toolbar -->
  <div class="btn-toolbar" role="toolbar">
Mark Otto's avatar
Mark Otto committed
225
    <div class="btn-group">
Mark Otto's avatar
Mark Otto committed
226
      <button class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Mark Otto's avatar
Mark Otto committed
227
        Small button
Mark Otto's avatar
Mark Otto committed
228
      </button>
Mark Otto's avatar
Mark Otto committed
229
      <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
230
231
232
        <li><a href="#">Action</a></li>
        <li><a href="#">Another action</a></li>
        <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
233
        <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
234
235
236
        <li><a href="#">Separated link</a></li>
      </ul>
    </div><!-- /btn-group -->
Mark Otto's avatar
Mark Otto committed
237
238
  </div><!-- /btn-toolbar -->
  <div class="btn-toolbar" role="toolbar">
Mark Otto's avatar
Mark Otto committed
239
    <div class="btn-group">
Mark Otto's avatar
Mark Otto committed
240
      <button class="btn btn-secondary btn-xs dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Mark Otto's avatar
Mark Otto committed
241
        Extra small button
Mark Otto's avatar
Mark Otto committed
242
      </button>
Mark Otto's avatar
Mark Otto committed
243
      <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
244
245
246
        <li><a href="#">Action</a></li>
        <li><a href="#">Another action</a></li>
        <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
247
        <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
248
249
250
        <li><a href="#">Separated link</a></li>
      </ul>
    </div><!-- /btn-group -->
Mark Otto's avatar
Mark Otto committed
251
252
  </div><!-- /btn-toolbar -->
</div><!-- /example -->
Mark Otto's avatar
Mark Otto committed
253
254
255
256

{% highlight html %}
<!-- Large button group -->
<div class="btn-group">
Mark Otto's avatar
Mark Otto committed
257
  <button class="btn btn-secondary btn-lg dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
258
    Large button
Mark Otto's avatar
Mark Otto committed
259
  </button>
Mark Otto's avatar
Mark Otto committed
260
  <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
261
262
263
264
265
266
    ...
  </ul>
</div>

<!-- Small button group -->
<div class="btn-group">
Mark Otto's avatar
Mark Otto committed
267
  <button class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
268
    Small button
Mark Otto's avatar
Mark Otto committed
269
  </button>
Mark Otto's avatar
Mark Otto committed
270
  <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
271
272
273
274
275
276
    ...
  </ul>
</div>

<!-- Extra small button group -->
<div class="btn-group">
Mark Otto's avatar
Mark Otto committed
277
  <button class="btn btn-secondary btn-xs dropdown-toggle" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
278
    Extra small button
Mark Otto's avatar
Mark Otto committed
279
  </button>
Mark Otto's avatar
Mark Otto committed
280
  <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
281
282
283
284
285
    ...
  </ul>
</div>
{% endhighlight %}

Mark Otto's avatar
Mark Otto committed
286
287
288
289
### Dropup variation

Trigger dropdown menus above elements by adding `.dropup` to the parent.

290
<div class="bd-example">
Mark Otto's avatar
Mark Otto committed
291
292
293
  <div class="btn-toolbar" role="toolbar">
    <div class="btn-group dropup">
      <button type="button" class="btn btn-secondary">Dropup</button>
Mark Otto's avatar
Mark Otto committed
294
      <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Mark Otto's avatar
Mark Otto committed
295
296
        <span class="sr-only">Toggle Dropdown</span>
      </button>
Mark Otto's avatar
Mark Otto committed
297
      <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
298
299
300
        <li><a href="#">Action</a></li>
        <li><a href="#">Another action</a></li>
        <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
301
        <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
302
303
304
305
306
        <li><a href="#">Separated link</a></li>
      </ul>
    </div><!-- /btn-group -->
    <div class="btn-group dropup">
      <button type="button" class="btn btn-primary">Right dropup</button>
Mark Otto's avatar
Mark Otto committed
307
      <button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Mark Otto's avatar
Mark Otto committed
308
309
        <span class="sr-only">Toggle Dropdown</span>
      </button>
Mark Otto's avatar
Mark Otto committed
310
      <ul class="dropdown-menu dropdown-menu-right">
Mark Otto's avatar
Mark Otto committed
311
312
313
        <li><a href="#">Action</a></li>
        <li><a href="#">Another action</a></li>
        <li><a href="#">Something else here</a></li>
Mark Otto's avatar
Mark Otto committed
314
        <li role="separator" class="divider"></li>
Mark Otto's avatar
Mark Otto committed
315
316
317
318
319
320
        <li><a href="#">Separated link</a></li>
      </ul>
    </div><!-- /btn-group -->
  </div>
</div>

Mark Otto's avatar
Mark Otto committed
321
322
{% highlight html %}
<div class="btn-group dropup">
Mark Otto's avatar
Mark Otto committed
323
  <button type="button" class="btn btn-secondary">Dropup</button>
Mark Otto's avatar
Mark Otto committed
324
  <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Mark Otto's avatar
Mark Otto committed
325
326
    <span class="sr-only">Toggle Dropdown</span>
  </button>
Mark Otto's avatar
Mark Otto committed
327
  <ul class="dropdown-menu">
Mark Otto's avatar
Mark Otto committed
328
329
330
331
    <!-- Dropdown menu links -->
  </ul>
</div>
{% endhighlight %}