// // Button groups // -------------------------------------------------- // Make the div behave like a button .btn-group { position: relative; display: inline-block; font-size: 0; // remove as part 1 of font-size inline-block hack vertical-align: middle; // match .btn alignment given font-size hack above white-space: nowrap; // prevent buttons from wrapping when in tight spaces (e.g., the table on the tests page) } // Space out series of button groups .btn-group + .btn-group { margin-left: 5px; } // Optional: Group multiple button groups together for a toolbar .btn-toolbar { font-size: 0; // Hack to remove whitespace that results from using inline-block margin-top: @line-height-base / 2; margin-bottom: @line-height-base / 2; > .btn + .btn, > .btn-group + .btn, > .btn + .btn-group { margin-left: 5px; } } // Float them, remove border radius, then re-add to first and last elements .btn-group > .btn { position: relative; border-radius: 0; } .btn-group > .btn + .btn { margin-left: -1px; } .btn-group > .btn, .btn-group > .dropdown-menu, .btn-group > .popover { font-size: @font-size-base; // redeclare as part 2 of font-size inline-block hack } // Reset fonts for other sizes .btn-group > .btn-mini { font-size: @font-size-mini; } .btn-group > .btn-small { font-size: @font-size-small; } .btn-group > .btn-large { font-size: @font-size-large; } // Set corners individual because sometimes a single button can be in a .btn-group and we need :first-child and :last-child to both match .btn-group > .btn:first-child { margin-left: 0; border-top-left-radius: @border-radius-base; border-bottom-left-radius: @border-radius-base; } // Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it .btn-group > .btn:last-child, .btn-group > .dropdown-toggle { border-top-right-radius: @border-radius-base; border-bottom-right-radius: @border-radius-base; } // Reset corners for large buttons .btn-group > .btn.large:first-child { margin-left: 0; border-top-left-radius: @border-radius-large; border-bottom-left-radius: @border-radius-large; } .btn-group > .btn.large:last-child, .btn-group > .large.dropdown-toggle { border-top-right-radius: @border-radius-large; border-bottom-right-radius: @border-radius-large; } // On hover/focus/active, bring the proper btn to front .btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active { z-index: 2; } // On active and open, don't show outline .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { outline: 0; } // Split button dropdowns // ---------------------- // Give the line between buttons some depth .btn-group > .btn + .dropdown-toggle { padding-left: 8px; padding-right: 8px; .box-shadow(~"inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)"); } .btn-group > .btn-mini + .dropdown-toggle { padding-left: 5px; padding-right: 5px; } .btn-group > .btn-large + .dropdown-toggle { padding-left: 12px; padding-right: 12px; } .btn-group.open { // The clickable button for toggling the menu // Remove the gradient and set the same inset shadow as the :active state .dropdown-toggle { background-image: none; .box-shadow(~"inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05)"); } // Keep the hover's background when dropdown is open .btn.dropdown-toggle { background-color: @btn-background-highlight; } .btn-primary.dropdown-toggle { background-color: @btn-backround-primary-highlight; } .btn-warning.dropdown-toggle { background-color: @btn-backround-warning-highlight; } .btn-danger.dropdown-toggle { background-color: @btn-backround-danger-highlight; } .btn-success.dropdown-toggle { background-color: @btn-backround-success-highlight; } .btn-info.dropdown-toggle { background-color: @btn-backround-info-highlight; } .btn-inverse.dropdown-toggle { background-color: @btn-backround-inverse-highlight; } } // Reposition the caret .btn .caret { margin-top: 8px; margin-left: 0; } // Carets in other button sizes .btn-mini .caret, .btn-small .caret, .btn-large .caret { margin-top: 6px; } .btn-large .caret { border-left-width: 5px; border-right-width: 5px; border-top-width: 5px; } // Upside down carets for .dropup .dropup .btn-large .caret { border-bottom-width: 5px; } // Account for other colors .btn-primary, .btn-warning, .btn-danger, .btn-info, .btn-success, .btn-inverse { .caret { border-top-color: #fff; border-bottom-color: #fff; } } // Vertical button groups // ---------------------- .btn-group-vertical { display: inline-block; // Make buttons only take up the width they need } .btn-group-vertical > .btn { display: block; float: none; border-radius: 0; max-width: 100%; } .btn-group-vertical > .btn + .btn { margin-left: 0; margin-top: -1px; } .btn-group-vertical .btn:first-child { border-radius: @border-radius-base @border-radius-base 0 0; } .btn-group-vertical .btn:last-child { border-radius: 0 0 @border-radius-base @border-radius-base; } .btn-group-vertical .btn-large:first-child { border-radius: @border-radius-large @border-radius-large 0 0; } .btn-group-vertical .btn-large:last-child { border-radius: 0 0 @border-radius-large @border-radius-large; }