vuestic-ui
Version:
Vue 3 UI Framework
67 lines • 1.72 kB
CSS
:root,
:host {
/* Circle */
--va-progress-circle-position: relative;
--va-progress-circle-overflow: hidden;
/* Circle Wrapper */
--va-progress-circle-width: 80%;
--va-progress-circle-height: 80%;
/* Circle Overlay */
--va-progress-circle-overlay-transition: all ease 2s;
/* Circle Info */
--va-progress-circle-font-size: 0.75rem;
}
.va-progress-circle {
position: var(--va-progress-circle-position);
overflow: var(--va-progress-circle-overflow);
font-family: var(--va-font-family);
}
.va-progress-circle__wrapper {
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
margin: auto;
transform: rotate(-90deg);
width: var(--va-progress-circle-width);
height: var(--va-progress-circle-height);
display: flex;
justify-content: center;
align-items: center;
}
.va-progress-circle--indeterminate .va-progress-circle__wrapper {
animation: va-progress-circle__wrapper--indeterminate 2s linear infinite;
}
.va-progress-circle__overlay {
transition: var(--va-progress-circle-overlay-transition);
}
.va-progress-circle--indeterminate .va-progress-circle__overlay {
animation: va-progress-circle__overlay--indeterminate 2s ease-in-out infinite;
}
.va-progress-circle__info {
font-size: var(--va-progress-circle-font-size);
position: absolute;
left: 50%;
top: 50%;
transform: translate(-50%, -50%);
}
@keyframes va-progress-circle__wrapper--indeterminate {
100% {
transform: rotate(270deg);
}
}
@keyframes va-progress-circle__overlay--indeterminate {
0% {
stroke-dasharray: 1, 125;
stroke-dashoffset: 0;
}
50% {
stroke-dasharray: 125, 125;
stroke-dashoffset: -65px;
}
100% {
stroke-dasharray: 125, 125;
stroke-dashoffset: -125px;
}
}