antd-mobile-taro-ui
Version:
以antd-mobile为设计标准,基于taro框架的微信小程序组件库
116 lines (103 loc) • 2.58 kB
CSS
/*进度圈*/
.adm-progress-circle {
--track-width: var(--adm-progress-circle-track-width, 4px);
--size: var(--adm-progress-circle-size, 200px);
--track-color: var(--adm-progress-circle-track-color, #e5e5e5);
--fill-color: var(--adm-progress-circle-fill-color, var(--adm-color-primary));
--track-duration: var(--adm-progress-circle-track-duration, 2s);
display: flex;
width: var(--size);
height: var(--size);
}
.adm-progress-circle-content {
position: relative;
margin: auto;
width: 100%;
height: 100%;
}
.adm-progress-circle-wrapper {
position: relative;
width: 100%;
height: 100%;
}
.adm-progress-circle-default-circle {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: 0;
border: var(--track-width) solid var(--track-color);
border-radius: 50%;
}
.adm-progress-circle-percent {
position: relative;
z-index: 1;
width: 100%;
height: 100%;
display: grid;
grid-template-rows: repeat(2, 1fr);
grid-template-columns: repeat(2, 1fr);
}
.adm-progress-circle-circle {
overflow: hidden;
position: relative;
width: calc(var(--size) / 2);
height: calc(var(--size));
}
.adm-progress-circle-left-circle {
width: var(--size);
height: var(--size);
border: var(--track-width) solid transparent;
border-radius: 50%;
position: absolute;
left: 0;
top: 0;
border-bottom: var(--track-width) solid var(--fill-color);
border-left: var(--track-width) solid var(--fill-color);
transform: rotate(var(--percent));
animation-name: circle_left;
animation-duration: var(--track-duration);
animation-timing-function: linear;
animation-iteration-count: 1;
}
.adm-progress-circle-right-circle {
width: var(--size);
height: var(--size);
border: var(--track-width) solid transparent;
border-radius: 50%;
position: absolute;
right: 0;
top: 0;
border-top: var(--track-width) solid var(--fill-color);
border-right: var(--track-width) solid var(--fill-color);
border-top-left-radius: 50%;
transform: rotate(var(--percent));
animation-name: circle_right;
animation-duration: var(--track-duration);
animation-timing-function: linear;
animation-iteration-count: 1;
}
.adm-progress-circle-info {
position: absolute;
width: 100%;
top: 50%;
left: 50%;
text-align: center;
transform: translate(-50%, -50%);
}
@keyframes circle_left {
0%, 50% {
transform: rotate(-135deg);
}
100% {
transform: rotate(var(--percent));
}
}
@keyframes circle_right {
0% {
transform: rotate(-135deg);
}
50%, 100% {
transform: rotate(var(--percent));
}
}