Arc gradient progress bar

as shown in the figure below, what about the effect that changes with the voltage?
clipboard.png

! [picture upload.]

finally, the stupid method is used to solve the problem. The two images are superimposed with the same size, and the code is as follows:
css:

.circleBox {
            width: 3.96rem;
            position: relative;
            left: 50%;
            transform: translateX(-50%);
            min-height: 3.16rem;
        }

        .circle {
            position: absolute;
            left: 0;
            top: 0;
            width: 100%;
            height: 3.16rem;
            background: url(../../image/bight1.png) no-repeat;
            background-size: cover;
        }

        .circle.on {
            background: url(../../image/bight2.png) no-repeat;
            width: 50%;
            background-size: cover;
        }

html:

  <div class="circleBox">
                        <span class="circle"></span>
                        <span class="circle on"></span>
                    </div>
Apr.07,2021

http://jsbin.com/qubucufuya/4.

briefly wrote, for convenience, I set the starting block at 90 degrees, and the processing of gradient color is also relatively simple, but simply add color
write this just to show that CSS can do it, mainly because it is a bit troublesome to determine the position, but it can also be calculated by js

.

update it. It's OK to start at 90 degrees. Judge it in js and hide the blocks that don't show.

http://jsbin.com/qubucufuya/6.

= update
I have nothing to do at night, and I have changed it, and the percentage shows that you can customize the percentage
http://jsbin.com/vigoxovofu/2.

as long as you change the number in the render (60) function.

the answer upstairs is good. If it were me, I would write it in stylus. If you don't write in the middle, draw a circle of marks:

https://codepen.io/meathill/p.

I hope it will enlighten you

Menu