UNPKG

@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.

357 lines (325 loc) 9.76 kB
floating-label, .floating-label_field { position: relative; display: flex; align-items: center; box-sizing: border-box; border: none !important; min-height: 40px; 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%; min-height: 24px; padding: 0px 14px; border: none !important; outline: none !important; 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 !important; } cocreate-select[multiple].floating-label { padding: 2px 2px 8px 2px !important; } 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; } 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; } .floating-label:has(input[type="color"]), .floating-label_field:has(input[type="color"]) { padding: 0px; } /* textarea.floating-label { padding: 8px 14px; } */ select.floating-label[multiple] { height: auto; /* padding: 8px 14px; */ } .floating-label[type="file"] { cursor: pointer; } .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; } .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 !important; 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; }