zarm
Version:
基于 React 的移动端UI库
118 lines (113 loc) • 2.8 kB
CSS
.za-loading {
--size: var(--za-loading-size, 24px);
--size-large: var(--za-loading-size-large, 36px);
--stroke-color: var(--za-loading-stroke-color, #e6e6e6);
--stroke-active-color: var(--za-loading-stroke-active-color, var(--za-theme-primary));
--spinner-item-color: var(--za-loading-spinner-item-color, #80858e);
--spinner-item-width: var(--za-loading-spinner-item-width, 3px);
--spinner-item-height: var(--za-loading-spinner-item-height, 32%);
--spinner-item-border-radius: var(--za-loading-spinner-item-border-radius, 1.5px);
display: inline-block;
position: relative;
transform: rotate(-90deg);
vertical-align: middle;
width: var(--size);
height: var(--size);
/* sizes */
}
.za-loading__stroke {
stroke: var(--stroke-color);
}
.za-loading__line {
stroke: var(--stroke-active-color);
}
.za-loading--circular {
display: inline-block;
}
.za-loading--circular svg {
vertical-align: top;
animation: za-loading_rotate360 2s linear infinite;
}
.za-loading--circular circle {
stroke-linecap: round;
stroke: var(--stroke-active-color);
animation: za-loading_rotate-circular 1.5s ease-in-out infinite;
}
.za-loading--spinner {
animation: za-loading_rotate360 0.8s linear infinite;
animation-timing-function: steps(8);
}
.za-loading--spinner div {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
.za-loading--spinner div:nth-of-type(1) {
transform: rotate(45deg);
opacity: 0.125;
}
.za-loading--spinner div:nth-of-type(2) {
transform: rotate(90deg);
opacity: 0.25;
}
.za-loading--spinner div:nth-of-type(3) {
transform: rotate(135deg);
opacity: 0.375;
}
.za-loading--spinner div:nth-of-type(4) {
transform: rotate(180deg);
opacity: 0.5;
}
.za-loading--spinner div:nth-of-type(5) {
transform: rotate(225deg);
opacity: 0.625;
}
.za-loading--spinner div:nth-of-type(6) {
transform: rotate(270deg);
opacity: 0.75;
}
.za-loading--spinner div:nth-of-type(7) {
transform: rotate(315deg);
opacity: 0.875;
}
.za-loading--spinner div:nth-of-type(8) {
transform: rotate(360deg);
opacity: 1;
}
.za-loading--spinner div::before {
content: "";
display: block;
width: var(--spinner-item-width);
height: var(--spinner-item-height);
margin: 0 auto;
background-color: var(--spinner-item-color);
border-radius: var(--spinner-item-border-radius);
}
.za-loading--lg {
width: var(--size-large);
height: var(--size-large);
}
@keyframes za-loading_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 za-loading_rotate360 {
from {
transform: rotate(0);
}
to {
transform: rotate(360deg);
}
}