unique-interface
Version:
无UI组件库
324 lines (310 loc) • 6.93 kB
text/less
/*
* Styles for form components
*
* Include:
* ui-form
* ui-form-item
* ui-radio
* ui-radio-group
* ui-checkbox
* ui-checkbox-group
* ui-select
* ui-option
* ui-upload
*
* Nice to meet you
*
*/
/* form */
.ui-form-footer {
margin-top: @form-gap-vertical;
display: flex;
justify-content: center;
.ui-button {
min-width: @form-footer-button-width;
}
.ui-button + .ui-button {
margin-left: @form-footer-button-gap;
}
}
/* form-item */
.ui-form-item {
display: flex;
margin-bottom: @form-item-outer-vertical;
position: relative;
}
.ui-form-label {
flex: 0 0 auto;
color: @form-item-label-color;
margin-right: @form-item-label-outer-horizontal;
}
.ui-form-label-text {
line-height: @form-item-label-line-height;
padding: @form-item-label-inner-vertical 0;
display: block;
.ui-form-item.is-required &::before {
content: @form-item-label-required-content;
color: @form-item-label-required-color;
margin-right: .5em;
}
}
.ui-form-item-content {
.clearfix();
flex: 1 1 0%;
position: relative;
line-height: @form-item-height;
}
.ui-form-item-error {
position: absolute;
top: 100%;
line-height: @form-item-error-height;
margin: 0 @form-item-error-inner-horizontal;
font-size: @form-item-error-font-size;
color: @form-item-error-color;
}
/* radio */
.ui-radio-group {
font-size: 0;
display: block;
// vertical-align: middle;
}
.ui-radio {
font-size: @font-size-base;
line-height: 0;
cursor: pointer;
display: inline-block;
vertical-align: middle;
white-space: nowrap;
.ui-radio-group & {
margin-right: @unit-outer-horizontal;
&:last-child {
margin-right: 0;
}
}
}
.ui-radio-inner {
display: inline-block;
line-height: 0;
position: relative;
margin-right: .5em;
}
.ui-radio-icon {
border: 1px solid @color-border-regular;
border-radius: 100%;
width: 1em;
height: 1em;
background-color: @color-white;
position: relative;
display: inline-block;
box-sizing: border-box;
&::after {
width: 4px;
height: 4px;
border-radius: 100%;
background-color: @color-white;
content: "";
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%,-50%);
}
.ui-radio.is-checked & {
border-color: @color-primary;
background-color: @color-primary;
}
}
.ui-radio-input {
position: absolute;
opacity: 0;
z-index: -1;
}
.ui-radio {
.ui-radio-inner, .ui-radio-text {
vertical-align: middle;
}
}
.ui-radio-button {
border-color: @radio-button-border-color;
background-color: @radio-button-bg-color;
color: @radio-button-color-text;
// font-size: @font-size-base;
position: relative;
&:hover {
background-color: @radio-button-bg-color-hover;
}
&.is-checked {
background-color: @radio-button-bg-color-checked;
border-color: @radio-button-border-color-checked;
color: @radio-button-color-text-checked;
}
.ui-radio-inner {
position: absolute;
opacity: 0;
z-index: -1;
}
}
/* checkbox */
.ui-checkbox-group {
font-size: 0;
display: block;
// vertical-align: middle;
}
.ui-checkbox {
font-size: @font-size-base;
line-height: 0;
cursor: pointer;
display: inline-block;
vertical-align: middle;
white-space: nowrap;
.ui-checkbox-group & {
margin-right: @unit-outer-horizontal;
&:last-child {
margin-right: 0;
}
}
}
.ui-checkbox-inner {
display: inline-block;
line-height: 0;
position: relative;
vertical-align: middle;
margin-right: .5em;
}
.ui-checkbox-icon {
border: 1px solid @color-border-regular;
border-radius: @checkbox-icon-border-radius;
width: 1em;
height: 1em;
background-color: @color-white;
position: relative;
display: inline-block;
box-sizing: border-box;
&::after {
box-sizing: content-box;
content: "";
border: 1px solid #fff;
border-left: 0;
border-top: 0;
height: 7px;
left: 4px;
position: absolute;
top: 1px;
transform: rotate(45deg);
width: 3px;
transform-origin: center;
}
.ui-checkbox.is-checked & {
border-color: @color-primary;
background-color: @color-primary;
}
}
.ui-checkbox-input {
position: absolute;
opacity: 0;
z-index: -1;
}
.ui-checkbox {
.ui-checkbox-inner, .ui-checkbox-text {
vertical-align: middle;
}
}
.ui-checkbox-button {
border-color: @color-border-regular;
background-color: @color-white;
color: @color-text-regular;
// font-size: @font-size-base;
position: relative;
&:hover {
background-color: @color-bg-active-regular;
}
&.is-checked {
background-color: @color-primary;
border-color: @color-primary;
color: @color-text-alt;
}
.ui-checkbox-inner {
position: absolute;
opacity: 0;
z-index: -1;
}
}
/* select */
.ui-select {
position: relative;
width: 100%;
cursor: text;
font-size: @unit-font-size;
.ui-input {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
pointer-events: none;
}
&:focus-within .ui-input-border {
border-color: @select-border-color-focus;
}
}
.ui-select-tags {
box-sizing: border-box;
padding: @unit-inner-vertical @unit-inner-horizontal;
min-height: @unit-height;
line-height: 1;
.ui-tag-group {
margin: -@select-tag-gap;
.ui-tag {
margin: @select-tag-gap;
}
}
}
.ui-select-input {
box-sizing: border-box;
border: none;
outline: none;
margin: @select-tag-gap 0;
padding: 0 @select-tag-gap;
font-size: @font-size-base;
line-height: @font-line-height-base;
appearance: none;
min-width: 4em;
max-width: 100%;
background-color: transparent;
}
.ui-select-dropdown-menu {
margin-top: -@unit-border-width;
}
.ui-select-option {
white-space: normal;
&.is-selected {
color: @color-text-secondary;
background-color: initial;
}
}
.ui-select-dropdown-menu-empty {
line-height: @unit-height;
text-align: center;
color: @color-text-secondary;
cursor: initial;
}
/* upload */
.ui-upload {
font-size: 0;
}
.ui-upload-area {
height: @unit-height;
}
.ui-upload-label {
display: block;
font-size: @unit-font-size;
cursor: pointer;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.ui-upload-input {
display: none;
}
.ui-upload-list {
font-size: @font-size-base;
}