mirror of
https://github.com/twbs/bootstrap.git
synced 2024-12-01 13:24:25 +01:00
Add switch custom form control (#23004)
This commit is contained in:
parent
dbadf24bb3
commit
180a06eeb7
@ -161,6 +161,47 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// switches
|
||||||
|
//
|
||||||
|
// Tweak a few things for switches
|
||||||
|
|
||||||
|
.custom-switch {
|
||||||
|
padding-left: $custom-switch-width + ($custom-control-gutter - $custom-control-indicator-size);
|
||||||
|
|
||||||
|
.custom-control-label {
|
||||||
|
&::before {
|
||||||
|
left: -($custom-switch-width + ($custom-control-gutter - $custom-control-indicator-size));
|
||||||
|
width: $custom-switch-width;
|
||||||
|
pointer-events: all;
|
||||||
|
border-radius: $custom-switch-indicator-border-radius;
|
||||||
|
}
|
||||||
|
|
||||||
|
&::after {
|
||||||
|
top: calc(#{(($font-size-base * $line-height-base - $custom-control-indicator-size) / 2)} + #{$custom-control-indicator-border-width * 2});
|
||||||
|
left: calc(#{-($custom-switch-width + ($custom-control-gutter - $custom-control-indicator-size))} + #{$custom-control-indicator-border-width * 2});
|
||||||
|
width: $custom-switch-indicator-size;
|
||||||
|
height: $custom-switch-indicator-size;
|
||||||
|
background-color: $custom-control-indicator-border-color;
|
||||||
|
border-radius: $custom-switch-indicator-border-radius;
|
||||||
|
@include transition(transform .15s ease-in-out, $custom-forms-transition);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-control-input:checked ~ .custom-control-label {
|
||||||
|
&::after {
|
||||||
|
background-color: $custom-control-indicator-bg;
|
||||||
|
transform: translateX($custom-switch-width - $custom-control-indicator-size);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.custom-control-input:disabled {
|
||||||
|
&:checked ~ .custom-control-label::before {
|
||||||
|
background-color: $custom-control-indicator-checked-disabled-bg;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Select
|
// Select
|
||||||
//
|
//
|
||||||
// Replaces the browser default select with a custom one, mostly pulled from
|
// Replaces the browser default select with a custom one, mostly pulled from
|
||||||
|
@ -555,6 +555,10 @@ $custom-checkbox-indicator-indeterminate-border-color: $custom-checkbox-indicato
|
|||||||
$custom-radio-indicator-border-radius: 50% !default;
|
$custom-radio-indicator-border-radius: 50% !default;
|
||||||
$custom-radio-indicator-icon-checked: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3e%3c/svg%3e"), "#", "%23") !default;
|
$custom-radio-indicator-icon-checked: str-replace(url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3e%3c/svg%3e"), "#", "%23") !default;
|
||||||
|
|
||||||
|
$custom-switch-width: $custom-control-indicator-size * 1.75 !default;
|
||||||
|
$custom-switch-indicator-border-radius: $custom-control-indicator-size / 2 !default;
|
||||||
|
$custom-switch-indicator-size: calc(#{$custom-control-indicator-size} - #{$custom-control-indicator-border-width * 4}) !default;
|
||||||
|
|
||||||
$custom-select-padding-y: $input-btn-padding-y !default;
|
$custom-select-padding-y: $input-btn-padding-y !default;
|
||||||
$custom-select-padding-x: $input-btn-padding-x !default;
|
$custom-select-padding-x: $input-btn-padding-x !default;
|
||||||
$custom-select-height: $input-height !default;
|
$custom-select-height: $input-height !default;
|
||||||
|
@ -1185,6 +1185,22 @@ Custom checkboxes and radios can also be disabled. Add the `disabled` boolean at
|
|||||||
{% endcapture %}
|
{% endcapture %}
|
||||||
{% include example.html content=example %}
|
{% include example.html content=example %}
|
||||||
|
|
||||||
|
### Switches
|
||||||
|
|
||||||
|
A switch has the markup of a custom checkbox but uses the `.custom-switch` class to render a toggle switch. Switches also support the `disabled` attribute.
|
||||||
|
|
||||||
|
{% capture example %}
|
||||||
|
<div class="custom-control custom-switch">
|
||||||
|
<input type="checkbox" class="custom-control-input" id="customSwitch1">
|
||||||
|
<label class="custom-control-label" for="customSwitch1">Toggle this switch element</label>
|
||||||
|
</div>
|
||||||
|
<div class="custom-control custom-switch">
|
||||||
|
<input type="checkbox" class="custom-control-input" disabled id="customSwitch2">
|
||||||
|
<label class="custom-control-label" for="customSwitch2">Disabled switch element</label>
|
||||||
|
</div>
|
||||||
|
{% endcapture %}
|
||||||
|
{% include example.html content=example %}
|
||||||
|
|
||||||
### Select menu
|
### Select menu
|
||||||
|
|
||||||
Custom `<select>` menus need only a custom class, `.custom-select` to trigger the custom styles. Custom styles are limited to the `<select>`'s initial appearance and cannot modify the `<option>`s due to browser limitations.
|
Custom `<select>` menus need only a custom class, `.custom-select` to trigger the custom styles. Custom styles are limited to the `<select>`'s initial appearance and cannot modify the `<option>`s due to browser limitations.
|
||||||
|
Loading…
Reference in New Issue
Block a user