unique-interface
Version:
无UI组件库
385 lines (379 loc) • 8.23 kB
text/less
/*
* Styles for basic components
*
* Include:
* ui-row
* ui-col
* ui-link
* ui-tag
* ui-input
* ui-button
* ui-backdrop (class only)
* ui-caret (class only)
*
* Nice to meet you
*
*/
/* row */
.ui-row {
display: flex;
align-items: stretch;
// justify
.is-justify(@type){
&.is-justify-@{type} {
justify-content: @type;
}
}
.is-justify(end);
.is-justify(center);
.is-justify(space-around);
.is-justify(space-between);
// align
.is-align(@type){
&.is-align-@{type} {
align-items: @type;
}
}
.is-align(flex-start);
.is-align(center);
.is-align(flex-end);
// separate
&.is-separate {
margin-left: -@block-outer-vertical / 2;
margin-right: -@block-outer-vertical / 2;
}
}
/* col */
.ui-col {
box-sizing: border-box;
width: 0%;
.ui-row.is-separate > & {
margin-left: @block-outer-vertical / 2;
margin-right: @block-outer-vertical / 2;
}
}
.ui-col-0 {
flex: 0 0 auto;
width: auto;
}
.ui-cols(6);
.ui-cols(@n) when (@n > 0) {
.ui-cols(@n - 1);
.ui-col-@{n} {
flex: @n 0 auto;
}
}
/* text */
.ui-text {
overflow: hidden;
}
.ui-text-frame {
position: relative;
overflow: hidden;
}
.ui-text-right-bar {
float: right;
margin-bottom: -1px;
}
.ui-text-placeholder {
float: right;
clear: right;
height: 1px;
opacity: 0;
}
.ui-text-ghost {
position: absolute;
z-index: 1;
top: 0;
bottom: 0;
left: 100%;
width: 100%;
user-select: none;
}
.ui-text-ghost::before {
content: "\200B";
float: right;
width: 50%;
height: 100%;
}
.ui-text-left-bar {
height: 100%;
width: 50%;
float: right;
}
.ui-text-ellipsis {
float: right;
width: 50%;
transform: translate(-100%, 0);
}
.ui-text-ellipsis-content {
float: right;
transform: translate(0, -100%);
}
.ui-text-content-movement {
visibility: hidden;
pointer-events: none;
}
.ui-text.is-openable {
.ui-text-ellipsis-content {
cursor: pointer;
color: @text-color-openable-ellipsis;
&:hover {
text-decoration: underline;
}
}
}
.ui-text.is-open {
.ui-text-ghost,
.ui-text-right-bar,
.ui-text-placeholder,
.ui-text-content-movement {
display: none;
}
}
/* link */
.ui-link {
color: @color-primary;
cursor: pointer;
&:hover {
text-decoration: underline;
}
}
/* tag */
.ui-tag {
display: inline-block;
line-height: 1;
padding: @tag-inner-vertical @tag-inner-horizontal;
border-radius: @tag-border-radius;
}
.ui-tag-closer {
margin-left: .5em;
&::before {
cursor: pointer;
content: "╳";
}
}
.ui-tag-primary {
color: @tag-color-primary;
background-color: @tag-color-primary-bg;
}
.ui-tag-info {
color: @tag-color-info;
background-color: @tag-color-info-bg;
}
.ui-tag-group {
margin: (-@tag-outer-horizontal / 2) (-@tag-outer-vertical / 2);
.ui-tag {
margin: (@tag-outer-horizontal / 2) (@tag-outer-vertical / 2);
}
}
/* dropdown */
.ui-dropdown {
position: relative;
display: inline-block;
}
.ui-dropdown-hover {
position: relative;
& .ui-dropdown-menu {
display: none;
}
&:hover .ui-dropdown-menu {
display: unset;
}
}
.ui-dropdown-menu {
.shape-dropdown-menu();
}
.ui-dropdown-menu-panel {
.shape-dropdown-menu-panel();
}
.ui-dropdown-item {
display: block;
padding: @shape-dropdown-item-inner-vertical @shape-dropdown-item-inner-horizontal;
font-size: @shape-dropdown-item-font-size;
line-height: @shape-dropdown-item-line-height;
color: @color-text-regular;
cursor: pointer;
white-space: nowrap;
&:hover {
background-color: @color-bg-active-regular;
}
}
/* input */
.ui-input {
position: relative;
vertical-align: middle;
display: block;
width: 100%;
}
.ui-input-border {
border-radius: @border-radius-base;
border: @unit-border;
height: 100%;
box-sizing: border-box;
display: flex;
overflow: hidden;
}
.ui-input-border-negative {
margin: -@unit-border-width;
flex: 1 1 auto;
// height: calc(~"100% + "@unit-border-width * 2);
}
.ui-input-input {
appearance: none;
background-color: transparent;
border: none;
box-sizing: border-box;
display: block;
font-size: @unit-font-size;
line-height: @unit-line-height;
min-height: 100%;
outline: none;
padding: @unit-inner-vertical @unit-inner-horizontal;
resize: none;
width: 100%;
.ui-input.is-have-prefix & {
padding-left: @unit-inner-horizontal * 2 + @unit-font-size;
}
.ui-input.is-have-suffix & {
padding-right: @unit-inner-horizontal * 2 + @unit-font-size;
}
}
.ui-input-prefix, .ui-input-suffix {
padding: 0 @unit-inner-horizontal;
height: @unit-height;
line-height: @unit-height;
position: absolute;
top: 0;
}
.ui-input-prefix {
left: 0;
}
.ui-input-suffix {
right: 0;
}
.ui-input-dropdown-menu {
margin-top: -@unit-border-width;
}
.ui-input-dropdown-item {
white-space: normal;
}
/* button */
.ui-button {
box-sizing: border-box;
display: inline-block;
height: @unit-height;
padding: @unit-inner-vertical 1em;
line-height: @unit-line-height;
background-color: transparent;
border: @unit-border-width @unit-border-style transparent;
border-radius: @border-radius-base;
font-size: @unit-font-size;
text-align: center;
vertical-align: middle;
cursor: pointer;
outline: none;
&.is-block {
display: block;
width: 100%;
}
&.is-round {
border-radius: @unit-height;
}
&.is-disabled, &.is-disabled:hover {
cursor: not-allowed;
border-color: @color-disabled-bg;
background-color: @color-disabled-bg;
color: @color-disabled;
}
}
.ui-button-border-negative {
margin: -@unit-border-width;
}
.ui-button-default {
border-color: @color-border-regular;
background-color: @color-white;
color: @color-text-regular;
&:hover {
background-color: @color-bg-active-regular;
}
}
.ui-button-primary {
border-color: @color-primary;
background-color: @color-primary;
color: @button-color-text-primary;
&:hover {
border-color: @color-primary-dark-1;
background-color: @color-primary-dark-1;
}
}
// 不太对
// .ui-button-info {
// border-color: @color-info;
// background-color: @color-info;
// color: @color-text-alt;
// &:hover {
// border-color: @color-info-dark-1;
// background-color: @color-info-dark-1;
// }
// }
.ui-button-size-sm {
font-size: @unit-font-size-sm;
height: @unit-height-sm;
line-height: @unit-line-height-sm;
padding: @unit-inner-vertical-sm 1em;
}
.ui-button-size-xs {
font-size: @unit-font-size-xs;
height: @unit-height-xs;
line-height: @unit-line-height-xs;
padding: @unit-inner-vertical-xs 1em;
}
/* button group */
.ui-button-group .ui-button {
border-left-width: 0;
border-radius: 0;
&:first-child {
border-left-width: @unit-border-width;
border-radius: @button-group-border-radius 0 0 @button-group-border-radius;
}
&:last-child {
border-radius: 0 @button-group-border-radius @button-group-border-radius 0;
}
}
/* backdrop */
.ui-backdrop {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: @color-backdrop;
overflow: auto;
z-index: 1000;
}
/* caret */
.ui-caret {
display: inline-block;
width: 0;
height: 0;
vertical-align: middle;
border: 4px solid transparent;
margin: -2px 3px 0;
&.is-top {
border-top-color: currentcolor;
border-bottom-width: 0;
}
&.is-bottom {
border-bottom-color: currentcolor;
border-top-width: 0;
}
&.is-left {
border-left-color: currentcolor;
border-right-width: 0;
}
&.is-right {
border-right-color: currentcolor;
border-left-width: 0;
}
}