0
0
mirror of https://github.com/twbs/bootstrap.git synced 2025-02-23 20:54:22 +01:00
Bootstrap/scss/forms/_floating-labels.scss

117 lines
2.8 KiB
SCSS
Raw Normal View History

// We use mixins instead of placeholders as placeholders would combine the selectors when @extend-ed
.form-floating {
position: relative;
> .form-control,
> .form-control-plaintext,
> .form-select {
height: $form-floating-height;
min-height: $form-floating-height;
line-height: $form-floating-line-height;
}
> label {
position: absolute;
top: 0;
left: 0;
z-index: 2;
height: 100%; // allow textareas
padding: $form-floating-padding-y $form-floating-padding-x;
overflow: hidden;
2022-08-01 12:01:32 +02:00
text-align: start;
text-overflow: ellipsis;
white-space: nowrap;
pointer-events: none;
border: $input-border-width solid transparent; // Required for aligning label's text with the input as it affects inner box model
transform-origin: 0 0;
@include transition($form-floating-transition);
}
> .form-control,
> .form-control-plaintext {
padding: $form-floating-padding-y $form-floating-padding-x;
&::placeholder {
color: transparent;
}
2023-06-27 16:16:08 +02:00
&:focus::placeholder {
color: $input-placeholder-color;
}
&:focus,
&:not(:placeholder-shown) {
@include form-floating-active-input-styles();
}
// Duplicated because `:-webkit-autofill` invalidates other selectors when grouped
&:-webkit-autofill {
@include form-floating-active-input-styles();
}
}
> .form-select {
@include form-floating-active-input-styles();
}
> .form-control:focus,
> .form-control:not(:placeholder-shown),
> .form-control-plaintext,
> .form-select {
~ label {
@include form-floating-active-label-styles();
&::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 {
@include form-floating-active-label-styles();
}
}
> .form-control-plaintext {
~ label {
border-width: $input-border-width 0; // Required to properly position label text - as explained above
}
}
2022-10-31 19:29:04 +01:00
> :disabled ~ label {
2022-10-31 19:29:04 +01:00
color: $form-floating-label-disabled-color;
&::after {
background-color: $input-disabled-bg;
}
2022-10-31 19:29:04 +01:00
}
}
// Todo in v6: Consider combining this with the .form-control-plaintext rules to reduce some CSS?
.form-floating-always {
2023-06-27 16:16:08 +02:00
&.form-floating,
.form-floating {
.form-control {
@include form-floating-active-input-styles();
2023-06-27 16:16:08 +02:00
&::placeholder,
&:focus::placeholder {
color: $input-placeholder-color;
}
}
2023-06-27 16:16:08 +02:00
label {
@include form-floating-active-label-styles();
}
}
}