$form-floating-padding-y: 1rem !default;
$form-floating-input-padding-t: 1.625rem !default;
$form-floating-input-padding-b: .625rem !default;
-$form-floating-label-height: 1.875em !default;
+$form-floating-label-height: 1.5em !default;
$form-floating-label-opacity: .65 !default;
$form-floating-label-transform: scale(.85) translateY(-.5rem) translateX(.15rem) !default;
$form-floating-label-disabled-color: $gray-600 !default;
.form-floating {
position: relative;
- &:not(.form-control:disabled)::before {
- position: absolute;
- top: $input-border-width;
- left: $input-border-width;
- width: subtract(100%, add($input-height-inner-quarter, $input-height-inner-half));
- height: $form-floating-label-height;
- content: "";
- background-color: $input-bg;
- @include border-radius($input-border-radius);
- }
-
> .form-control,
> .form-control-plaintext,
> .form-select {
position: absolute;
top: 0;
left: 0;
- width: 100%;
+ z-index: 2;
height: 100%; // allow textareas
padding: $form-floating-padding-y $form-floating-padding-x;
overflow: hidden;
> .form-control-plaintext,
> .form-select {
~ label {
- opacity: $form-floating-label-opacity;
+ color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});
transform: $form-floating-label-transform;
+
+ &::after {
+ position: absolute;
+ inset: $form-floating-padding-y ($form-floating-padding-x * .5);
+ z-index: -1;
+ height: $form-floating-label-height;
+ content: "";
+ background-color: $input-bg;
+ @include border-radius($input-border-radius);
+ }
}
}
// Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
> .form-control:-webkit-autofill {
~ label {
- opacity: $form-floating-label-opacity;
+ color: rgba(var(--#{$prefix}body-color-rgb), #{$form-floating-label-opacity});
transform: $form-floating-label-transform;
}
}
}
}
- > .form-control:disabled ~ label {
+ > :disabled ~ label {
color: $form-floating-label-disabled-color;
+
+ &::after {
+ background-color: $input-disabled-bg;
+ }
}
}