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
2020-07-06 09:52:43 +02:00
description: Group a series of buttons together on a single line or stack them in a vertical column.
2015-08-06 02:47:45 +02:00
group: components
2017-05-28 08:01:14 +02:00
toc: true
2014-07-13 09:59:31 +02:00
---
2015-08-19 05:25:18 +02:00
## Basic example
2014-03-17 03:03:53 +01:00
2020-05-02 11:11:24 +02:00
Wrap a series of buttons with `.btn` in `.btn-group` .
2014-07-13 10:23:34 +02:00
2019-01-08 17:33:28 +01:00
{{< example > }}
2014-12-01 05:17:45 +01:00
< div class = "btn-group" role = "group" aria-label = "Basic example" >
2020-07-06 09:52:43 +02:00
< button type = "button" class = "btn btn-primary" > Left< / button >
< button type = "button" class = "btn btn-primary" > Middle< / button >
< button type = "button" class = "btn btn-primary" > Right< / button >
2014-03-17 03:03:53 +01:00
< / div >
2019-01-08 17:33:28 +01:00
{{< / example > }}
2014-03-17 03:03:53 +01:00
2022-12-12 03:10:19 +01:00
{{< callout info > }}
Button groups require an appropriate `role` attribute and explicit label to ensure assistive technologies like screen readers identify buttons as grouped and announce them. Use `role="group"` for button groups or `role="toolbar"` for button toolbars. Then use `aria-label` or `aria-labelledby` to label them.
2020-10-13 15:37:21 +02:00
{{< / callout > }}
2017-09-26 13:50:35 +02:00
2020-10-25 21:29:58 +01:00
These classes can also be added to groups of links, as an alternative to the [`.nav` navigation components ]({{< docsref "/components/navs-tabs" >}} ).
2020-05-02 11:11:24 +02:00
{{< example > }}
< div class = "btn-group" >
2020-07-06 09:52:43 +02:00
< a href = "#" class = "btn btn-primary active" aria-current = "page" > Active link< / a >
< a href = "#" class = "btn btn-primary" > Link< / a >
< a href = "#" class = "btn btn-primary" > Link< / a >
< / div >
{{< / example > }}
## Mixed styles
{{< example > }}
< div class = "btn-group" role = "group" aria-label = "Basic mixed styles example" >
< button type = "button" class = "btn btn-danger" > Left< / button >
< button type = "button" class = "btn btn-warning" > Middle< / button >
< button type = "button" class = "btn btn-success" > Right< / button >
2020-05-02 11:11:24 +02:00
< / div >
{{< / example > }}
## Outlined styles
{{< example > }}
2020-07-06 09:52:43 +02:00
< div class = "btn-group" role = "group" aria-label = "Basic outlined example" >
< button type = "button" class = "btn btn-outline-primary" > Left< / button >
< button type = "button" class = "btn btn-outline-primary" > Middle< / button >
< button type = "button" class = "btn btn-outline-primary" > Right< / button >
< / div >
{{< / example > }}
## Checkbox and radio button groups
Combine button-like checkbox and radio [toggle buttons ]({{< docsref "/forms/checks-radios" >}} ) into a seamless looking button group.
{{< example > }}
< div class = "btn-group" role = "group" aria-label = "Basic checkbox toggle button group" >
< input type = "checkbox" class = "btn-check" id = "btncheck1" autocomplete = "off" >
< label class = "btn btn-outline-primary" for = "btncheck1" > Checkbox 1< / label >
< input type = "checkbox" class = "btn-check" id = "btncheck2" autocomplete = "off" >
< label class = "btn btn-outline-primary" for = "btncheck2" > Checkbox 2< / label >
< input type = "checkbox" class = "btn-check" id = "btncheck3" autocomplete = "off" >
< label class = "btn btn-outline-primary" for = "btncheck3" > Checkbox 3< / label >
< / div >
{{< / example > }}
{{< example > }}
< div class = "btn-group" role = "group" aria-label = "Basic radio toggle button group" >
< input type = "radio" class = "btn-check" name = "btnradio" id = "btnradio1" autocomplete = "off" checked >
< label class = "btn btn-outline-primary" for = "btnradio1" > Radio 1< / label >
< input type = "radio" class = "btn-check" name = "btnradio" id = "btnradio2" autocomplete = "off" >
< label class = "btn btn-outline-primary" for = "btnradio2" > Radio 2< / label >
< input type = "radio" class = "btn-check" name = "btnradio" id = "btnradio3" autocomplete = "off" >
< label class = "btn btn-outline-primary" for = "btnradio3" > Radio 3< / label >
2020-05-02 11:11:24 +02:00
< / div >
{{< / example > }}
2015-08-19 05:25:18 +02:00
## Button toolbar
2014-07-13 10:23:34 +02:00
2016-12-22 08:29:16 +01:00
Combine sets of button groups into button toolbars for more complex components. Use utility classes as needed to space out groups, buttons, and more.
2014-07-13 10:23:34 +02:00
2019-01-08 17:33:28 +01:00
{{< example > }}
2014-12-01 05:17:45 +01:00
< div class = "btn-toolbar" role = "toolbar" aria-label = "Toolbar with button groups" >
2020-06-09 15:44:20 +02:00
< div class = "btn-group me-2" role = "group" aria-label = "First group" >
2020-07-06 09:52:43 +02:00
< button type = "button" class = "btn btn-primary" > 1< / button >
< button type = "button" class = "btn btn-primary" > 2< / button >
< button type = "button" class = "btn btn-primary" > 3< / button >
< button type = "button" class = "btn btn-primary" > 4< / button >
2014-07-13 10:23:34 +02:00
< / div >
2020-06-09 15:44:20 +02:00
< div class = "btn-group me-2" 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" >
2020-07-06 09:52:43 +02:00
< button type = "button" class = "btn btn-info" > 8< / button >
2014-07-13 10:23:34 +02:00
< / div >
2014-03-17 03:03:53 +01:00
< / div >
2019-01-08 17:33:28 +01:00
{{< / example > }}
2014-07-13 10:23:34 +02:00
2016-12-27 23:37:17 +01:00
Feel free to mix input groups with button groups in your toolbars. Similar to the example above, you'll likely need some utilities though to space things properly.
2019-01-08 17:33:28 +01:00
{{< example > }}
2016-12-27 23:37:17 +01:00
< div class = "btn-toolbar mb-3" role = "toolbar" aria-label = "Toolbar with button groups" >
2020-06-09 15:44:20 +02:00
< div class = "btn-group me-2" role = "group" aria-label = "First group" >
2020-07-06 09:52:43 +02:00
< button type = "button" class = "btn btn-outline-secondary" > 1< / button >
< button type = "button" class = "btn btn-outline-secondary" > 2< / button >
< button type = "button" class = "btn btn-outline-secondary" > 3< / button >
< button type = "button" class = "btn btn-outline-secondary" > 4< / button >
2016-12-27 23:37:17 +01:00
< / div >
< div class = "input-group" >
2019-12-19 15:28:40 +01:00
< div class = "input-group-text" id = "btnGroupAddon" > @< / div >
2017-03-30 23:45:36 +02:00
< input type = "text" class = "form-control" placeholder = "Input group example" aria-label = "Input group example" aria-describedby = "btnGroupAddon" >
2016-12-27 23:37:17 +01:00
< / div >
< / div >
< div class = "btn-toolbar justify-content-between" role = "toolbar" aria-label = "Toolbar with button groups" >
< div class = "btn-group" role = "group" aria-label = "First group" >
2020-07-06 09:52:43 +02:00
< button type = "button" class = "btn btn-outline-secondary" > 1< / button >
< button type = "button" class = "btn btn-outline-secondary" > 2< / button >
< button type = "button" class = "btn btn-outline-secondary" > 3< / button >
< button type = "button" class = "btn btn-outline-secondary" > 4< / button >
2016-12-27 23:37:17 +01:00
< / div >
< div class = "input-group" >
2019-12-19 15:28:40 +01:00
< div class = "input-group-text" id = "btnGroupAddon2" > @< / div >
2017-03-30 23:45:36 +02:00
< input type = "text" class = "form-control" placeholder = "Input group example" aria-label = "Input group example" aria-describedby = "btnGroupAddon2" >
2016-12-27 23:37:17 +01:00
< / div >
< / div >
2019-01-08 17:33:28 +01:00
{{< / example > }}
2016-12-27 23:37:17 +01:00
2015-08-19 05:25:18 +02:00
## Sizing
2014-07-13 10:23:34 +02:00
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
2022-05-30 07:27:48 +02:00
{{< example > }}
< div class = "btn-group btn-group-lg" role = "group" aria-label = "Large button group" >
2022-12-29 19:38:19 +01:00
< button type = "button" class = "btn btn-outline-primary" > Left< / button >
< button type = "button" class = "btn btn-outline-primary" > Middle< / button >
< button type = "button" class = "btn btn-outline-primary" > Right< / button >
2014-07-13 10:23:34 +02:00
< / div >
2022-05-30 07:27:48 +02:00
< br >
< div class = "btn-group" role = "group" aria-label = "Default button group" >
2022-12-29 19:38:19 +01:00
< button type = "button" class = "btn btn-outline-primary" > Left< / button >
< button type = "button" class = "btn btn-outline-primary" > Middle< / button >
< button type = "button" class = "btn btn-outline-primary" > Right< / button >
2022-05-30 07:27:48 +02:00
< / div >
< br >
< div class = "btn-group btn-group-sm" role = "group" aria-label = "Small button group" >
2022-12-29 19:38:19 +01:00
< button type = "button" class = "btn btn-outline-primary" > Left< / button >
< button type = "button" class = "btn btn-outline-primary" > Middle< / button >
< button type = "button" class = "btn btn-outline-primary" > Right< / button >
2022-05-30 07:27:48 +02:00
< / div >
{{< / example > }}
2014-03-17 03:03:53 +01:00
2015-08-19 05:25:18 +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.
2019-01-08 17:33:28 +01:00
{{< example > }}
2014-12-01 05:17:45 +01:00
< div class = "btn-group" role = "group" aria-label = "Button group with nested dropdown" >
2020-07-06 09:52:43 +02:00
< button type = "button" class = "btn btn-primary" > 1< / button >
< button type = "button" class = "btn btn-primary" > 2< / button >
2014-03-17 03:03:53 +01:00
2014-12-01 05:17:45 +01:00
< div class = "btn-group" role = "group" >
2022-06-03 12:18:22 +02:00
< button type = "button" class = "btn btn-primary dropdown-toggle" data-bs-toggle = "dropdown" aria-expanded = "false" >
2014-03-17 03:03:53 +01:00
Dropdown
< / button >
2022-06-03 12:18:22 +02:00
< ul class = "dropdown-menu" >
2019-12-29 02:21:20 +01:00
< li > < a class = "dropdown-item" href = "#" > Dropdown link< / a > < / li >
< li > < a class = "dropdown-item" href = "#" > Dropdown link< / a > < / li >
< / ul >
2014-03-17 03:03:53 +01:00
< / div >
< / div >
2019-01-08 17:33:28 +01:00
{{< / example > }}
2014-03-17 03:03:53 +01:00
2015-08-19 05:25:18 +02:00
## Vertical variation
2014-07-13 10:23:34 +02:00
Make a set of buttons appear vertically stacked rather than horizontally. **Split button dropdowns are not supported here.**
2022-05-30 07:27:48 +02:00
{{< example > }}
< div class = "btn-group-vertical" role = "group" aria-label = "Vertical button group" >
2022-12-29 19:38:19 +01:00
< button type = "button" class = "btn btn-primary" > Button< / button >
< button type = "button" class = "btn btn-primary" > Button< / button >
< button type = "button" class = "btn btn-primary" > Button< / button >
< button type = "button" class = "btn btn-primary" > Button< / button >
< button type = "button" class = "btn btn-primary" > Button< / button >
< button type = "button" class = "btn btn-primary" > Button< / button >
2016-12-22 08:29:16 +01:00
< / div >
2022-05-30 07:27:48 +02:00
{{< / example > }}
2016-12-22 08:29:16 +01:00
2022-05-30 07:27:48 +02:00
{{< example > }}
< div class = "btn-group-vertical" role = "group" aria-label = "Vertical button group" >
< button type = "button" class = "btn btn-primary" > Button< / button >
< button type = "button" class = "btn btn-primary" > Button< / button >
< div class = "btn-group" role = "group" >
2022-06-03 12:18:22 +02:00
< button type = "button" class = "btn btn-primary dropdown-toggle" data-bs-toggle = "dropdown" aria-expanded = "false" >
2022-05-30 07:27:48 +02:00
Dropdown
< / button >
2022-06-03 12:18:22 +02:00
< ul class = "dropdown-menu" >
2022-05-30 07:27:48 +02:00
< li > < a class = "dropdown-item" href = "#" > Dropdown link< / a > < / li >
< li > < a class = "dropdown-item" href = "#" > Dropdown link< / a > < / li >
< / ul >
2014-03-17 03:03:53 +01:00
< / div >
2022-05-30 07:27:48 +02:00
< button type = "button" class = "btn btn-primary" > Button< / button >
< button type = "button" class = "btn btn-primary" > Button< / button >
< div class = "btn-group" role = "group" >
2022-06-03 12:18:22 +02:00
< button type = "button" class = "btn btn-primary dropdown-toggle" data-bs-toggle = "dropdown" aria-expanded = "false" >
2022-05-30 07:27:48 +02:00
Dropdown
< / button >
2022-06-03 12:18:22 +02:00
< ul class = "dropdown-menu" >
2022-05-30 07:27:48 +02:00
< li > < a class = "dropdown-item" href = "#" > Dropdown link< / a > < / li >
< li > < a class = "dropdown-item" href = "#" > Dropdown link< / a > < / li >
< / ul >
< / div >
< div class = "btn-group" role = "group" >
2022-06-03 12:18:22 +02:00
< button type = "button" class = "btn btn-primary dropdown-toggle" data-bs-toggle = "dropdown" aria-expanded = "false" >
2022-05-30 07:27:48 +02:00
Dropdown
< / button >
2022-06-03 12:18:22 +02:00
< ul class = "dropdown-menu" >
2022-05-30 07:27:48 +02:00
< li > < a class = "dropdown-item" href = "#" > Dropdown link< / a > < / li >
< li > < a class = "dropdown-item" href = "#" > Dropdown link< / a > < / li >
< / ul >
< / div >
< div class = "btn-group" role = "group" >
2022-06-03 12:18:22 +02:00
< button type = "button" class = "btn btn-primary dropdown-toggle" data-bs-toggle = "dropdown" aria-expanded = "false" >
2022-05-30 07:27:48 +02:00
Dropdown
< / button >
2022-06-03 12:18:22 +02:00
< ul class = "dropdown-menu" >
2022-05-30 07:27:48 +02:00
< li > < a class = "dropdown-item" href = "#" > Dropdown link< / a > < / li >
< li > < a class = "dropdown-item" href = "#" > Dropdown link< / a > < / li >
< / ul >
2020-07-06 09:52:43 +02:00
< / div >
< / div >
2022-05-30 07:27:48 +02:00
{{< / example > }}
2020-07-06 09:52:43 +02:00
2022-05-30 07:27:48 +02:00
{{< example > }}
< div class = "btn-group-vertical" role = "group" aria-label = "Vertical radio toggle button group" >
< input type = "radio" class = "btn-check" name = "vbtn-radio" id = "vbtn-radio1" autocomplete = "off" checked >
< label class = "btn btn-outline-danger" for = "vbtn-radio1" > Radio 1< / label >
< input type = "radio" class = "btn-check" name = "vbtn-radio" id = "vbtn-radio2" autocomplete = "off" >
< label class = "btn btn-outline-danger" for = "vbtn-radio2" > Radio 2< / label >
< input type = "radio" class = "btn-check" name = "vbtn-radio" id = "vbtn-radio3" autocomplete = "off" >
< label class = "btn btn-outline-danger" for = "vbtn-radio3" > Radio 3< / label >
2014-03-17 03:03:53 +01:00
< / div >
2022-05-30 07:27:48 +02:00
{{< / example > }}