lu2
Version:
Simple and flexible UI component library based on native HTML and JavaScript
171 lines (154 loc) • 3.79 kB
CSS
@charset "UTF-8";
/**
*
* @Textarea.css
* @author xinxuzhang
* @create 15-06-17
* @edit 20-04-03 version edge
* @editor lennonover
**/
:root {
--ui-textarea-line-height: var(--ui-line-height, 20px);
}
textarea {
font-family: inherit;
}
textarea.ui-textarea,
[is="ui-textarea"],
.ui-textarea > textarea,
textarea ~ .ui-textarea-count {
line-height: var(--ui-textarea-line-height);
padding: 9px 8px;
border: 1px solid var(--ui-border, #d0d0d5);
border-radius: var(--ui-radius, 4px);
background-color: var(--ui-white, #ffffff);
outline: none;
color: var(--ui-dark, #4c5161);
font-size: var(--ui-font, 14px);
transition: border-color var(--ui-animate-time, .2s), background-color var(--ui-animate-time, .2s);
word-break: break-all;
vertical-align: top;
box-sizing: border-box;
max-width: 100%;
resize: none;
overflow: auto;
}
textarea[resize] {
resize: both;
}
textarea[resize="vertical"] {
resize: vertical;
}
textarea[resize="horizontal"] {
resize: horizontal;
}
div.ui-textarea > textarea,
textarea[width="100%"] {
width: 100%;
}
/* hover */
.ui-textarea:hover,
.ui-textarea > textarea:hover,
[is="ui-textarea"]:hover,
:hover > .ui-textarea-count {
border-color: var(--ui-dark-border, #ababaf);
}
/* focus */
.ui-textarea:focus,
.ui-textarea > textarea:focus,
[is="ui-textarea"]:focus,
:focus ~ .ui-textarea-count {
border-color: var(--ui-blue, #2a80eb);
}
/* textarea with count */
.ui-textarea-x {
position: relative;
z-index: 0;
overflow: hidden;
}
span.ui-textarea-x {
display: inline-block;
}
.ui-textarea-x > textarea:only-child {
padding-bottom: 32px;
}
.ui-textarea-x > textarea:not(:only-child) {
padding-bottom: 0;
margin: 1px 1px 33px;
width: calc(100% - 2px);
border: 0;
background: none;
}
.ui-textarea-x > textarea {
display: block;
width: 100%;
/* for Firefox */
margin: 0;
}
textarea ~ .ui-textarea-count {
position: absolute;
left: 0; right: 0; bottom: 0; top: 0;
padding-bottom: 5px;
color: var(--ui-gray, #a2a9b6);
font-size: calc(var(--ui-font, 14px) - 2px);
display: flex;
align-items: flex-end;
justify-content: flex-end;
z-index: -1;
}
.ui-textarea-count slash {
margin: 0 1px;
}
.ui-textarea:read-only,
[is="ui-textarea"]:read-only,
.ui-textarea > textarea:read-only,
:read-only ~ .ui-textarea-count {
background-color: var(--ui-white, #ffffff);
}
.ui-textarea:disabled:hover,
[is="ui-textarea"]:disabled:hover,
.ui-textarea > textarea:disabled:hover,
.ui-textarea-x:hover :disabled ~ .ui-textarea-count {
border-color: var(--ui-border, #d0d0d5);
}
.ui-textarea:read-only:hover,
.ui-textarea:read-only:focus,
[is="ui-textarea"]:read-only:hover,
[is="ui-textarea"]:read-only:focus,
.ui-textarea > textarea:read-only:hover,
.ui-textarea > textarea:read-only:focus,
:read-only ~ .ui-textarea-count:hover,
:read-only ~ .ui-textarea-count:focus {
border-color: var(--ui-border, #d0d0d5);
}
/* disabled */
.ui-textarea:disabled,
[is="ui-textarea"]:disabled,
.ui-textarea > textarea:disabled,
:disabled ~ .ui-textarea-count {
background-color: var(--ui-light, #f7f9fa);
color: var(--ui-gray, #a2a9b6);
}
textarea:read-only,
textarea:disabled {
resize: none;
}
/* error */
.ui-textarea[is-error],
[is="ui-textarea"][is-error],
.ui-textarea > [is-error],
[is-error] ~ .ui-textarea-count {
border-color: var(--ui-red, #eb4646) ;
}
.ui-textarea-count > [is-error],
.ui-textarea-count[is-error] {
color: var(--ui-red, #eb4646);
}
@media (prefers-reduced-motion: reduce) {
textarea.ui-textarea,
[is="ui-textarea"],
.ui-textarea > textarea,
textarea ~ .ui-textarea-count {
transition: none;
}
}