В качестве возможного решения можно использовать анимацию обводки, например:
Синий круг имеет радиус 38/2 = 19
stroke-width
синего круга - 38, создающий иллюзиюкруга 38 единиц.
Пожалуйста, посмотрите на путь: это также круг радиуса = 19.
svg {
border: 1px solid;
height:90vh;
}
#clockface {
fill: silver;
}
#spent {
fill:none;
stroke: #6683c2;
stroke-width: 38px;
stroke-dasharray: 119.397px;
stroke-dashoffset: 119.397px;
animation: dash 5s linear infinite;
}
@keyframes dash {
to {
stroke-dashoffset: 0;
}
}
<svg viewBox="0 0 100 100">
<circle cx="50" cy="50" r="38" id="clockface"></circle>
<path d="M50,31 A19,19 1 0,1 50,69 A19,19 1 0,1 50,31" id="spent"></path>
</svg>
В этом случае я использовал анимацию CSS, но вы можете контролировать значение для stroke-dashoffset
с помощью JavaScript.
Значение для stroke-dasharray
было получено с использованием spent.getTotalLength()
Если вы не знакомы с анимацией штрихов в SVG, прочитайте Как работает линейная анимация SVG