#javascript #html #css #svg #svg_animation
Написал скрипт, для круглого прогресс бара с помощью SVG, на чистом js.
Но не учел тот факт, что мне нужно еще и текст внутри этого круга сделать. Поискал
в инете, и не нашел.
А вот сделать с обычными div'ами у меня не получается. Не получается начинать прогресс
с определенной точки и заканчивать соответственно тоже в определенной точке.
Вот мой код, который с svg:
function setProgress(percent) {
const circle = document.getElementById(`circle`);
const radius = circle.r.baseVal.value;
const circumference = 2 * Math.PI * radius;
circle.style.strokeDasharray = `${circumference} ${circumference}`;
circle.style.strokeDashoffset = circumference;
const offset = circumference - percent / 10 * circumference;
circle.style.strokeDashoffset = offset;
}
setProgress(7);
.svg_circle_loader {
background: none;
border: none;
margin: none;
padding: none;
}
.circle_loader {
fill: none;
stroke: #FFB10A;
stroke-width: 10px;
transition: all 0.2s linear;
transform-origin: center;
transform: rotate(-90deg);
transition: stroke-dashoffset .5s;
}
Ответы
Ответ 1
Как-то так? const circumference = 2 * Math.PI * circle.r.baseVal.value; circle.style.strokeDasharray = `${circumference} 1000`; function setProgress(percent) { circle.style.strokeDashoffset = circumference * (1 - percent / 100); pct.innerHTML = percent.toFixed(0) + '%'; } requestAnimationFrame(draw) function draw(t) { requestAnimationFrame(draw) setProgress((t/100)%100) } .circle_loader { fill: none; stroke: #FFB10A; stroke-width: 10px; transform-origin: center; transform: rotate(-90deg); } text { dominant-baseline:middle; text-anchor:middle; font-size:30px; font-family:Arial; }
Комментариев нет:
Отправить комментарий