2014-07-13 09:59:31 +02:00
---
2015-08-15 07:45:55 +02:00
layout: docs
2014-07-13 09:59:31 +02:00
title: Button group
2015-08-06 02:47:45 +02:00
group: components
2014-07-13 09:59:31 +02:00
---
2014-07-13 10:23:34 +02:00
Group a series of buttons together on a single line with the button group. Add on optional JavaScript radio and checkbox style behavior with [our buttons plugin ](../javascript/#buttons ).
2014-03-17 03:03:53 +01:00
2015-05-29 10:58:52 +02:00
## Contents
* Will be replaced with the ToC, excluding the "Contents" header
{:toc}
2015-04-17 01:56:40 +02:00
{% callout warning %}
#### Tooltips & popovers in button groups require special setting
2014-03-17 03:03:53 +01:00
2015-04-17 01:56:40 +02:00
When using tooltips or popovers on elements within a `.btn-group` , you'll have to specify the option `container: 'body'` to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the tooltip or popover is triggered).
{% endcallout %}
{% callout warning %}
#### Ensure correct `role` and provide a label
In order for assistive technologies – such as screen readers – to convey that a series of buttons is grouped, an appropriate `role` attribute needs to be provided. For button groups, this would be `role="group"` , while toolbars should have a `role="toolbar"` .
In addition, groups and toolbars should be given an explicit label, as most assistive technologies will otherwise not announce them, despite the presence of the correct `role` attribute. In the examples provided here, we use `aria-label` , but alternatives such as `aria-labelledby` can also be used.
{% endcallout %}
2014-12-01 05:17:45 +01:00
2014-07-13 10:23:34 +02:00
### Basic example
2014-03-17 03:03:53 +01:00
2014-07-13 10:23:34 +02:00
Wrap a series of buttons with `.btn` in `.btn-group` .
{% example html %}
2014-12-01 05:17:45 +01:00
< div class = "btn-group" role = "group" aria-label = "Basic example" >
2014-07-09 02:14:14 +02:00
< button type = "button" class = "btn btn-secondary" > Left< / button >
< button type = "button" class = "btn btn-secondary" > Middle< / button >
< button type = "button" class = "btn btn-secondary" > Right< / button >
2014-03-17 03:03:53 +01:00
< / div >
2014-07-13 10:23:34 +02:00
{% endexample %}
2014-03-17 03:03:53 +01:00
2014-07-13 10:23:34 +02:00
### Button toolbar
Combine sets of button groups into button toolbars for more complex components.
{% example html %}
2014-12-01 05:17:45 +01:00
< div class = "btn-toolbar" role = "toolbar" aria-label = "Toolbar with button groups" >
< div class = "btn-group" role = "group" aria-label = "First group" >
2014-07-13 10:23:34 +02:00
< button type = "button" class = "btn btn-secondary" > 1< / button >
< button type = "button" class = "btn btn-secondary" > 2< / button >
< button type = "button" class = "btn btn-secondary" > 3< / button >
< button type = "button" class = "btn btn-secondary" > 4< / button >
< / div >
2014-12-01 05:17:45 +01:00
< div class = "btn-group" role = "group" aria-label = "Second group" >
2014-07-13 10:23:34 +02:00
< button type = "button" class = "btn btn-secondary" > 5< / button >
< button type = "button" class = "btn btn-secondary" > 6< / button >
< button type = "button" class = "btn btn-secondary" > 7< / button >
< / div >
2014-12-01 05:17:45 +01:00
< div class = "btn-group" role = "group" aria-label = "Third group" >
2014-07-13 10:23:34 +02:00
< button type = "button" class = "btn btn-secondary" > 8< / button >
< / div >
2014-03-17 03:03:53 +01:00
< / div >
2014-07-13 10:23:34 +02:00
{% endexample %}
### Sizing
2015-01-04 05:08:58 +01:00
Instead of applying button sizing classes to every button in a group, just add `.btn-group-*` to each `.btn-group` , including each one when nesting multiple groups.
2014-03-17 03:03:53 +01:00
2015-04-16 23:07:20 +02:00
< div class = "bd-example" >
2014-12-01 05:17:45 +01:00
< div class = "btn-group btn-group-lg" role = "group" aria-label = "Large button group" >
< button type = "button" class = "btn btn-secondary" > Left< / button >
< button type = "button" class = "btn btn-secondary" > Middle< / button >
< button type = "button" class = "btn btn-secondary" > Right< / button >
2014-07-13 10:23:34 +02:00
< / div >
2014-12-01 05:17:45 +01:00
< br >
< div class = "btn-group" role = "group" aria-label = "Default button group" >
< button type = "button" class = "btn btn-secondary" > Left< / button >
< button type = "button" class = "btn btn-secondary" > Middle< / button >
< button type = "button" class = "btn btn-secondary" > Right< / button >
2014-07-13 10:23:34 +02:00
< / div >
2014-12-01 05:17:45 +01:00
< br >
< div class = "btn-group btn-group-sm" role = "group" aria-label = "Small button group" >
< button type = "button" class = "btn btn-secondary" > Left< / button >
< button type = "button" class = "btn btn-secondary" > Middle< / button >
< button type = "button" class = "btn btn-secondary" > Right< / button >
2014-07-13 10:23:34 +02:00
< / div >
2014-12-01 05:17:45 +01:00
< br >
< div class = "btn-group btn-group-xs" role = "group" aria-label = "Extra small button group" >
< button type = "button" class = "btn btn-secondary" > Left< / button >
< button type = "button" class = "btn btn-secondary" > Middle< / button >
< button type = "button" class = "btn btn-secondary" > Right< / button >
2014-03-17 03:03:53 +01:00
< / div >
2014-07-13 10:23:34 +02:00
< / div >
2014-03-17 03:03:53 +01:00
{% highlight html %}
2014-12-01 05:17:45 +01:00
< div class = "btn-group btn-group-lg" role = "group" aria-label = "..." > ...< / div >
< div class = "btn-group" role = "group" aria-label = "..." > ...< / div >
< div class = "btn-group btn-group-sm" role = "group" aria-label = "..." > ...< / div >
< div class = "btn-group btn-group-xs" role = "group" aria-label = "..." > ...< / div >
2014-03-17 03:03:53 +01:00
{% endhighlight %}
2014-07-13 10:23:34 +02:00
### Nesting
2014-03-17 03:03:53 +01:00
2014-07-13 10:23:34 +02:00
Place a `.btn-group` within another `.btn-group` when you want dropdown menus mixed with a series of buttons.
{% example html %}
2014-12-01 05:17:45 +01:00
< div class = "btn-group" role = "group" aria-label = "Button group with nested dropdown" >
2014-07-09 02:14:14 +02:00
< button type = "button" class = "btn btn-secondary" > 1< / button >
< button type = "button" class = "btn btn-secondary" > 2< / button >
2014-03-17 03:03:53 +01:00
2014-12-01 05:17:45 +01:00
< div class = "btn-group" role = "group" >
2015-06-19 08:56:43 +02:00
< button id = "btnGroupDrop1" type = "button" class = "btn btn-secondary dropdown-toggle" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "false" >
2014-03-17 03:03:53 +01:00
Dropdown
< / button >
2015-06-19 08:56:43 +02:00
< ul class = "dropdown-menu" aria-labelledby = "btnGroupDrop1" >
2014-03-17 03:03:53 +01:00
< li > < a href = "#" > Dropdown link< / a > < / li >
< li > < a href = "#" > Dropdown link< / a > < / li >
< / ul >
< / div >
< / div >
2014-07-13 10:23:34 +02:00
{% endexample %}
2014-03-17 03:03:53 +01:00
2014-07-13 10:23:34 +02:00
### Vertical variation
Make a set of buttons appear vertically stacked rather than horizontally. **Split button dropdowns are not supported here.**
2015-04-16 23:07:20 +02:00
< div class = "bd-example" >
2014-12-01 05:17:45 +01:00
< div class = "btn-group-vertical" role = "group" aria-label = "Vertical button group" >
2014-07-13 10:23:34 +02:00
< button type = "button" class = "btn btn-secondary" > Button< / button >
< button type = "button" class = "btn btn-secondary" > Button< / button >
2014-12-01 05:17:45 +01:00
< div class = "btn-group" role = "group" >
2015-06-19 08:56:43 +02:00
< button id = "btnGroupVerticalDrop1" type = "button" class = "btn btn-secondary dropdown-toggle" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "false" >
2014-07-13 10:23:34 +02:00
Dropdown
< / button >
2015-06-19 08:56:43 +02:00
< ul class = "dropdown-menu" aria-labelledby = "btnGroupVerticalDrop1" >
2014-07-13 10:23:34 +02:00
< li > < a href = "#" > Dropdown link< / a > < / li >
< li > < a href = "#" > Dropdown link< / a > < / li >
< / ul >
< / div >
< button type = "button" class = "btn btn-secondary" > Button< / button >
< button type = "button" class = "btn btn-secondary" > Button< / button >
2014-12-01 05:17:45 +01:00
< div class = "btn-group" role = "group" >
2015-06-19 08:56:43 +02:00
< button id = "btnGroupVerticalDrop2" type = "button" class = "btn btn-secondary dropdown-toggle" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "false" >
2014-07-13 10:23:34 +02:00
Dropdown
< / button >
2015-06-19 08:56:43 +02:00
< ul class = "dropdown-menu" aria-labelledby = "btnGroupVerticalDrop2" >
2014-07-13 10:23:34 +02:00
< li > < a href = "#" > Dropdown link< / a > < / li >
< li > < a href = "#" > Dropdown link< / a > < / li >
< / ul >
< / div >
2014-12-01 05:17:45 +01:00
< div class = "btn-group" role = "group" >
2015-06-19 08:56:43 +02:00
< button id = "btnGroupVerticalDrop3" type = "button" class = "btn btn-secondary dropdown-toggle" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "false" >
2014-07-13 10:23:34 +02:00
Dropdown
< / button >
2015-06-19 08:56:43 +02:00
< ul class = "dropdown-menu" aria-labelledby = "btnGroupVerticalDrop3" >
2014-07-13 10:23:34 +02:00
< li > < a href = "#" > Dropdown link< / a > < / li >
< li > < a href = "#" > Dropdown link< / a > < / li >
< / ul >
< / div >
2014-12-01 05:17:45 +01:00
< div class = "btn-group" role = "group" >
2015-06-19 08:56:43 +02:00
< button id = "btnGroupVerticalDrop4" type = "button" class = "btn btn-secondary dropdown-toggle" data-toggle = "dropdown" aria-haspopup = "true" aria-expanded = "false" >
2014-07-13 10:23:34 +02:00
Dropdown
< / button >
2015-06-19 08:56:43 +02:00
< ul class = "dropdown-menu" aria-labelledby = "btnGroupVerticalDrop4" >
2014-07-13 10:23:34 +02:00
< li > < a href = "#" > Dropdown link< / a > < / li >
< li > < a href = "#" > Dropdown link< / a > < / li >
< / ul >
2014-03-17 03:03:53 +01:00
< / div >
< / div >
2014-07-13 10:23:34 +02:00
< / div >
2014-03-17 03:03:53 +01:00
{% highlight html %}
< div class = "btn-group-vertical" >
...
< / div >
{% endhighlight %}