mirror of
https://github.com/twbs/bootstrap.git
synced 2024-12-01 13:24:25 +01:00
Rewrite custom form check backgrounds (#24697)
* Rewrite custom form check backgrounds Previously, this was all just a background-color and background-image. When we restored the gradients though, we had two background-images competing on the same element, causing rendering glitches. This refactors that code, creating a mixin to simplify things, so we can we easily use two background-images (SVG icon and gradient) when -gradients is set to true. Fixes #24598 * restore default vars * Revamp custom check and radio backgrounds Instead of applying multiple background-image's to the same element, we're adding a new ::before pseudo-element to layer the background-images. Gradients go on the .custom-control-indicator while their icons go on the ::before element. This allows us to shave some bytes from when we compile and we previously needed to redeclare the background-image for the icon if you changed the gradient. * remove now unused mixin * mention change in migration docs
This commit is contained in:
parent
fff0116f70
commit
4829350a46
@ -11,6 +11,7 @@ toc: true
|
|||||||
While Beta 2 saw the bulk of our breaking changes during the beta phase, but we still have a few that needed to be addressed in the Beta 3 release. These changes apply if you're updating to Beta 3 from Beta 2 or any older version of Bootstrap.
|
While Beta 2 saw the bulk of our breaking changes during the beta phase, but we still have a few that needed to be addressed in the Beta 3 release. These changes apply if you're updating to Beta 3 from Beta 2 or any older version of Bootstrap.
|
||||||
|
|
||||||
- Removed the unused `$thumbnail-transition` variable. We weren't transitioning anything, so it was just extra code.
|
- Removed the unused `$thumbnail-transition` variable. We weren't transitioning anything, so it was just extra code.
|
||||||
|
- Changed the CSS for managing multiple `background-image`s on custom form checkboxes and radios. Previously, the `.custom-control-indicator` element had the background color, gradient, and SVG icon. Customizing the background gradient meant replacing all of those every time you needed to change just one. Now, we have `.custom-control-indicator` for the fill and gradient and `.custom-control-indicator::before` handles the icon.
|
||||||
|
|
||||||
## Beta 2 changes
|
## Beta 2 changes
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
&:active ~ .custom-control-indicator {
|
&:active ~ .custom-control-indicator {
|
||||||
color: $custom-control-indicator-active-color;
|
color: $custom-control-indicator-active-color;
|
||||||
@include gradient-bg($custom-control-indicator-active-bg);
|
background-color: $custom-control-indicator-active-bg;
|
||||||
@include box-shadow($custom-control-indicator-active-box-shadow);
|
@include box-shadow($custom-control-indicator-active-box-shadow);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,10 +62,17 @@
|
|||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
user-select: none;
|
user-select: none;
|
||||||
background-color: $custom-control-indicator-bg;
|
background-color: $custom-control-indicator-bg;
|
||||||
|
@include box-shadow($custom-control-indicator-box-shadow);
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
display: block;
|
||||||
|
width: $custom-control-indicator-size;
|
||||||
|
height: $custom-control-indicator-size;
|
||||||
|
content: "";
|
||||||
background-repeat: no-repeat;
|
background-repeat: no-repeat;
|
||||||
background-position: center center;
|
background-position: center center;
|
||||||
background-size: $custom-control-indicator-bg-size;
|
background-size: $custom-control-indicator-bg-size;
|
||||||
@include box-shadow($custom-control-indicator-box-shadow);
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Checkboxes
|
// Checkboxes
|
||||||
@ -78,13 +85,20 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.custom-control-input:checked ~ .custom-control-indicator {
|
.custom-control-input:checked ~ .custom-control-indicator {
|
||||||
|
@include gradient-bg($custom-control-indicator-checked-bg);
|
||||||
|
|
||||||
|
&::before {
|
||||||
background-image: $custom-checkbox-indicator-icon-checked;
|
background-image: $custom-checkbox-indicator-icon-checked;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.custom-control-input:indeterminate ~ .custom-control-indicator {
|
.custom-control-input:indeterminate ~ .custom-control-indicator {
|
||||||
background-color: $custom-checkbox-indicator-indeterminate-bg;
|
@include gradient-bg($custom-control-indicator-checked-bg);
|
||||||
background-image: $custom-checkbox-indicator-icon-indeterminate;
|
|
||||||
@include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);
|
@include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);
|
||||||
|
|
||||||
|
&::before {
|
||||||
|
background-image: $custom-checkbox-indicator-icon-indeterminate;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -98,9 +112,13 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.custom-control-input:checked ~ .custom-control-indicator {
|
.custom-control-input:checked ~ .custom-control-indicator {
|
||||||
|
@include gradient-bg($custom-control-indicator-checked-bg);
|
||||||
|
|
||||||
|
&::before {
|
||||||
background-image: $custom-radio-indicator-icon-checked;
|
background-image: $custom-radio-indicator-icon-checked;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// Layout options
|
// Layout options
|
||||||
|
@ -84,11 +84,16 @@
|
|||||||
.was-validated &:#{$state},
|
.was-validated &:#{$state},
|
||||||
&.is-#{$state} {
|
&.is-#{$state} {
|
||||||
~ .custom-control-indicator {
|
~ .custom-control-indicator {
|
||||||
background-color: rgba($color, .4);
|
background-color: lighten($color, 25%);
|
||||||
}
|
}
|
||||||
~ .custom-control-description {
|
~ .custom-control-description {
|
||||||
color: $color;
|
color: $color;
|
||||||
}
|
}
|
||||||
|
&:checked {
|
||||||
|
~ .custom-control-indicator {
|
||||||
|
@include gradient-bg(lighten($color, 10%));
|
||||||
|
}
|
||||||
|
}
|
||||||
&:focus {
|
&:focus {
|
||||||
~ .custom-control-indicator {
|
~ .custom-control-indicator {
|
||||||
box-shadow: 0 0 0 1px $body-bg, 0 0 0 $input-focus-width rgba($color, .25);
|
box-shadow: 0 0 0 1px $body-bg, 0 0 0 $input-focus-width rgba($color, .25);
|
||||||
|
Loading…
Reference in New Issue
Block a user