zarm-web
Version:
基于 React 的桌面端UI库
838 lines (801 loc) • 20.4 kB
CSS
:root {
--theme-default:hsl(0, 0%, 90%);
--theme-default-light:hsla(0, 0%, 90%, 0.8);
--theme-default-dark:hsl(0, 0%, 86%);
--theme-primary:hsl(156, 100%, 36.9%);
--theme-primary-light:hsla(156, 100%, 36.9%, 0.8);
--theme-primary-dark:hsl(156, 100%, 32.9%);
--theme-success:hsl(156, 100%, 36.9%);
--theme-success-light:hsla(156, 100%, 36.9%, 0.8);
--theme-success-dark:hsl(156, 100%, 32.9%);
--theme-warning:hsl(31, 83.1%, 55.9%);
--theme-warning-light:hsla(31, 83.1%, 55.9%, 0.8);
--theme-warning-dark:hsl(31, 83.1%, 51.9%);
--theme-danger:hsl(0, 100%, 65.7%);
--theme-danger-light:hsla(0, 100%, 65.7%, 0.8);
--theme-danger-dark:hsl(0, 100%, 61.7%);
--color-text: #343434;
--color-text-inverse: #fff;
--color-text-placeholder: #a9a9a9;
--color-text-disabled: #bcbcbc;
--color-text-caption: #909090;
--color-link: var(--theme-primary);
--box-shadow-light: 0 2px 8px rgba(0, 0, 0, 0.1), 0 0 6px rgba(0, 0, 0, 0.1);
--box-shadow-dark: 0 4px 12px rgba(0, 0, 0, 0.2);
--background-disabled: #fafafa;
--border-color: #dcdcdc;
--border-disabled: #e6e6e6;
--zindex-tooltip: 1500;
--opacity-disabled: 0.5;
--opacity-tooltip: 0.8;
--radius-sm: 2px;
--radius-md: 4px;
--radius-lg: 8px;
--radius-round: 1000px;
--radius-circle: 50%;
--padding-h-xs: 8px;
--padding-h-sm: 12px;
--padding-h-md: 14px;
--padding-h-lg: 16px;
--padding-h-xl: 18px;
--padding-v-xs: 6px;
--padding-v-sm: 8px;
--padding-v-md: 12px;
--padding-v-lg: 14px;
--padding-v-xl: 18px;
--font-size-xs: 10px;
--font-size-sm: 12px;
--font-size-md: 14px;
--font-size-lg: 16px;
--font-size-xl: 18px;
--activity-indicator-size-md: 16px;
--activity-indicator-size-lg: 32px;
--activity-indicator-path-color: #e6e6e6;
--avatar-border-radius: 50%;
--avatar-fontSize: 14px;
--avatar-width-md: 40px;
--avatar-height-md: 40px;
--avatar-width-xl: 72px;
--avatar-height-xl: 72px;
--avatar-width-lg: 48px;
--avatar-height-lg: 48px;
--avatar-width-sm: 32px;
--avatar-height-sm: 32px;
--avatar-width-xs: 24px;
--avatar-height-xs: 24px;
--avatar-default-color: #fff;
--avatar-default-bg-color: #ccc;
--badge-height: 14px;
--badge-font-size: var(--font-size-xs);
--badge-padding-h: 4px;
--badge-dot-diameter: 8px;
--badge-border-radius-rect: var(--radius-sm);
--badge-border-radius-round: var(--radius-round);
--badge-sup-top: -4px;
--badge-text-color: #fff;
--breadcrumb-default-font-size: 14px;
--breadcrumb-default-color: var(--color-text-caption);
--breadcrumb-color: var(--color-text);
--breadcrumb-hover-color: var(--theme-primary);
--breadcrumb-separator-color: rgba(0, 0, 0, 0.45);
--button-ghost-disabled-border: var(--border-color);
--button-ghost-disabled-color: var(--color-text-inverse);
--button-padding-h-xl: var(--padding-h-xl);
--button-padding-h-lg: var(--padding-h-lg);
--button-padding-h-md: var(--padding-h-md);
--button-padding-h-sm: var(--padding-h-sm);
--button-padding-h-xs: var(--padding-h-xs);
--button-height-xl: 40px;
--button-height-lg: 36px;
--button-height-md: 32px;
--button-height-sm: 28px;
--button-height-xs: 24px;
--button-font-size-xl: 16px;
--button-font-size-lg: 16px;
--button-font-size-md: 14px;
--button-font-size-sm: 12px;
--button-font-size-xs: 12px;
--button-icon-size-xl: 20px;
--button-icon-size-lg: 18px;
--button-icon-size-md: 16px;
--button-icon-size-sm: 14px;
--button-icon-size-xs: 14px;
--button-disabled-opacity: var(--opacity-disabled);
--button-disabled-color-ghost: var(--border-disabled);
--button-default-background: var(--color-text-inverse);
--button-default-border: var(--border-color);
--button-default-color: var(--color-text);
--button-default-hover-background: var(--color-text-inverse);
--button-default-hover-border: var(--theme-primary);
--button-default-hover-color: var(--theme-primary);
--button-default-active-background: var(--color-text-inverse);
--button-default-active-border: var(--theme-primary-dark);
--button-default-active-color: var(--theme-primary-dark);
--button-default-ghost-border: var(--color-text-inverse);
--button-default-ghost-color: var(--color-text-inverse);
--button-default-ghost-hover-border: var(--theme-primary-light);
--button-default-ghost-hover-color: var(--theme-primary-light);
--button-default-ghost-active-border: var(--theme-primary-dark);
--button-default-ghost-active-color: var(--theme-primary-dark);
--button-primary-background: var(--theme-primary);
--button-primary-border: var(--theme-primary);
--button-primary-color: var(--color-text-inverse);
--button-primary-hover-background: var(--theme-primary-light);
--button-primary-hover-border: var(--theme-primary-light);
--button-primary-hover-color: var(--color-text-inverse);
--button-primary-active-background: var(--theme-primary-dark);
--button-primary-active-border: var(--theme-primary-dark);
--button-primary-active-color: var(--color-text-inverse);
--button-primary-ghost-border: var(--theme-primary);
--button-primary-ghost-color: var(--theme-primary);
--button-primary-ghost-hover-border: var(--theme-primary-light);
--button-primary-ghost-hover-color: var(--theme-primary-light);
--button-primary-ghost-active-border: var(--theme-primary-dark);
--button-primary-ghost-active-color: var(--theme-primary-dark);
--button-primary-gap-color: hsla(0, 0%, 100%, 0.3);
--button-danger-background: var(--theme-danger);
--button-danger-border: var(--theme-danger);
--button-danger-color: var(--color-text-inverse);
--button-danger-hover-background: var(--theme-danger-light);
--button-danger-hover-border: var(--theme-danger-light);
--button-danger-hover-color: var(--color-text-inverse);
--button-danger-active-background: var(--theme-danger-dark);
--button-danger-active-border: var(--theme-danger-dark);
--button-danger-active-color: var(--color-text-inverse);
--button-danger-ghost-border: var(--theme-danger);
--button-danger-ghost-color: var(--theme-danger);
--button-danger-ghost-hover-border: var(--theme-danger-light);
--button-danger-ghost-hover-color: var(--theme-danger-light);
--button-danger-ghost-active-border: var(--theme-danger-dark);
--button-danger-ghost-active-color: var(--theme-danger-dark);
--checkbox-size: 14px;
--checkbox-radius: var(--radius-sm);
--checkbox-border-color: var(--border-color);
--loading-height-xs: 12px;
--loading-height-md: 24px;
--loading-height-lg: 36px;
--loading-margin-h-xs: var(--padding-h-xs);
--loading-margin-h-md: var(--padding-h-md);
--loading-margin-h-lg: var(--padding-h-lg);
--loading-font-size-xs: var(--font-size-xs);
--loading-font-size-md: var(--font-size-md);
--loading-font-size-lg: var(--font-size-lg);
--loading-default-svg-color: var(--theme-primary);
--loading-default-text-color: var(--color-text-disabled);
--loading-default-mask-color: rgba(255, 255, 255, 0.4);
--loading-default-mask-zIndex: 1000;
--loading-inverse-mask-color: rgba(0, 0, 0, 0.4);
--icon-font-size-sm: 16px;
--icon-font-size-md: 24px;
--icon-font-size-lg: 32px;
--icon-theme-default: var(--color-text);
--radio-size: 14px;
--radio-radius: var(--radius-circle);
--radio-border-color: var(--border-color);
--radio-color: #616161;
--menu-color: #343434;
--menu-default-bg-color: var(--color-text-inverse);
--menu-dark-bg-color: #001529;
--menu-collapsed-width: 80px;
--submenu-dark-bg-color: #000c17;
--menuitem-dark-color: hsla(0, 0%, 100%, 0.65);
--menuitem-dark-active-color: var(--color-text-inverse);
--menuitem-default-color: #343434;
--menuitem-active-color: var(--theme-primary);
--menuitem-active-bg-color: rgba(0, 188, 112, 0.0625);
--menuitem-disabled-color: rgba(0, 0, 0, 0.25);
--menuitem-divider-bg-color: #e5e5e5;
--menuitem-horizontal-padding: 20px;
--menuitem-horizontal-height: 56px;
--steps-title-color: var(--color-text);
--steps-desc-color: var(--color-text-caption);
--steps-title-font-size: var(--font-size-md);
--steps-desc-font-size: var(--font-size-md);
--steps-border-color: var(--border-color);
--steps-status-wait: #bcbcbc;
--steps-status-process: var(--theme-primary);
--steps-status-error: var(--theme-danger);
--steps-icon-size: 28px;
--steps-content-width: 140px;
--switch-width-md: 48px;
--switch-width-sm: 32px;
--switch-height-md: 20px;
--switch-height-sm: 16px;
--switch-background: #bcbcbc;
--tabs-font-size-sm: 14px;
--tabs-font-size-md: 16px;
--tabs-font-size-lg: 18px;
--tabs-header-icon-sm: 12px;
--tabs-header-icon-md: 14px;
--tabs-header-icon-lg: 16px;
--tabs-header-card-height-sm: 34px;
--tabs-header-card-height-md: 40px;
--tabs-header-card-height-lg: 46px;
--tabs-header-line-height-sm: 38px;
--tabs-header-line-height-md: 48px;
--tabs-header-line-height-lg: 58px;
--tabs-header-vertical-height-sm: 30px;
--tabs-header-vertical-height-md: 36px;
--tabs-header-vertical-height-lg: 42px;
--tabs-header-line-padding-sm: 12px;
--tabs-header-line-padding-md: 16px;
--tabs-header-line-padding-lg: 20px;
--tabs-header-card-padding-sm: 10px;
--tabs-header-card-padding-md: 12px;
--tabs-header-card-padding-lg: 14px;
--tabs-header-vertical-padding-sm: 16px;
--tabs-header-vertical-padding-md: 20px;
--tabs-header-vertical-padding-lg: 24px;
--tabs-default-color: #616161;
--tabs-default-hover-color: #33c98d;
--tabs-default-disabled-color: var(--color-text-disabled);
--tabs-default-icon-color: #bcbcbc;
--tabs-default-icon-disabled-color: var(--border-disabled);
--tabs-default-icon-hover-color: var(--color-text);
--tabs-default-active-background: var(--color-text-inverse);
--tabs-default-line-color: #00bc70;
--tabs-default-active-color: #00bc70;
--tabs-default-background-color: var(--color-text-inverse);
--tabs-default-card-background: #fafafa;
--tabs-default-noborder-background: #f2f2f2;
--tag-height-lg: 32px;
--tag-height-md: 28px;
--tag-height-sm: 24px;
--tag-height-xs: 20px;
--tag-padding-h-lg: 16px;
--tag-padding-h: 12px;
--tag-font-size: 12px;
--tag-icon-size-lg: 14px;
--tag-icon-size: 12px;
--tag-icon-size-xs: 10px;
--tag-color-disabled: var(--color-text-disabled);
--tag-disabled-opacity: var(--opacity-disabled);
--tag-default-background: #f9f9f9;
--tag-default-color: #616161;
--tag-default-border: var(--border-color);
--tag-primary-color: var(--theme-primary);
--tag-success-color: var(--theme-success);
--tag-warning-color: var(--theme-warning);
--tag-danger-color: var(--theme-danger);
--tag-primary-hover-background: var(--theme-primary-light);
--tag-primary-active-background: var(--theme-primary-dark);
--tag-color-green: 0, 188, 112;
--tag-color-blue: 84, 192, 232;
--tag-color-orange: 236, 145, 49;
--tag-color-red: 255, 80, 80;
--tooltip-font-size: 12px;
--tooltip-color: var(--color-text-inverse);
--tooltip-arrow-size: 4px;
--tooltip-light-background-color: #f2f2f2;
--tooltip-dark-background-color: rgba(0, 0, 0, var(--opacity-tooltip));
--tooltip-padding-v: var(--padding-v-xs);
--tooltip-padding-h: var(--padding-h-xs);
}
@keyframes door-enter {
from {
transform: scale3d(0, 1, 1);
}
to {
transform: scale3d(1, 1, 0.1);
}
}
.door-enter {
animation: door-enter both cubic-bezier(0.4, 0, 0, 1.5);
}
@keyframes door-leave {
from {
transform: scale3d(1, 1, 1);
}
60% {
transform: scale3d(0.01, 1, 1);
}
to {
transform: scale3d(0, 1, 0.1);
}
}
.door-leave {
animation: door-leave both;
}
@keyframes fade-enter {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.fade-enter {
animation: fade-enter both ease-in;
}
@keyframes fade-leave {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
.fade-leave {
animation: fade-leave both ease-out;
}
@keyframes flip-enter {
from {
transform: perspective(400px) rotate3d(1, 0, 0, 60deg);
}
70% {
transform: perspective(400px) rotate3d(1, 0, 0, -15deg);
}
to {
transform: perspective(400px);
}
}
.flip-enter {
animation: flip-enter both ease-in;
backface-visibility: visible ;
}
@keyframes flip-leave {
from {
transform: perspective(400px);
}
30% {
transform: perspective(400px) rotate3d(1, 0, 0, -15deg);
}
to {
transform: perspective(400px) rotate3d(1, 0, 0, 45deg);
}
}
.flip-leave {
animation: flip-leave both;
backface-visibility: visible ;
}
@keyframes rotate360 {
from {
transform: rotate(0);
}
to {
transform: rotate(360deg);
}
}
.rotate360 {
animation: rotate360 1s linear infinite;
}
/* rotate */
@keyframes rotate-enter {
from {
transform-origin: center;
transform: rotate3d(0, 0, 1, -180deg) scale3d(0.3, 0.3, 0.3);
}
to {
transform-origin: center;
transform: scale3d(1, 1, 1);
}
}
.rotate-enter {
animation: rotate-enter both;
}
@keyframes rotate-leave {
from {
transform-origin: center;
}
to {
transform-origin: center;
transform: rotate3d(0, 0, 1, 180deg) scale3d(0.3, 0.3, 0.3);
}
}
.rotate-leave {
animation: rotate-leave both;
}
/* slideUp */
@keyframes slideUp-enter {
from {
transform: translate3d(0, 100px, 0);
}
to {
transform: translate3d(0, 0, 0);
}
}
.slideUp-enter {
animation: slideUp-enter both cubic-bezier(0.4, 0, 0, 1.5);
}
@keyframes slideUp-leave {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(0, 100px, 0);
}
}
.slideUp-leave {
animation: slideUp-leave both;
}
/* slideDown */
@keyframes slideDown-enter {
from {
transform: translate3d(0, -100px, 0);
}
to {
transform: translate3d(0, 0, 0);
}
}
.slideDown-enter {
animation: slideDown-enter both cubic-bezier(0.4, 0, 0, 1.5);
}
@keyframes slideDown-leave {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(0, -100px, 0);
}
}
.slideDown-leave {
animation: slideDown-leave both;
}
/* slideLeft */
@keyframes slideLeft-enter {
from {
transform: translate3d(150px, 0, 0);
}
to {
transform: translate3d(0, 0, 0);
}
}
.slideLeft-enter {
animation: slideLeft-enter both cubic-bezier(0.4, 0, 0, 1.5);
}
@keyframes slideLeft-leave {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(150px, 0, 0);
}
}
.slideLeft-leave {
animation: slideLeft-leave both;
}
/* slideRight */
@keyframes slideRight-enter {
from {
transform: translate3d(-150px, 0, 0);
}
to {
transform: translate3d(0, 0, 0);
}
}
.slideRight-enter {
animation: slideRight-enter both cubic-bezier(0.4, 0, 0, 1.5);
}
@keyframes slideRight-leave {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(-150px, 0, 0);
}
}
.slideRight-leave {
animation: slideRight-leave both;
}
@keyframes zoom-enter {
from {
transform: scale3d(0.3, 0.3, 0.3);
}
to {
transform: scale3d(1, 1, 1);
}
}
.zoom-enter {
animation: zoom-enter both cubic-bezier(0.4, 0, 0, 1.5);
}
@keyframes zoom-leave {
from {
transform: scale3d(1, 1, 1);
}
to {
transform: scale3d(0.3, 0.3, 0.3);
}
}
.zoom-leave {
animation: zoom-leave both cubic-bezier(0.4, 0, 0, 1.5);
}
@keyframes za-zoom-fade-enter {
0% {
transform: scale(0.8);
opacity: 0;
}
100% {
transform: scale(1);
opacity: 1;
}
}
.za-zoom-fade-enter {
animation: za-zoom-fade-enter both cubic-bezier(0.08, 0.82, 0.17, 1);
}
@keyframes za-zoom-fade-leave {
0% {
transform: scale(1);
}
100% {
transform: scale(0.8);
opacity: 0;
}
}
.za-zoom-fade-leave {
animation: za-zoom-fade-leave both cubic-bezier(0.78, 0.14, 0.15, 0.86);
}
/* moveUp */
@keyframes moveUp-enter {
from {
transform: translate3d(0, 100%, 0);
}
to {
transform: translate3d(0, 0, 0);
}
}
.moveUp-enter {
animation: moveUp-enter both ease-in;
}
@keyframes moveUp-leave {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(0, 100%, 0);
}
}
.moveUp-leave {
animation: moveUp-leave both ease-out;
}
/* moveDown */
@keyframes moveDown-enter {
from {
transform: translate3d(0, -100%, 0);
}
to {
transform: translate3d(0, 0, 0);
}
}
.moveDown-enter {
animation: moveDown-enter both ease-in;
}
@keyframes moveDown-leave {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(0, -100%, 0);
}
}
.moveDown-leave {
animation: moveDown-leave both ease-out;
}
/* moveLeft */
@keyframes moveLeft-enter {
from {
transform: translate3d(100%, 0, 0);
}
to {
transform: translate3d(0, 0, 0);
}
}
.moveLeft-enter {
animation: moveLeft-enter both ease-in;
}
@keyframes moveLeft-leave {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(100%, 0, 0);
}
}
.moveLeft-leave {
animation: moveLeft-leave both ease-out;
}
/* moveRight */
@keyframes moveRight-enter {
from {
transform: translate3d(-100%, 0, 0);
}
to {
transform: translate3d(0, 0, 0);
}
}
.moveRight-enter {
animation: moveRight-enter both ease-in;
}
@keyframes moveRight-leave {
from {
transform: translate3d(0, 0, 0);
}
to {
transform: translate3d(-100%, 0, 0);
}
}
.moveRight-leave {
animation: moveRight-leave both ease-out;
}
@keyframes scaleDown-enter {
from {
opacity: 0;
transform-origin: 0 0;
transform: scaleY(0.8);
}
to {
opacity: 1;
transform-origin: 0 0;
transform: scaleY(1);
}
}
.scaleDown-enter {
animation: scaleDown-enter both;
}
@keyframes scaleDown-leave {
from {
opacity: 1;
transform-origin: 0 0;
transform: scaleY(1);
}
to {
opacity: 0;
transform-origin: 0 0;
transform: scaleY(0.8);
}
}
.scaleDown-leave {
animation: scaleDown-leave both;
}
@keyframes scaleUp-enter {
from {
opacity: 0;
transform-origin: bottom center;
transform: scaleY(0.8);
}
to {
opacity: 1;
transform-origin: bottom center;
transform: scaleY(1);
}
}
.scaleUp-enter {
animation: scaleUp-enter both;
}
@keyframes scaleUp-leave {
from {
opacity: 1;
transform-origin: bottom center;
transform: scaleY(1);
}
to {
opacity: 0;
transform-origin: bottom center;
transform: scaleY(0.8);
}
}
.scaleUp-leave {
animation: scaleUp-leave both;
}
@keyframes bounce-enter {
from, 20%, 40%, 60%, 80%, to {
animation-timing-function: cubic-bezier(0.215, 0.61, 0.355, 1);
}
0% {
opacity: 0;
transform: scale3d(0.3, 0.3, 0.3);
}
20% {
transform: scale3d(1.1, 1.1, 1.1);
}
40% {
transform: scale3d(0.9, 0.9, 0.9);
}
60% {
opacity: 1;
transform: scale3d(1.03, 1.03, 1.03);
}
80% {
transform: scale3d(0.97, 0.97, 0.97);
}
to {
opacity: 1;
transform: scale3d(1, 1, 1);
}
}
@keyframes bounce-leave {
20% {
transform: scale3d(0.9, 0.9, 0.9);
}
50%, 55% {
opacity: 1;
transform: scale3d(1.1, 1.1, 1.1);
}
to {
opacity: 0;
transform: scale3d(0.3, 0.3, 0.3);
}
}
@keyframes flash {
0%, 50%, 100% {
opacity: 1;
}
25%, 75% {
opacity: 0;
}
}
@keyframes shake {
0%, 100% {
transform: translateX(0);
}
10%, 30%, 50%, 70%, 90% {
transform: translateX(-10px);
}
20%, 40%, 60%, 80% {
transform: translateX(10px);
}
}
@keyframes tada {
0% {
transform: scale(1);
}
10%, 20% {
transform: scale(0.9) rotate(-3deg);
}
30%, 50%, 70%, 90% {
transform: scale(1.1) rotate(3deg);
}
40%, 60%, 80% {
transform: scale(1.1) rotate(-3deg);
}
100% {
transform: scale(1) rotate(0);
}
}
@keyframes pulse {
0% {
transform: scale(1);
opacity: 1;
}
50% {
transform: scale(0.9);
opacity: 0.7;
}
100% {
transform: scale(1);
opacity: 1;
}
}
@keyframes swing {
20% {
transform: rotate3d(0, 0, 1, 15deg);
}
40% {
transform: rotate3d(0, 0, 1, -10deg);
}
60% {
transform: rotate3d(0, 0, 1, 5deg);
}
80% {
transform: rotate3d(0, 0, 1, -5deg);
}
to {
transform: rotate3d(0, 0, 1, 0deg);
}
}
*,
*:before,
*:after {
box-sizing: border-box;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
*[contenteditable] {
user-select: auto ;
}
*:focus {
outline: none;
}
a {
background: transparent;
text-decoration: none;
outline: none;
}