twbs--bootstrap/docs/components/button-group.md

241 lines
8.9 KiB
Markdown
Raw Normal View History

2014-07-13 07:59:31 +00:00
---
layout: page
title: Button group
---
2014-07-13 08:23:34 +00: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 02:03:53 +00:00
2014-07-13 08:23:34 +00:00
<div class="bs-callout bs-callout-warning">
<h4>Tooltips &amp; popovers in button groups require special setting</h4>
<p>When using tooltips or popovers on elements within a <code>.btn-group</code>, you'll have to specify the option <code>container: 'body'</code> to avoid unwanted side effects (such as the element growing wider and/or losing its rounded corners when the tooltip or popover is triggered).</p>
</div>
2014-03-17 02:03:53 +00:00
2014-07-13 08:23:34 +00:00
### Basic example
2014-03-17 02:03:53 +00:00
2014-07-13 08:23:34 +00:00
Wrap a series of buttons with `.btn` in `.btn-group`.
{% example html %}
2014-03-17 02:03:53 +00:00
<div class="btn-group">
2014-07-09 00:14:14 +00: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 02:03:53 +00:00
</div>
2014-07-13 08:23:34 +00:00
{% endexample %}
2014-03-17 02:03:53 +00:00
2014-07-13 08:23:34 +00:00
### Button toolbar
Combine sets of button groups into button toolbars for more complex components.
{% example html %}
2014-03-17 02:03:53 +00:00
<div class="btn-toolbar" role="toolbar">
2014-07-13 08:23:34 +00:00
<div class="btn-group">
<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>
<div class="btn-group">
<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>
<div class="btn-group">
<button type="button" class="btn btn-secondary">8</button>
</div>
2014-03-17 02:03:53 +00:00
</div>
2014-07-13 08:23:34 +00:00
{% endexample %}
### Sizing
Instead of applying button sizing classes to every button in a group, just add `.btn-group-*` to the `.btn-group`.
2014-03-17 02:03:53 +00:00
2014-07-13 08:23:34 +00:00
<div class="bs-example">
<div class="btn-toolbar" role="toolbar">
<div class="btn-group btn-group-lg">
<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 02:03:53 +00:00
</div>
2014-07-13 08:23:34 +00:00
</div>
<div class="btn-toolbar" role="toolbar">
<div class="btn-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 02:03:53 +00:00
</div>
2014-07-13 08:23:34 +00:00
</div>
<div class="btn-toolbar" role="toolbar">
<div class="btn-group btn-group-sm">
<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 02:03:53 +00:00
</div>
2014-07-13 08:23:34 +00:00
</div>
<div class="btn-toolbar" role="toolbar">
<div class="btn-group btn-group-xs">
<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 02:03:53 +00:00
</div>
</div>
2014-07-13 08:23:34 +00:00
</div>
2014-03-17 02:03:53 +00:00
{% highlight html %}
<div class="btn-group btn-group-lg">...</div>
<div class="btn-group">...</div>
<div class="btn-group btn-group-sm">...</div>
<div class="btn-group btn-group-xs">...</div>
{% endhighlight %}
2014-07-13 08:23:34 +00:00
### Nesting
2014-03-17 02:03:53 +00:00
2014-07-13 08:23:34 +00:00
Place a `.btn-group` within another `.btn-group` when you want dropdown menus mixed with a series of buttons.
{% example html %}
2014-03-17 02:03:53 +00:00
<div class="btn-group">
2014-07-09 00:14:14 +00:00
<button type="button" class="btn btn-secondary">1</button>
<button type="button" class="btn btn-secondary">2</button>
2014-03-17 02:03:53 +00:00
<div class="btn-group">
2014-07-13 08:23:34 +00:00
<button id="btnGroupDrop1" type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown">
2014-03-17 02:03:53 +00:00
Dropdown
</button>
2014-07-13 08:23:34 +00:00
<ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupDrop1">
2014-03-17 02:03:53 +00:00
<li><a href="#">Dropdown link</a></li>
<li><a href="#">Dropdown link</a></li>
</ul>
</div>
</div>
2014-07-13 08:23:34 +00:00
{% endexample %}
2014-03-17 02:03:53 +00:00
2014-07-13 08:23:34 +00:00
### Vertical variation
Make a set of buttons appear vertically stacked rather than horizontally. **Split button dropdowns are not supported here.**
<div class="bs-example">
<div class="btn-group-vertical">
<button type="button" class="btn btn-secondary">Button</button>
<button type="button" class="btn btn-secondary">Button</button>
<div class="btn-group">
<button id="btnGroupVerticalDrop1" type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown">
Dropdown
</button>
<ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupVerticalDrop1">
<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>
<div class="btn-group">
<button id="btnGroupVerticalDrop2" type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown">
Dropdown
</button>
<ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupVerticalDrop2">
<li><a href="#">Dropdown link</a></li>
<li><a href="#">Dropdown link</a></li>
</ul>
</div>
<div class="btn-group">
<button id="btnGroupVerticalDrop3" type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown">
Dropdown
</button>
<ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupVerticalDrop3">
<li><a href="#">Dropdown link</a></li>
<li><a href="#">Dropdown link</a></li>
</ul>
</div>
<div class="btn-group">
<button id="btnGroupVerticalDrop4" type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown">
Dropdown
</button>
<ul class="dropdown-menu" role="menu" aria-labelledby="btnGroupVerticalDrop4">
<li><a href="#">Dropdown link</a></li>
<li><a href="#">Dropdown link</a></li>
</ul>
2014-03-17 02:03:53 +00:00
</div>
</div>
2014-07-13 08:23:34 +00:00
</div>
2014-03-17 02:03:53 +00:00
{% highlight html %}
<div class="btn-group-vertical">
...
</div>
{% endhighlight %}
2014-07-13 08:23:34 +00:00
### Justified button groups
2014-03-17 02:03:53 +00:00
2014-07-13 08:23:34 +00:00
Make a group of buttons stretch at equal sizes to span the entire width of its parent. Also works with button dropdowns within the button group.
2014-03-17 02:03:53 +00:00
2014-07-13 08:23:34 +00:00
<div class="bs-callout bs-callout-warning">
<h4>Handling borders</h4>
<p>Due to the specific HTML and CSS used to justify buttons (namely <code>display: table-cell</code>), the borders between them are doubled. In regular button groups, <code>margin-left: -1px</code> is used to stack the borders instead of removing them. However, <code>margin</code> doesn't work with <code>display: table-cell</code>. As a result, depending on your customizations to Bootstrap, you may wish to remove or re-color the borders.</p>
</div>
#### With `<a>` elements
Just wrap a series of `.btn`s in `.btn-group.btn-group-justified`.
<div class="bs-example">
<div class="btn-group btn-group-justified">
<a class="btn btn-secondary" href="#" role="button">Left</a>
<a class="btn btn-secondary" href="#" role="button">Middle</a>
<a class="btn btn-secondary" href="#" role="button">Right</a>
2014-07-13 08:23:34 +00:00
</div>
<br>
<div class="btn-group btn-group-justified">
<a class="btn btn-secondary" href="#" role="button">Left</a>
<a class="btn btn-secondary" href="#" role="button">Middle</a>
2014-07-13 08:23:34 +00:00
<div class="btn-group">
<a class="btn btn-secondary dropdown-toggle" href="#" data-toggle="dropdown">
2014-07-13 08:23:34 +00:00
Dropdown
</a>
<ul class="dropdown-menu" role="menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li><a href="#">Separated link</a></li>
</ul>
2014-03-17 02:03:53 +00:00
</div>
</div>
2014-07-13 08:23:34 +00:00
</div>
2014-03-17 02:03:53 +00:00
{% highlight html %}
<div class="btn-group btn-group-justified">
...
</div>
{% endhighlight %}
2014-07-13 08:23:34 +00:00
#### With `<button>` elements
To use justified button groups with `<button>` elements, **you must wrap each button in a button group**. Most browsers don't properly apply our CSS for justification to `<button>` elements, but since we support button dropdowns, we can workaround that.
<div class="bs-example">
<div class="btn-group btn-group-justified">
<div class="btn-group">
<button type="button" class="btn btn-secondary">Left</button>
</div>
<div class="btn-group">
<button type="button" class="btn btn-secondary">Middle</button>
</div>
<div class="btn-group">
<button type="button" class="btn btn-secondary">Right</button>
2014-03-17 02:03:53 +00:00
</div>
</div>
2014-07-13 08:23:34 +00:00
</div>
2014-03-17 02:03:53 +00:00
{% highlight html %}
<div class="btn-group btn-group-justified">
<div class="btn-group">
2014-07-09 00:14:14 +00:00
<button type="button" class="btn btn-secondary">Left</button>
2014-03-17 02:03:53 +00:00
</div>
<div class="btn-group">
2014-07-09 00:14:14 +00:00
<button type="button" class="btn btn-secondary">Middle</button>
2014-03-17 02:03:53 +00:00
</div>
<div class="btn-group">
2014-07-09 00:14:14 +00:00
<button type="button" class="btn btn-secondary">Right</button>
2014-03-17 02:03:53 +00:00
</div>
</div>
{% endhighlight %}