JSFiddle - React, Tailwind, and code Playground

by tiger

HTML

<div class="item">
    <div class="timer-time">10</div>
    <svg width="160" height="160" xmlns="http://www.w3.org/2000/svg">
     <g>
      <title>Pie Timer</title>
      <circle id="circle" class="timer-circle" r="40" cy="81" cx="81" stroke-width="8" stroke="#6fdb6f" fill="none"/>
     </g>
    </svg>
</div>

CSS

.item {
    position: relative;
    float: left;
}

.timer-time {
    text-align:center;
    position: absolute;
    line-height: 4em;
    width: 100%;
    font-size:2.5em;
}

svg {
   -webkit-transform: rotate(-90deg);
    transform: rotate(-90deg);
}

.timer-circle {
  stroke-dasharray: 280; 
  stroke-dashoffset: 280;
  transition: all 1s linear;
}

JavaScript

var time = 10; 
var initialOffset = '280';
var i = 1
var interval = setInterval(function() {
    $('.timer-circle').css('stroke-dashoffset', initialOffset-(i*(initialOffset/time)));
    $('.timer-time').text(10-i);
    if (i == time) { i=1 ; }
    i++;  
}, 1000);