@cocreate/floating-label
Version:
A floating label design for inputs, textarea, select and any custom component. Creates beautiful form labels that float over form fields. Add class floating-label to see the magic. Easily configured using HTML5 attributes and/or JavaScript API.
353 lines (321 loc) • 9.67 kB
CSS
floating-label,
.floating-label_field {
position: relative;
display: block;
box-sizing: border-box;
border: none ;
padding: 8px 0px;
}
/* floating-label:not(.floating-label_field) {
border-width: 1px;
border-style: solid;
border-radius: 4px 4px 4px 4px;
border-color: rgba(0, 0, 0, 0.24)
} */
floating-label *,
.floating-label_field * {
box-sizing: border-box;
}
.floating-label {
width: 100%;
padding: 0px 14px;
border: none ;
outline: none ;
background-color: transparent;
font-size: 16px;
line-height: 1.5;
color: inherit;
/*color: rgba(0, 0, 0, 0.87);*/
/*z-index: 5;*/
}
.floating-label[contenteditable] {
display: block;
}
.floating-label::placeholder {
color: inherit;
}
.floating-label.active::placeholder {
opacity: 0;
}
cocreate-select.floating-label {
min-height: 24px;
padding: 0px 2px ;
}
cocreate-select[multiple].floating-label {
padding: 2px 2px 8px 2px ;
}
input.floating-label[type="date"],
input.floating-label[type="time"],
input.floating-label[type="datetime-local"],
input.floating-label[type="week"],
input.floating-label[type="month"],
select.floating-label {
color: transparent;
height: 24px;
}
input.floating-label.active[type="date"],
input.floating-label.active[type="time"],
input.floating-label.active[type="datetime-local"],
input.floating-label.active[type="week"],
input.floating-label.active[type="month"],
select.floating-label.active {
color: inherit;
}
select.floating-label[multiple] {
height: auto;
}
.floating-label[type="file"] {
min-height: 24px;
cursor: pointer;
}
input[type="color"] {
height: 39px;
padding: 5px 6px 5px 6px ;
}
.floating-label_outline {
display: flex;
position: absolute;
top: 0;
width: 100%;
max-width: 100%;
height: 100%;
text-align: left;
pointer-events: none;
border-color: inherit;
}
.floating-label_leading,
.floating-label_notch,
.floating-label_trailing {
border-color: inherit;
border-width: 1px;
border-style: solid;
transition: border 0.15s cubic-bezier(0.4, 0, 0.2, 1);
}
.floating-label_leading {
border-radius: 4px 0 0 4px;
border-right: none;
width: 12px;
}
.floating-label_notch {
flex: 0 1 auto;
border-right: none;
border-left: none;
}
.floating-label_trailing {
flex-grow: 1;
border-radius: 0 4px 4px 0;
border-left: none;
}
.floating-label_label {
display: inline-block;
position: relative;
top: 11px;
bottom: auto;
margin-bottom: 0px ;
left: 4px;
max-width: 100%;
color: inherit;
transform-origin: left top;
transition: transform 0.15s cubic-bezier(0.4, 0, 0.2, 1),
color 0.15s cubic-bezier(0.4, 0, 0.2, 1);
will-change: transform;
}
input.floating-label ~ .floating-label_outline .floating-label_label,
textarea.floating-label ~ .floating-label_outline .floating-label_label {
opacity: 0;
}
.floating-label:hover ~ .floating-label_outline {
border-color: inherit;
}
floating-label .open ~ .floating-label_outline .floating-label_leading,
floating-label .open ~ .floating-label_outline .floating-label_notch,
floating-label .open ~ .floating-label_outline .floating-label_trailing,
.floating-label_field .open ~ .floating-label_outline .floating-label_leading,
.floating-label_field .open ~ .floating-label_outline .floating-label_notch,
.floating-label_field .open ~ .floating-label_outline .floating-label_trailing,
.floating-label:focus ~ .floating-label_outline .floating-label_leading,
.floating-label:focus ~ .floating-label_outline .floating-label_notch,
.floating-label:focus ~ .floating-label_outline .floating-label_trailing,
input:-webkit-autofill + .floating-label_outline .floating-label_leading,
input:-webkit-autofill + .floating-label_outline .floating-label_notch,
input:-webkit-autofill + .floating-label_outline .floating-label_trailing {
border-color: inherit;
border-width: 2px;
}
floating-label [active] ~ .floating-label_outline .floating-label_notch,
floating-label .active ~ .floating-label_outline .floating-label_notch,
floating-label .open ~ .floating-label_outline .floating-label_notch,
floating-label:not(:empty) ~ .floating-label_outline .floating-label_label,
.floating-label_field [active] ~ .floating-label_outline .floating-label_notch,
.floating-label_field .active ~ .floating-label_outline .floating-label_notch,
.floating-label_field .open ~ .floating-label_outline .floating-label_notch,
.floating-label_field:not(:empty) ~ .floating-label_outline .floating-label_label,
input.floating-label:not(:placeholder-shown) ~ .floating-label_outline .floating-label_notch,
textarea.floating-label:not(:placeholder-shown) ~ .floating-label_outline .floating-label_notch,
/*.floating-label:valid ~ .floating-label_outline .floating-label_notch,*/
.floating-label:focus ~ .floating-label_outline .floating-label_notch,
input:-webkit-autofill + .floating-label_outline .floating-label_notch {
border-top: none;
}
floating-label [active] ~ .floating-label_outline .floating-label_label,
floating-label .active ~ .floating-label_outline .floating-label_label,
floating-label .open ~ .floating-label_outline .floating-label_label,
floating-label:not(:empty) ~ .floating-label_outline .floating-label_label,
.floating-label_field [active] ~ .floating-label_outline .floating-label_label,
.floating-label_field .active ~ .floating-label_outline .floating-label_label,
.floating-label_field .open ~ .floating-label_outline .floating-label_label,
.floating-label_field:not(:empty) ~ .floating-label_outline .floating-label_label,
input.floating-label:not(:placeholder-shown) ~ .floating-label_outline .floating-label_label,
textarea.floating-label:not(:placeholder-shown) ~ .floating-label_outline .floating-label_label,
/*.floating-label:valid ~ .floating-label_outline .floating-label_label,*/
.floating-label:focus ~ .floating-label_outline .floating-label_label,
input:-webkit-autofill + .floating-label_outline .floating-label_label {
color: inherit;
transform: translateY(-17px) scale(0.75);
opacity: 1;
}
:-webkit-autofill {
box-shadow: 0 0 0px 1000px transparent inset;
background-color: transparent;
color: inherit;
transition: background-color 5000s ease-in-out 0s;
-webkit-text-fill-color: inherit;
}
/* Firefox */
:autofill {
background-color: transparent;
color: inherit;
border: 1px solid transparent;
}
@media (prefers-color-scheme: dark) {
:-webkit-autofill {
-webkit-text-fill-color: #fff;
color: #fff;
}
/* Firefox */
:autofill {
-webkit-text-fill-color: #fff;
color: #fff;
}
option {
background-color: #222;
color: #fff;
}
}
floating-label
[validation="true"]
~ .floating-label_outline
.floating-label_leading,
floating-label
[validation="true"]
~ .floating-label_outline
.floating-label_notch,
floating-label
[validation="true"]
~ .floating-label_outline
.floating-label_trailing,
.floating-label_field
[validation="true"]
~ .floating-label_outline
.floating-label_leading,
.floating-label_field
[validation="true"]
~ .floating-label_outline
.floating-label_notch,
.floating-label_field
[validation="true"]
~ .floating-label_outline
.floating-label_trailing,
floating-label
[unique="true"]
~ .floating-label_outline
.floating-label_leading,
floating-label [unique="true"] ~ .floating-label_outline .floating-label_notch,
floating-label
[unique="true"]
~ .floating-label_outline
.floating-label_trailing,
.floating-label_field
[unique="true"]
~ .floating-label_outline
.floating-label_leading,
.floating-label_field
[unique="true"]
~ .floating-label_outline
.floating-label_notch,
.floating-label_field
[unique="true"]
~ .floating-label_outline
.floating-label_trailing {
border-color: green;
}
floating-label
[validation="false"]
~ .floating-label_outline
.floating-label_leading,
floating-label
[validation="false"]
~ .floating-label_outline
.floating-label_notch,
floating-label
[validation="false"]
~ .floating-label_outline
.floating-label_trailing,
.floating-label_field
[validation="false"]
~ .floating-label_outline
.floating-label_leading,
.floating-label_field
[validation="false"]
~ .floating-label_outline
.floating-label_notch,
.floating-label_field
[validation="false"]
~ .floating-label_outline
.floating-label_trailing,
floating-label
[unique="false"]
~ .floating-label_outline
.floating-label_leading,
floating-label [unique="false"] ~ .floating-label_outline .floating-label_notch,
floating-label
[unique="false"]
~ .floating-label_outline
.floating-label_trailing,
.floating-label_field
[unique="false"]
~ .floating-label_outline
.floating-label_leading,
.floating-label_field
[unique="false"]
~ .floating-label_outline
.floating-label_notch,
.floating-label_field
[unique="false"]
~ .floating-label_outline
.floating-label_trailing {
border-color: red;
}
@keyframes shake {
33.33% {
transform: translate3d(8px, -21px, 0) scale(0.75);
}
66.33% {
transform: translate3d(-2px, -21px, 0) scale(0.75);
}
100% {
transform: translate3d(0, -21px, 0) scale(0.75);
}
}
textarea.floating-label::-webkit-scrollbar {
width: 10px;
}
textarea.floating-label::-webkit-scrollbar-track {
background: rgba(0, 0, 0, 0.04);
}
textarea.floating-label::-webkit-scrollbar-thumb {
background: rgba(0, 0, 0, 0.1);
}
textarea.floating-label.scroll::-webkit-scrollbar-thumb {
background: #f13b48;
}