JSFiddle - React, Tailwind, and code Playground

HTML

<canvas id="mycanvas" width=500 height=400></canvas>
<input type="range" value="60" id="range" />

CSS

canvas {
			    border: 1px solid #4c4c4c;
			    border-radius:10px;
			    background: #F0EFEF;
			}

JavaScript

var canvas = document.getElementById('mycanvas');
var ctx = canvas.getContext('2d');
var x = 100,
    y = 100,
    r = 40,
    ringWidth = 10;
var num = num1;
point = 50;

var range = document.getElementById('range');
var num1 = parseInt(range.value);
range.onchange = function () {
    num1 = parseInt(range.value);
    move(point);
};

move = function (point) {
    num = num1;
    ctx.clearRect(x - r - 5, y - r - 5, 2 * (r + 5), 2 * (r + 5));

    ctx.beginPath();
    ctx.fillStyle = "transparent";
    ctx.arc(x, y, r + ringWidth / 2, 0, 2 * Math.PI);
    ctx.fill();
    ctx.beginPath();
    ctx.fillStyle = "transparent";
    ctx.arc(x, y, r - ringWidth / 2, 0, 2 * Math.PI);
    ctx.fill();
    ctx.beginPath();
    ctx.lineWidth = ringWidth;
    var angle = 1.5 * Math.PI - point * Math.PI / 50;

    var leftGrad, rightGrad;

    if (point <= 50) {
        leftGrad = ctx.createLinearGradient(x, y - r, x, y + r);
        leftGrad.addColorStop(0.1, '#ff5151'); // 红
        leftGrad.addColorStop(0.5, '#ECD806'); // 黄
        leftGrad.addColorStop(1, '#dfd706'); // 黄
        ctx.strokeStyle = leftGrad;
        ctx.arc(x, y, r, 1.5 * Math.PI, angle, true);
    } else if (point <= 70) {
        leftGrad = ctx.createLinearGradient(x, y - r, x, y + r);
        leftGrad.addColorStop(0.1, '#ff5151'); // 红
        leftGrad.addColorStop(0.5, '#ECD806'); // 黄 
        leftGrad.addColorStop(0.8, '#dfd706'); // 黄	
        leftGrad.addColorStop(1, '#7FCF00'); //绿
        ctx.beginPath();
        ctx.strokeStyle = leftGrad;
        ctx.arc(x, y, r, 1.5 * Math.PI, 0.5 * Math.PI, true);
        ctx.stroke();
        ctx.beginPath();
        rightGrad = ctx.createLinearGradient(x, y + r + ringWidth / 2.5, x, y);
        rightGrad.addColorStop(0.2, '#7FCF00'); //绿
        ctx.strokeStyle = rightGrad;
        ctx.arc(x, y, r, 0.5 * Math.PI, angle, true);
    } else if (point < 100) {
        leftGrad = ctx.createLinearGradient(x, y - r, x, y + r);
        leftGrad.addColorStop(0.1,...