zarm
Version:
基于 React 的移动端UI库
102 lines (94 loc) • 2.75 kB
CSS
@keyframes virtual-cursor {
0% {
opacity: 1;
}
50% {
opacity: 0;
}
to {
opacity: 1;
}
}
.za-custom-input {
--color: var(--za-custom-input-color, var(--za-color-text));
--font-size: var(--za-custom-input-font-size, var(--za-font-size-md));
--height: var(--za-custom-input-height, 28px);
--line-height: var(--za-custom-input-line-height, 28px);
--label-font-size: var(--za-custom-input-label-font-size, var(--za-font-size-sm));
--placeholder-color: var(--za-custom-input-placeholder-color, var(--za-color-text-placeholder));
--disabled-color: var(--za-custom-input-disabled-color, var(--za-color-text-disabled));
--clear-icon-size: var(--za-custom-input-clear-icon-size, 16px);
--clear-icon-color: var(--za-custom-input-clear-icon-color, #ccc);
--cursor-height: var(--za-custom-input-cursor-height, 20px);
--cursor-width: var(--za-custom-input-cursor-width, 2px);
--cursor-color: var(--za-custom-input-cursor-color, #597cf6);
position: relative;
width: 100%;
color: var(--color);
font-size: var(--font-size);
}
.za-custom-input__label {
font-size: var(--label-font-size);
line-height: var(--line-height);
}
.za-custom-input__content {
position: relative;
height: var(--height);
line-height: var(--line-height);
}
.za-custom-input__placeholder {
position: absolute;
left: 0;
top: 0;
width: 100%;
height: 100%;
color: var(--placeholder-color);
}
.za-custom-input__virtual-input {
display: flex;
position: absolute;
left: 0;
right: 0;
top: 0;
height: 100%;
overflow-x: auto;
overflow-y: hidden;
white-space: nowrap;
}
.za-custom-input--focus .za-custom-input__virtual-input {
display: flex;
align-items: center;
transform: translate3d(0, 0, 0);
}
.za-custom-input--focus .za-custom-input__virtual-input:after {
content: "";
display: inline-block;
height: var(--cursor-height);
border-right: var(--cursor-width) solid var(--cursor-color);
transition: opacity 0.1s ease-out;
animation: virtual-cursor 1s infinite step-start;
}
.za-custom-input--clearable .za-custom-input__clear {
position: absolute;
visibility: hidden;
color: var(--clear-icon-color);
width: var(--clear-icon-size);
text-align: center;
top: 50%;
transform: translateY(-50%);
right: 0;
font-size: 16px;
}
.za-custom-input--clearable.za-custom-input--focus {
padding-right: var(--clear-icon-size);
}
.za-custom-input--clearable.za-custom-input--focus .za-custom-input__clear {
visibility: visible;
}
.za-custom-input--readonly .za-custom-input__content {
height: auto;
}
.za-custom-input--disabled .za-custom-input__content, .za-custom-input--disabled .za-custom-input__placeholder {
cursor: not-allowed;
color: var(--disabled-color);
}