zarm-web
Version:
基于 React 的桌面端UI库
397 lines (378 loc) • 7.95 kB
CSS
.zw-activity-indicator {
display: inline-block;
position: relative;
transform: rotate(-90deg);
width: var(--activity-indicator-size-md);
height: var(--activity-indicator-size-md);
/* sizes */
}
.zw-activity-indicator__path {
stroke: var(--activity-indicator-path-color);
}
.zw-activity-indicator__line {
stroke-dasharray: 314.1592674;
stroke: var(--theme-primary);
}
.zw-activity-indicator--lg {
width: var(--activity-indicator-size-lg);
height: var(--activity-indicator-size-lg);
}
.zw-activity-indicator--circular {
display: inline-block;
}
.zw-activity-indicator--circular svg {
vertical-align: top;
animation: zw-activity-indicator_rotate360 2s linear infinite;
}
.zw-activity-indicator--circular circle {
stroke-linecap: round;
stroke: var(--theme-primary);
animation: zw-activity-indicator_rotate-circular 1.5s ease-in-out infinite;
}
.zw-activity-indicator--spinner {
animation: zw-activity-indicator_rotate360 0.8s linear infinite;
animation-timing-function: steps(12);
}
.zw-activity-indicator--spinner div {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.zw-activity-indicator--spinner div:nth-of-type(1) {
transform: rotate(30deg);
opacity: 1;
}
.zw-activity-indicator--spinner div::before {
content: "";
display: block;
width: 2px;
height: 25%;
margin: 0 auto;
background-color: #989697;
border-radius: 40%;
}
.zw-activity-indicator--spinner div {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.zw-activity-indicator--spinner div:nth-of-type(2) {
transform: rotate(60deg);
opacity: 0.9375;
}
.zw-activity-indicator--spinner div::before {
content: "";
display: block;
width: 2px;
height: 25%;
margin: 0 auto;
background-color: #989697;
border-radius: 40%;
}
.zw-activity-indicator--spinner div {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.zw-activity-indicator--spinner div:nth-of-type(3) {
transform: rotate(90deg);
opacity: 0.875;
}
.zw-activity-indicator--spinner div::before {
content: "";
display: block;
width: 2px;
height: 25%;
margin: 0 auto;
background-color: #989697;
border-radius: 40%;
}
.zw-activity-indicator--spinner div {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.zw-activity-indicator--spinner div:nth-of-type(4) {
transform: rotate(120deg);
opacity: 0.8125;
}
.zw-activity-indicator--spinner div::before {
content: "";
display: block;
width: 2px;
height: 25%;
margin: 0 auto;
background-color: #989697;
border-radius: 40%;
}
.zw-activity-indicator--spinner div {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.zw-activity-indicator--spinner div:nth-of-type(5) {
transform: rotate(150deg);
opacity: 0.75;
}
.zw-activity-indicator--spinner div::before {
content: "";
display: block;
width: 2px;
height: 25%;
margin: 0 auto;
background-color: #989697;
border-radius: 40%;
}
.zw-activity-indicator--spinner div {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.zw-activity-indicator--spinner div:nth-of-type(6) {
transform: rotate(180deg);
opacity: 0.6875;
}
.zw-activity-indicator--spinner div::before {
content: "";
display: block;
width: 2px;
height: 25%;
margin: 0 auto;
background-color: #989697;
border-radius: 40%;
}
.zw-activity-indicator--spinner div {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.zw-activity-indicator--spinner div:nth-of-type(7) {
transform: rotate(210deg);
opacity: 0.625;
}
.zw-activity-indicator--spinner div::before {
content: "";
display: block;
width: 2px;
height: 25%;
margin: 0 auto;
background-color: #989697;
border-radius: 40%;
}
.zw-activity-indicator--spinner div {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.zw-activity-indicator--spinner div:nth-of-type(8) {
transform: rotate(240deg);
opacity: 0.5625;
}
.zw-activity-indicator--spinner div::before {
content: "";
display: block;
width: 2px;
height: 25%;
margin: 0 auto;
background-color: #989697;
border-radius: 40%;
}
.zw-activity-indicator--spinner div {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.zw-activity-indicator--spinner div:nth-of-type(9) {
transform: rotate(270deg);
opacity: 0.5;
}
.zw-activity-indicator--spinner div::before {
content: "";
display: block;
width: 2px;
height: 25%;
margin: 0 auto;
background-color: #989697;
border-radius: 40%;
}
.zw-activity-indicator--spinner div {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.zw-activity-indicator--spinner div:nth-of-type(10) {
transform: rotate(300deg);
opacity: 0.4375;
}
.zw-activity-indicator--spinner div::before {
content: "";
display: block;
width: 2px;
height: 25%;
margin: 0 auto;
background-color: #989697;
border-radius: 40%;
}
.zw-activity-indicator--spinner div {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.zw-activity-indicator--spinner div:nth-of-type(11) {
transform: rotate(330deg);
opacity: 0.375;
}
.zw-activity-indicator--spinner div::before {
content: "";
display: block;
width: 2px;
height: 25%;
margin: 0 auto;
background-color: #989697;
border-radius: 40%;
}
.zw-activity-indicator--spinner div {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.zw-activity-indicator--spinner div:nth-of-type(12) {
transform: rotate(360deg);
opacity: 0.3125;
}
.zw-activity-indicator--spinner div::before {
content: "";
display: block;
width: 2px;
height: 25%;
margin: 0 auto;
background-color: #989697;
border-radius: 40%;
}
@keyframes zw-activity-indicator_rotate-circular {
0% {
stroke-dasharray: 1, 200;
stroke-dashoffset: 0;
}
50% {
stroke-dasharray: 120, 200;
stroke-dashoffset: -60;
}
100% {
stroke-dasharray: 120, 200;
stroke-dashoffset: -180;
}
}
@keyframes zw-activity-indicator_rotate360 {
from {
transform: rotate(0);
}
to {
transform: rotate(360deg);
}
}
.zw-loading {
position: relative;
display: inline-block;
user-select: none;
text-align: center;
vertical-align: middle;
}
.zw-loading--fullscreen {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 9999;
}
.zw-loading--active .zw-loading__container {
opacity: 0.4;
user-select: none;
pointer-events: none;
}
.zw-loading__container {
position: relative;
transition: opacity 0.3s;
}
.zw-loading__mask {
display: block;
position: absolute;
margin: 0;
top: 0;
right: 0;
bottom: 0;
left: 0;
background: var(--loading-mask-color);
}
.zw-loading__spin {
position: absolute;
top: 50%;
transform: translateY(-50%);
text-align: center;
width: 100%;
opacity: 1;
visibility: visible;
user-select: none;
}
.zw-loading__text {
font-size: 14px;
margin: 3px 0;
color: var(--color-text-disabled);
}
.zw-loading__svg {
height: var(--loading-height-md);
width: var(--loading-height-md);
}
.zw-loading__text {
font-size: var(--loading-font-size-md);
margin: calc(var(--loading-margin-h-md) / 2);
}
.zw-loading--lg .zw-loading__svg {
height: var(--loading-height-lg);
width: var(--loading-height-lg);
}
.zw-loading--lg .zw-loading__text {
font-size: var(--loading-font-size-lg);
margin: calc(var(--loading-margin-h-lg) / 2);
}
.zw-loading--sm .zw-loading__svg {
height: var(--loading-height-sm);
width: var(--loading-height-sm);
}
.zw-loading--sm .zw-loading__text {
font-size: var(--loading-font-size-sm);
margin: calc(var(--loading-margin-h-sm) / 2);
}
.zw-loading--xs .zw-loading__svg {
height: var(--loading-height-xs);
width: var(--loading-height-xs);
}
.zw-loading--xs .zw-loading__text {
font-size: var(--loading-font-size-xs);
margin: calc(var(--loading-margin-h-xs) / 2);
}