mirror of
https://github.com/twbs/bootstrap.git
synced 2025-01-18 05:58:25 +01:00
a78c8d9c04
Instead of applying `.btn-` or `.input-` to individual elements in button and input groups, we now have new sizing classes to keep your markup a little leaner. * Add `.input-group-sm` or `.input-group-lg` to your `.input-group` to replicate `.input-sm` and `.input-lg`, respectively. * Add `.btn-group-xs`, `.btn-group-sm`, or `.btn-group-lg` to your `.btn-group` to replicate `.btn-xs`, `.btn-sm`, and `. btn-lg`, respectively. Both sets of new sizing classes simply use the existing individual sizing classes as mixins, so customization of them is automatically inherited when compiling.
208 lines
4.3 KiB
Plaintext
208 lines
4.3 KiB
Plaintext
//
|
|
// Button groups
|
|
// --------------------------------------------------
|
|
|
|
// Button carets
|
|
//
|
|
// Match the button text color to the arrow/caret for indicating dropdown-ness.
|
|
|
|
.caret {
|
|
.btn-default & {
|
|
border-top-color: @btn-default-color;
|
|
}
|
|
.btn-primary &,
|
|
.btn-success &,
|
|
.btn-warning &,
|
|
.btn-danger &,
|
|
.btn-info & {
|
|
border-top-color: #fff;
|
|
}
|
|
}
|
|
.dropup .caret {
|
|
.btn-default & {
|
|
border-bottom-color: @btn-default-color;
|
|
}
|
|
.btn-primary &,
|
|
.btn-success &,
|
|
.btn-warning &,
|
|
.btn-danger &,
|
|
.btn-info & {
|
|
border-bottom-color: #fff;
|
|
}
|
|
}
|
|
|
|
// Make the div behave like a button
|
|
.btn-group,
|
|
.btn-group-vertical {
|
|
position: relative;
|
|
display: inline-block;
|
|
vertical-align: middle; // match .btn alignment given font-size hack above
|
|
> .btn {
|
|
position: relative;
|
|
float: left;
|
|
// Bring the "active" button to the front
|
|
&:hover,
|
|
&:focus,
|
|
&:active,
|
|
&.active {
|
|
z-index: 2;
|
|
}
|
|
&:focus {
|
|
// Remove focus outline when dropdown JS adds it after closing the menu
|
|
outline: none;
|
|
}
|
|
}
|
|
}
|
|
|
|
// Prevent double borders when buttons are next to each other
|
|
.btn-group .btn + .btn {
|
|
margin-left: -1px;
|
|
}
|
|
|
|
// Optional: Group multiple button groups together for a toolbar
|
|
.btn-toolbar {
|
|
.clearfix();
|
|
|
|
.btn-group {
|
|
float: left;
|
|
}
|
|
// Space out series of button groups
|
|
> .btn,
|
|
> .btn-group {
|
|
+ .btn,
|
|
+ .btn-group {
|
|
margin-left: 5px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {
|
|
border-radius: 0;
|
|
}
|
|
|
|
// 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;
|
|
&:not(:last-child):not(.dropdown-toggle) {
|
|
.border-right-radius(0);
|
|
}
|
|
}
|
|
// Need .dropdown-toggle since :last-child doesn't apply given a .dropdown-menu immediately after it
|
|
.btn-group > .btn:last-child:not(:first-child),
|
|
.btn-group > .dropdown-toggle:not(:first-child) {
|
|
.border-left-radius(0);
|
|
}
|
|
|
|
// Custom edits for including btn-groups within btn-groups (useful for including dropdown buttons within a btn-group)
|
|
.btn-group > .btn-group {
|
|
float: left;
|
|
}
|
|
.btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {
|
|
border-radius: 0;
|
|
}
|
|
.btn-group > .btn-group:first-child {
|
|
> .btn:last-child,
|
|
> .dropdown-toggle {
|
|
.border-right-radius(0);
|
|
}
|
|
}
|
|
.btn-group > .btn-group:last-child > .btn:first-child {
|
|
.border-left-radius(0);
|
|
}
|
|
|
|
// On active and open, don't show outline
|
|
.btn-group .dropdown-toggle:active,
|
|
.btn-group.open .dropdown-toggle {
|
|
outline: 0;
|
|
}
|
|
|
|
|
|
// Sizing
|
|
//
|
|
// Remix the default button sizing classes into new ones for easier manipulation.
|
|
|
|
.btn-group-xs > .btn { .btn-xs(); }
|
|
.btn-group-sm > .btn { .btn-sm(); }
|
|
.btn-group-lg > .btn { .btn-lg(); }
|
|
|
|
|
|
// Split button dropdowns
|
|
// ----------------------
|
|
|
|
// Give the line between buttons some depth
|
|
.btn-group > .btn + .dropdown-toggle {
|
|
padding-left: 8px;
|
|
padding-right: 8px;
|
|
}
|
|
.btn-group > .btn-lg + .dropdown-toggle {
|
|
padding-left: 12px;
|
|
padding-right: 12px;
|
|
}
|
|
|
|
// The clickable button for toggling the menu
|
|
// Remove the gradient and set the same inset shadow as the :active state
|
|
.btn-group.open .dropdown-toggle {
|
|
.box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
|
|
}
|
|
|
|
|
|
// Reposition the caret
|
|
.btn .caret {
|
|
margin-left: 0;
|
|
}
|
|
// Carets in other button sizes
|
|
.btn-lg .caret {
|
|
border-width: @caret-width-large;
|
|
}
|
|
// Upside down carets for .dropup
|
|
.dropup .btn-lg .caret {
|
|
border-bottom-width: @caret-width-large;
|
|
}
|
|
|
|
|
|
// Vertical button groups
|
|
// ----------------------
|
|
|
|
.btn-group-vertical > .btn {
|
|
display: block;
|
|
float: none;
|
|
width: 100%;
|
|
max-width: 100%;
|
|
+ .btn {
|
|
margin-top: -1px;
|
|
}
|
|
}
|
|
.btn-group-vertical .btn {
|
|
&:not(:first-child):not(:last-child) {
|
|
border-radius: 0;
|
|
}
|
|
&:first-child:not(:last-child) {
|
|
.border-bottom-radius(0);
|
|
}
|
|
&:last-child:not(:first-child) {
|
|
.border-top-radius(0);
|
|
}
|
|
}
|
|
|
|
|
|
// Justified button groups
|
|
// ----------------------
|
|
|
|
.btn-group-justified {
|
|
display: table;
|
|
width: 100%;
|
|
table-layout: fixed;
|
|
.btn {
|
|
float: none;
|
|
display: table-cell;
|
|
width: 1%;
|
|
}
|
|
}
|
|
|
|
|
|
// Checkbox and radio options
|
|
.btn-group[data-toggle="buttons"] > .btn > input[type="radio"],
|
|
.btn-group[data-toggle="buttons"] > .btn > input[type="checkbox"] {
|
|
display: none;
|
|
}
|