aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Otto <[email protected]>2016-12-21 23:29:16 -0800
committerMark Otto <[email protected]>2016-12-27 22:37:50 -0800
commitfd75c4127988a9d61c3fec208b398763b68ae338 (patch)
treeee180ecdf5602b716d0ce6a4e0b41e8633cf9c33
parent2cb2979908291faead4251ece787c9f4c40a0b28 (diff)
downloadbootstrap-fd75c4127988a9d61c3fec208b398763b68ae338.tar.xz
bootstrap-fd75c4127988a9d61c3fec208b398763b68ae338.zip
revamp button group with flexbox
-rw-r--r--docs/components/button-group.md18
-rw-r--r--scss/_button-group.scss58
2 files changed, 34 insertions, 42 deletions
diff --git a/docs/components/button-group.md b/docs/components/button-group.md
index cff38e1b1..f4c164749 100644
--- a/docs/components/button-group.md
+++ b/docs/components/button-group.md
@@ -26,17 +26,17 @@ Wrap a series of buttons with `.btn` in `.btn-group`.
## Button toolbar
-Combine sets of button groups into button toolbars for more complex components.
+Combine sets of button groups into button toolbars for more complex components. Use utility classes as needed to space out groups, buttons, and more.
{% example html %}
<div class="btn-toolbar" role="toolbar" aria-label="Toolbar with button groups">
- <div class="btn-group" role="group" aria-label="First group">
+ <div class="btn-group mr-2" role="group" aria-label="First 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" role="group" aria-label="Second group">
+ <div class="btn-group mr-2" role="group" aria-label="Second 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>
@@ -106,6 +106,18 @@ Make a set of buttons appear vertically stacked rather than horizontally. **Spli
<div class="btn-group-vertical" role="group" aria-label="Vertical button group">
<button type="button" class="btn btn-secondary">Button</button>
<button type="button" class="btn btn-secondary">Button</button>
+ <button type="button" class="btn btn-secondary">Button</button>
+ <button type="button" class="btn btn-secondary">Button</button>
+ <button type="button" class="btn btn-secondary">Button</button>
+ <button type="button" class="btn btn-secondary">Button</button>
+ </div>
+</div>
+
+
+<div class="bd-example">
+ <div class="btn-group-vertical" role="group" aria-label="Vertical button group">
+ <button type="button" class="btn btn-secondary">Button</button>
+ <button type="button" class="btn btn-secondary">Button</button>
<div class="btn-group" role="group">
<button id="btnGroupVerticalDrop1" type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown
diff --git a/scss/_button-group.scss b/scss/_button-group.scss
index 0e63ecc54..bbee02abf 100644
--- a/scss/_button-group.scss
+++ b/scss/_button-group.scss
@@ -4,28 +4,27 @@
.btn-group,
.btn-group-vertical {
position: relative;
- display: inline-block;
+ display: flex;
+ // display: inline-block;
vertical-align: middle; // match .btn alignment given font-size hack above
> .btn {
position: relative;
- float: left;
- margin-bottom: 0;
+ flex: 0 1 auto;
- // Bring the "active" button to the front
+ // Bring the hover, focused, and "active" buttons to the fron to overlay
+ // the borders properly
+ @include hover {
+ z-index: 2;
+ }
&:focus,
&:active,
&.active {
z-index: 2;
}
- @include hover {
- z-index: 2;
- }
}
-}
-// Prevent double borders when buttons are next to each other
-.btn-group {
+ // Prevent double borders when buttons are next to each other
.btn + .btn,
.btn + .btn-group,
.btn-group + .btn,
@@ -36,19 +35,8 @@
// Optional: Group multiple button groups together for a toolbar
.btn-toolbar {
- margin-left: -$btn-toolbar-margin; // Offset the first child's margin
- @include clearfix();
-
- .btn-group,
- .input-group {
- float: left;
- }
-
- > .btn,
- > .btn-group,
- > .input-group {
- margin-left: $btn-toolbar-margin;
- }
+ display: flex;
+ justify-content: flex-start;
}
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
@@ -158,22 +146,14 @@
//
.btn-group-vertical {
- > .btn,
- > .btn-group,
- > .btn-group > .btn {
- display: block;
- float: none;
- width: 100%;
- max-width: 100%;
- }
-
- // Clear floats so dropdown menus can be properly placed
- > .btn-group {
- @include clearfix();
-
- > .btn {
- float: none;
- }
+ display: flex;
+ flex-direction: column;
+ justify-content: center;
+ align-items: flex-start;
+
+ .btn,
+ .btn-group {
+ flex: 0 1 auto;
}
> .btn + .btn,