如何根据计数增加进度条行?

时间:2018-08-20 02:21:58

标签: javascript html css

我有一个下面的代码片段,其中一个计数每秒钟增加一秒,这个计数会很好,但是我想增加进度条,以增加进度条中的计数:-

$(document).ready(function(){
	secondsStart();
	function secondsStart(){
		var second = 0
		var secondValue;
		var id = setInterval(frame, 1000);
		function frame() {
		    if (second > 60) {
		    	clearInterval(id);
		    } else {
				$('#seconds').html(second);
				second += 1
				if (second == 60) {
					secondsStart()
				}
		    }
		}
	}
});
.progress-circle {
   font-size: 20px;
   margin: 20px;
   position: relative; /* so that children can be absolutely positioned */
   padding: 0;
   width: 5em;
   height: 5em;
   background-color: #F2E9E1; 
   border-radius: 50%;
   line-height: 5em;
}

.progress-circle:after{
    border: none;
    position: absolute;
    top: 0.35em;
    left: 0.35em;
    text-align: center;
    display: block;
    border-radius: 50%;
    width: 4.3em;
    height: 4.3em;
    background-color: white;
    content: " ";
}
/* Text inside the control */
.progress-circle span {
    position: absolute;
    line-height: 5em;
    width: 5em;
    text-align: center;
    display: block;
    color: #53777A;
    z-index: 2;
}
.left-half-clipper { 
   /* a round circle */
   border-radius: 50%;
   width: 5em;
   height: 5em;
   position: absolute; /* needed for clipping */
   clip: rect(0, 5em, 5em, 2.5em); /* clips the whole left half*/ 
}
/* when p>50, don't clip left half*/
.progress-circle.over50 .left-half-clipper {
   clip: rect(auto,auto,auto,auto);
}
.value-bar {
   /*This is an overlayed square, that is made round with the border radius,
   then it is cut to display only the left half, then rotated clockwise
   to escape the outer clipping path.*/ 
   position: absolute; /*needed for clipping*/
   clip: rect(0, 2.5em, 5em, 0);
   width: 5em;
   height: 5em;
   border-radius: 50%;
   border: 0.45em solid #f00; /*The border is 0.35 but making it larger removes visual artifacts */
   /*background-color: #4D642D;*/ /* for debug */
   box-sizing: border-box;
  
}
/* Progress bar filling the whole right half for values above 50% */
.progress-circle.over50 .first50-bar {
   /*Progress bar for the first 50%, filling the whole right half*/
   position: absolute; /*needed for clipping*/
   clip: rect(0, 5em, 5em, 2.5em);
   background-color: #53777A;
   border-radius: 50%;
   width: 5em;
   height: 5em;
}
.progress-circle:not(.over50) .first50-bar{ display: none; }


/* Progress bar rotation position */
.progress-circle.p0 .value-bar { display: none; }
.progress-circle.p1 .value-bar { transform: rotate(4deg); }
.progress-circle.p2 .value-bar { transform: rotate(7deg); }
.progress-circle.p3 .value-bar { transform: rotate(11deg); }
.progress-circle.p4 .value-bar { transform: rotate(14deg); }
.progress-circle.p5 .value-bar { transform: rotate(18deg); }
.progress-circle.p6 .value-bar { transform: rotate(22deg); }
.progress-circle.p7 .value-bar { transform: rotate(25deg); }
.progress-circle.p8 .value-bar { transform: rotate(29deg); }
.progress-circle.p9 .value-bar { transform: rotate(32deg); }
.progress-circle.p10 .value-bar { transform: rotate(36deg); }
.progress-circle.p11 .value-bar { transform: rotate(40deg); }
.progress-circle.p12 .value-bar { transform: rotate(43deg); }
.progress-circle.p13 .value-bar { transform: rotate(47deg); }
.progress-circle.p14 .value-bar { transform: rotate(50deg); }
.progress-circle.p15 .value-bar { transform: rotate(54deg); }
.progress-circle.p16 .value-bar { transform: rotate(58deg); }
.progress-circle.p17 .value-bar { transform: rotate(61deg); }
.progress-circle.p18 .value-bar { transform: rotate(65deg); }
.progress-circle.p19 .value-bar { transform: rotate(68deg); }
.progress-circle.p20 .value-bar { transform: rotate(72deg); }
.progress-circle.p21 .value-bar { transform: rotate(76deg); }
.progress-circle.p22 .value-bar { transform: rotate(79deg); }
.progress-circle.p23 .value-bar { transform: rotate(83deg); }
.progress-circle.p24 .value-bar { transform: rotate(86deg); }
.progress-circle.p25 .value-bar { transform: rotate(90deg); }
.progress-circle.p26 .value-bar { transform: rotate(94deg); }
.progress-circle.p27 .value-bar { transform: rotate(97deg); }
.progress-circle.p28 .value-bar { transform: rotate(101deg); }
.progress-circle.p29 .value-bar { transform: rotate(104deg); }
.progress-circle.p30 .value-bar { transform: rotate(108deg); }
.progress-circle.p31 .value-bar { transform: rotate(112deg); }
.progress-circle.p32 .value-bar { transform: rotate(115deg); }
.progress-circle.p33 .value-bar { transform: rotate(119deg); }
.progress-circle.p34 .value-bar { transform: rotate(122deg); }
.progress-circle.p35 .value-bar { transform: rotate(126deg); }
.progress-circle.p36 .value-bar { transform: rotate(130deg); }
.progress-circle.p37 .value-bar { transform: rotate(133deg); }
.progress-circle.p38 .value-bar { transform: rotate(137deg); }
.progress-circle.p39 .value-bar { transform: rotate(140deg); }
.progress-circle.p40 .value-bar { transform: rotate(144deg); }
.progress-circle.p41 .value-bar { transform: rotate(148deg); }
.progress-circle.p42 .value-bar { transform: rotate(151deg); }
.progress-circle.p43 .value-bar { transform: rotate(155deg); }
.progress-circle.p44 .value-bar { transform: rotate(158deg); }
.progress-circle.p45 .value-bar { transform: rotate(162deg); }
.progress-circle.p46 .value-bar { transform: rotate(166deg); }
.progress-circle.p47 .value-bar { transform: rotate(169deg); }
.progress-circle.p48 .value-bar { transform: rotate(173deg); }
.progress-circle.p49 .value-bar { transform: rotate(176deg); }
.progress-circle.p50 .value-bar { transform: rotate(180deg); }
.progress-circle.p51 .value-bar { transform: rotate(184deg); }
.progress-circle.p52 .value-bar { transform: rotate(187deg); }
.progress-circle.p53 .value-bar { transform: rotate(191deg); }
.progress-circle.p54 .value-bar { transform: rotate(194deg); }
.progress-circle.p55 .value-bar { transform: rotate(198deg); }
.progress-circle.p56 .value-bar { transform: rotate(202deg); }
.progress-circle.p57 .value-bar { transform: rotate(205deg); }
.progress-circle.p58 .value-bar { transform: rotate(209deg); }
.progress-circle.p59 .value-bar { transform: rotate(212deg); }
.progress-circle.p60 .value-bar { transform: rotate(216deg); }
.progress-circle.p61 .value-bar { transform: rotate(220deg); }
.progress-circle.p62 .value-bar { transform: rotate(223deg); }
.progress-circle.p63 .value-bar { transform: rotate(227deg); }
.progress-circle.p64 .value-bar { transform: rotate(230deg); }
.progress-circle.p65 .value-bar { transform: rotate(234deg); }
.progress-circle.p66 .value-bar { transform: rotate(238deg); }
.progress-circle.p67 .value-bar { transform: rotate(241deg); }
.progress-circle.p68 .value-bar { transform: rotate(245deg); }
.progress-circle.p69 .value-bar { transform: rotate(248deg); }
.progress-circle.p70 .value-bar { transform: rotate(252deg); }
.progress-circle.p71 .value-bar { transform: rotate(256deg); }
.progress-circle.p72 .value-bar { transform: rotate(259deg); }
.progress-circle.p73 .value-bar { transform: rotate(263deg); }
.progress-circle.p74 .value-bar { transform: rotate(266deg); }
.progress-circle.p75 .value-bar { transform: rotate(270deg); }
.progress-circle.p76 .value-bar { transform: rotate(274deg); }
.progress-circle.p77 .value-bar { transform: rotate(277deg); }
.progress-circle.p78 .value-bar { transform: rotate(281deg); }
.progress-circle.p79 .value-bar { transform: rotate(284deg); }
.progress-circle.p80 .value-bar { transform: rotate(288deg); }
.progress-circle.p81 .value-bar { transform: rotate(292deg); }
.progress-circle.p82 .value-bar { transform: rotate(295deg); }
.progress-circle.p83 .value-bar { transform: rotate(299deg); }
.progress-circle.p84 .value-bar { transform: rotate(302deg); }
.progress-circle.p85 .value-bar { transform: rotate(306deg); }
.progress-circle.p86 .value-bar { transform: rotate(310deg); }
.progress-circle.p87 .value-bar { transform: rotate(313deg); }
.progress-circle.p88 .value-bar { transform: rotate(317deg); }
.progress-circle.p89 .value-bar { transform: rotate(320deg); }
.progress-circle.p90 .value-bar { transform: rotate(324deg); }
.progress-circle.p91 .value-bar { transform: rotate(328deg); }
.progress-circle.p92 .value-bar { transform: rotate(331deg); }
.progress-circle.p93 .value-bar { transform: rotate(335deg); }
.progress-circle.p94 .value-bar { transform: rotate(338deg); }
.progress-circle.p95 .value-bar { transform: rotate(342deg); }
.progress-circle.p96 .value-bar { transform: rotate(346deg); }
.progress-circle.p97 .value-bar { transform: rotate(349deg); }
.progress-circle.p98 .value-bar { transform: rotate(353deg); }
.progress-circle.p99 .value-bar { transform: rotate(356deg); }
.progress-circle.p100 .value-bar { transform: rotate(360deg); }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="progress-circle p10">
		<span id="seconds">0</span>
		<div class="left-half-clipper">
			<div class="first50-bar"></div>
			<div class="value-bar"></div>
		</div>
	</div>

任何人都可以告诉我如何做到这一点。如何根据进度圈中的计数增加进度栏中的红色进度线。

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

在查看CSS时,应用类p<number>是设置填充百分比的原因。例如,将p10应用于progress-circle,将其填满10%。

让我们删除p10,以便我们从零开始,并添加一行可以每秒更新该类的行。

$('.progress-circle')
    .removeClass("p" + (second-1)) //Remove class p<n-1>
    .addClass("p" + second);       //Add class p<n>

$(document).ready(function() {
  var $seconds = $('#seconds');
  var $progressCircle = $(".progress-circle");

  secondsStart();

  function secondsStart() {
    var second = 0
    var secondValue;
    var id = setInterval(frame, 1000);
    $progressCircle.removeClass("over50");

    function frame() {
      if (second > 60) {
        clearInterval(id);
      } else {
        $seconds.html(second);
        $progressCircle.removeClass("p" + (second - 1)).addClass("p" + second);
        if (seconds > 50) $progressCircle.addClass("over50");
        second += 1
        if (second == 60) {
          secondsStart()
        }
      }
    }
  }
});
.progress-circle {
  font-size: 20px;
  margin: 20px;
  position: relative;
  /* so that children can be absolutely positioned */
  padding: 0;
  width: 5em;
  height: 5em;
  background-color: #F2E9E1;
  border-radius: 50%;
  line-height: 5em;
}

.progress-circle:after {
  border: none;
  position: absolute;
  top: 0.35em;
  left: 0.35em;
  text-align: center;
  display: block;
  border-radius: 50%;
  width: 4.3em;
  height: 4.3em;
  background-color: white;
  content: " ";
}


/* Text inside the control */

.progress-circle span {
  position: absolute;
  line-height: 5em;
  width: 5em;
  text-align: center;
  display: block;
  color: #53777A;
  z-index: 2;
}

.left-half-clipper {
  /* a round circle */
  border-radius: 50%;
  width: 5em;
  height: 5em;
  position: absolute;
  /* needed for clipping */
  clip: rect(0, 5em, 5em, 2.5em);
  /* clips the whole left half*/
}


/* when p>50, don't clip left half*/

.progress-circle.over50 .left-half-clipper {
  clip: rect(auto, auto, auto, auto);
}

.value-bar {
  /*This is an overlayed square, that is made round with the border radius,
   then it is cut to display only the left half, then rotated clockwise
   to escape the outer clipping path.*/
  position: absolute;
  /*needed for clipping*/
  clip: rect(0, 2.5em, 5em, 0);
  width: 5em;
  height: 5em;
  border-radius: 50%;
  border: 0.45em solid #f00;
  /*The border is 0.35 but making it larger removes visual artifacts */
  /*background-color: #4D642D;*/
  /* for debug */
  box-sizing: border-box;
}


/* Progress bar filling the whole right half for values above 50% */

.progress-circle.over50 .first50-bar {
  /*Progress bar for the first 50%, filling the whole right half*/
  position: absolute;
  /*needed for clipping*/
  clip: rect(0, 5em, 5em, 2.5em);
  background-color: #53777A;
  border-radius: 50%;
  width: 5em;
  height: 5em;
}

.progress-circle:not(.over50) .first50-bar {
  display: none;
}


/* Progress bar rotation position */

.progress-circle.p0 .value-bar {
  display: none;
}

.progress-circle.p1 .value-bar {
  transform: rotate(4deg);
}

.progress-circle.p2 .value-bar {
  transform: rotate(7deg);
}

.progress-circle.p3 .value-bar {
  transform: rotate(11deg);
}

.progress-circle.p4 .value-bar {
  transform: rotate(14deg);
}

.progress-circle.p5 .value-bar {
  transform: rotate(18deg);
}

.progress-circle.p6 .value-bar {
  transform: rotate(22deg);
}

.progress-circle.p7 .value-bar {
  transform: rotate(25deg);
}

.progress-circle.p8 .value-bar {
  transform: rotate(29deg);
}

.progress-circle.p9 .value-bar {
  transform: rotate(32deg);
}

.progress-circle.p10 .value-bar {
  transform: rotate(36deg);
}

.progress-circle.p11 .value-bar {
  transform: rotate(40deg);
}

.progress-circle.p12 .value-bar {
  transform: rotate(43deg);
}

.progress-circle.p13 .value-bar {
  transform: rotate(47deg);
}

.progress-circle.p14 .value-bar {
  transform: rotate(50deg);
}

.progress-circle.p15 .value-bar {
  transform: rotate(54deg);
}

.progress-circle.p16 .value-bar {
  transform: rotate(58deg);
}

.progress-circle.p17 .value-bar {
  transform: rotate(61deg);
}

.progress-circle.p18 .value-bar {
  transform: rotate(65deg);
}

.progress-circle.p19 .value-bar {
  transform: rotate(68deg);
}

.progress-circle.p20 .value-bar {
  transform: rotate(72deg);
}

.progress-circle.p21 .value-bar {
  transform: rotate(76deg);
}

.progress-circle.p22 .value-bar {
  transform: rotate(79deg);
}

.progress-circle.p23 .value-bar {
  transform: rotate(83deg);
}

.progress-circle.p24 .value-bar {
  transform: rotate(86deg);
}

.progress-circle.p25 .value-bar {
  transform: rotate(90deg);
}

.progress-circle.p26 .value-bar {
  transform: rotate(94deg);
}

.progress-circle.p27 .value-bar {
  transform: rotate(97deg);
}

.progress-circle.p28 .value-bar {
  transform: rotate(101deg);
}

.progress-circle.p29 .value-bar {
  transform: rotate(104deg);
}

.progress-circle.p30 .value-bar {
  transform: rotate(108deg);
}

.progress-circle.p31 .value-bar {
  transform: rotate(112deg);
}

.progress-circle.p32 .value-bar {
  transform: rotate(115deg);
}

.progress-circle.p33 .value-bar {
  transform: rotate(119deg);
}

.progress-circle.p34 .value-bar {
  transform: rotate(122deg);
}

.progress-circle.p35 .value-bar {
  transform: rotate(126deg);
}

.progress-circle.p36 .value-bar {
  transform: rotate(130deg);
}

.progress-circle.p37 .value-bar {
  transform: rotate(133deg);
}

.progress-circle.p38 .value-bar {
  transform: rotate(137deg);
}

.progress-circle.p39 .value-bar {
  transform: rotate(140deg);
}

.progress-circle.p40 .value-bar {
  transform: rotate(144deg);
}

.progress-circle.p41 .value-bar {
  transform: rotate(148deg);
}

.progress-circle.p42 .value-bar {
  transform: rotate(151deg);
}

.progress-circle.p43 .value-bar {
  transform: rotate(155deg);
}

.progress-circle.p44 .value-bar {
  transform: rotate(158deg);
}

.progress-circle.p45 .value-bar {
  transform: rotate(162deg);
}

.progress-circle.p46 .value-bar {
  transform: rotate(166deg);
}

.progress-circle.p47 .value-bar {
  transform: rotate(169deg);
}

.progress-circle.p48 .value-bar {
  transform: rotate(173deg);
}

.progress-circle.p49 .value-bar {
  transform: rotate(176deg);
}

.progress-circle.p50 .value-bar {
  transform: rotate(180deg);
}

.progress-circle.p51 .value-bar {
  transform: rotate(184deg);
}

.progress-circle.p52 .value-bar {
  transform: rotate(187deg);
}

.progress-circle.p53 .value-bar {
  transform: rotate(191deg);
}

.progress-circle.p54 .value-bar {
  transform: rotate(194deg);
}

.progress-circle.p55 .value-bar {
  transform: rotate(198deg);
}

.progress-circle.p56 .value-bar {
  transform: rotate(202deg);
}

.progress-circle.p57 .value-bar {
  transform: rotate(205deg);
}

.progress-circle.p58 .value-bar {
  transform: rotate(209deg);
}

.progress-circle.p59 .value-bar {
  transform: rotate(212deg);
}

.progress-circle.p60 .value-bar {
  transform: rotate(216deg);
}

.progress-circle.p61 .value-bar {
  transform: rotate(220deg);
}

.progress-circle.p62 .value-bar {
  transform: rotate(223deg);
}

.progress-circle.p63 .value-bar {
  transform: rotate(227deg);
}

.progress-circle.p64 .value-bar {
  transform: rotate(230deg);
}

.progress-circle.p65 .value-bar {
  transform: rotate(234deg);
}

.progress-circle.p66 .value-bar {
  transform: rotate(238deg);
}

.progress-circle.p67 .value-bar {
  transform: rotate(241deg);
}

.progress-circle.p68 .value-bar {
  transform: rotate(245deg);
}

.progress-circle.p69 .value-bar {
  transform: rotate(248deg);
}

.progress-circle.p70 .value-bar {
  transform: rotate(252deg);
}

.progress-circle.p71 .value-bar {
  transform: rotate(256deg);
}

.progress-circle.p72 .value-bar {
  transform: rotate(259deg);
}

.progress-circle.p73 .value-bar {
  transform: rotate(263deg);
}

.progress-circle.p74 .value-bar {
  transform: rotate(266deg);
}

.progress-circle.p75 .value-bar {
  transform: rotate(270deg);
}

.progress-circle.p76 .value-bar {
  transform: rotate(274deg);
}

.progress-circle.p77 .value-bar {
  transform: rotate(277deg);
}

.progress-circle.p78 .value-bar {
  transform: rotate(281deg);
}

.progress-circle.p79 .value-bar {
  transform: rotate(284deg);
}

.progress-circle.p80 .value-bar {
  transform: rotate(288deg);
}

.progress-circle.p81 .value-bar {
  transform: rotate(292deg);
}

.progress-circle.p82 .value-bar {
  transform: rotate(295deg);
}

.progress-circle.p83 .value-bar {
  transform: rotate(299deg);
}

.progress-circle.p84 .value-bar {
  transform: rotate(302deg);
}

.progress-circle.p85 .value-bar {
  transform: rotate(306deg);
}

.progress-circle.p86 .value-bar {
  transform: rotate(310deg);
}

.progress-circle.p87 .value-bar {
  transform: rotate(313deg);
}

.progress-circle.p88 .value-bar {
  transform: rotate(317deg);
}

.progress-circle.p89 .value-bar {
  transform: rotate(320deg);
}

.progress-circle.p90 .value-bar {
  transform: rotate(324deg);
}

.progress-circle.p91 .value-bar {
  transform: rotate(328deg);
}

.progress-circle.p92 .value-bar {
  transform: rotate(331deg);
}

.progress-circle.p93 .value-bar {
  transform: rotate(335deg);
}

.progress-circle.p94 .value-bar {
  transform: rotate(338deg);
}

.progress-circle.p95 .value-bar {
  transform: rotate(342deg);
}

.progress-circle.p96 .value-bar {
  transform: rotate(346deg);
}

.progress-circle.p97 .value-bar {
  transform: rotate(349deg);
}

.progress-circle.p98 .value-bar {
  transform: rotate(353deg);
}

.progress-circle.p99 .value-bar {
  transform: rotate(356deg);
}

.progress-circle.p100 .value-bar {
  transform: rotate(360deg);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="progress-circle">
  <span id="seconds">0</span>
  <div class="left-half-clipper">
    <div class="first50-bar"></div>
    <div class="value-bar"></div>
  </div>
</div>


如果您希望将其排除在60之外,而不是100上,那么您只需要做一点数学运算就可以知道当前百分比是什么:

const maxValue = 60;                         //set the total
var pct = parseInt(second * 100/maxValue);   //calculate percentage of total
$('.progress-circle')
    .attr("class", "")                       //clear all classes
    .addClass("progress-circle")             //keep our progress-circle class
    .addClass("p" + pct);                    //add the correct %

$(document).ready(function() {
  var $seconds = $('#seconds');
  var $progressCircle = $(".progress-circle");
  var maxValue = 60;
  
  secondsStart();

  function secondsStart() {
    var second = 0
    var secondValue;
    var id = setInterval(frame, 1000);

    function frame() {
      if (second > maxValue) {
        clearInterval(id);
      } else {
        $seconds.html(second);
        var pct = parseInt(second * 100/maxValue);
        $progressCircle.attr("class", "").addClass("progress-circle").addClass("p" + pct);
        if (pct > 50) $progressCircle.addClass("over50");
        second += 1
        if (second == maxValue) {
          secondsStart()
        }
      }
    }
  }
});
.progress-circle {
  font-size: 20px;
  margin: 20px;
  position: relative;
  /* so that children can be absolutely positioned */
  padding: 0;
  width: 5em;
  height: 5em;
  background-color: #F2E9E1;
  border-radius: 50%;
  line-height: 5em;
}

.progress-circle:after {
  border: none;
  position: absolute;
  top: 0.35em;
  left: 0.35em;
  text-align: center;
  display: block;
  border-radius: 50%;
  width: 4.3em;
  height: 4.3em;
  background-color: white;
  content: " ";
}


/* Text inside the control */

.progress-circle span {
  position: absolute;
  line-height: 5em;
  width: 5em;
  text-align: center;
  display: block;
  color: #53777A;
  z-index: 2;
}

.left-half-clipper {
  /* a round circle */
  border-radius: 50%;
  width: 5em;
  height: 5em;
  position: absolute;
  /* needed for clipping */
  clip: rect(0, 5em, 5em, 2.5em);
  /* clips the whole left half*/
}


/* when p>50, don't clip left half*/

.progress-circle.over50 .left-half-clipper {
  clip: rect(auto, auto, auto, auto);
}

.value-bar {
  /*This is an overlayed square, that is made round with the border radius,
   then it is cut to display only the left half, then rotated clockwise
   to escape the outer clipping path.*/
  position: absolute;
  /*needed for clipping*/
  clip: rect(0, 2.5em, 5em, 0);
  width: 5em;
  height: 5em;
  border-radius: 50%;
  border: 0.45em solid #f00;
  /*The border is 0.35 but making it larger removes visual artifacts */
  /*background-color: #4D642D;*/
  /* for debug */
  box-sizing: border-box;
}


/* Progress bar filling the whole right half for values above 50% */

.progress-circle.over50 .first50-bar {
  /*Progress bar for the first 50%, filling the whole right half*/
  position: absolute;
  /*needed for clipping*/
  clip: rect(0, 5em, 5em, 2.5em);
  background-color: #53777A;
  border-radius: 50%;
  width: 5em;
  height: 5em;
}

.progress-circle:not(.over50) .first50-bar {
  display: none;
}


/* Progress bar rotation position */

.progress-circle.p0 .value-bar {
  display: none;
}

.progress-circle.p1 .value-bar {
  transform: rotate(4deg);
}

.progress-circle.p2 .value-bar {
  transform: rotate(7deg);
}

.progress-circle.p3 .value-bar {
  transform: rotate(11deg);
}

.progress-circle.p4 .value-bar {
  transform: rotate(14deg);
}

.progress-circle.p5 .value-bar {
  transform: rotate(18deg);
}

.progress-circle.p6 .value-bar {
  transform: rotate(22deg);
}

.progress-circle.p7 .value-bar {
  transform: rotate(25deg);
}

.progress-circle.p8 .value-bar {
  transform: rotate(29deg);
}

.progress-circle.p9 .value-bar {
  transform: rotate(32deg);
}

.progress-circle.p10 .value-bar {
  transform: rotate(36deg);
}

.progress-circle.p11 .value-bar {
  transform: rotate(40deg);
}

.progress-circle.p12 .value-bar {
  transform: rotate(43deg);
}

.progress-circle.p13 .value-bar {
  transform: rotate(47deg);
}

.progress-circle.p14 .value-bar {
  transform: rotate(50deg);
}

.progress-circle.p15 .value-bar {
  transform: rotate(54deg);
}

.progress-circle.p16 .value-bar {
  transform: rotate(58deg);
}

.progress-circle.p17 .value-bar {
  transform: rotate(61deg);
}

.progress-circle.p18 .value-bar {
  transform: rotate(65deg);
}

.progress-circle.p19 .value-bar {
  transform: rotate(68deg);
}

.progress-circle.p20 .value-bar {
  transform: rotate(72deg);
}

.progress-circle.p21 .value-bar {
  transform: rotate(76deg);
}

.progress-circle.p22 .value-bar {
  transform: rotate(79deg);
}

.progress-circle.p23 .value-bar {
  transform: rotate(83deg);
}

.progress-circle.p24 .value-bar {
  transform: rotate(86deg);
}

.progress-circle.p25 .value-bar {
  transform: rotate(90deg);
}

.progress-circle.p26 .value-bar {
  transform: rotate(94deg);
}

.progress-circle.p27 .value-bar {
  transform: rotate(97deg);
}

.progress-circle.p28 .value-bar {
  transform: rotate(101deg);
}

.progress-circle.p29 .value-bar {
  transform: rotate(104deg);
}

.progress-circle.p30 .value-bar {
  transform: rotate(108deg);
}

.progress-circle.p31 .value-bar {
  transform: rotate(112deg);
}

.progress-circle.p32 .value-bar {
  transform: rotate(115deg);
}

.progress-circle.p33 .value-bar {
  transform: rotate(119deg);
}

.progress-circle.p34 .value-bar {
  transform: rotate(122deg);
}

.progress-circle.p35 .value-bar {
  transform: rotate(126deg);
}

.progress-circle.p36 .value-bar {
  transform: rotate(130deg);
}

.progress-circle.p37 .value-bar {
  transform: rotate(133deg);
}

.progress-circle.p38 .value-bar {
  transform: rotate(137deg);
}

.progress-circle.p39 .value-bar {
  transform: rotate(140deg);
}

.progress-circle.p40 .value-bar {
  transform: rotate(144deg);
}

.progress-circle.p41 .value-bar {
  transform: rotate(148deg);
}

.progress-circle.p42 .value-bar {
  transform: rotate(151deg);
}

.progress-circle.p43 .value-bar {
  transform: rotate(155deg);
}

.progress-circle.p44 .value-bar {
  transform: rotate(158deg);
}

.progress-circle.p45 .value-bar {
  transform: rotate(162deg);
}

.progress-circle.p46 .value-bar {
  transform: rotate(166deg);
}

.progress-circle.p47 .value-bar {
  transform: rotate(169deg);
}

.progress-circle.p48 .value-bar {
  transform: rotate(173deg);
}

.progress-circle.p49 .value-bar {
  transform: rotate(176deg);
}

.progress-circle.p50 .value-bar {
  transform: rotate(180deg);
}

.progress-circle.p51 .value-bar {
  transform: rotate(184deg);
}

.progress-circle.p52 .value-bar {
  transform: rotate(187deg);
}

.progress-circle.p53 .value-bar {
  transform: rotate(191deg);
}

.progress-circle.p54 .value-bar {
  transform: rotate(194deg);
}

.progress-circle.p55 .value-bar {
  transform: rotate(198deg);
}

.progress-circle.p56 .value-bar {
  transform: rotate(202deg);
}

.progress-circle.p57 .value-bar {
  transform: rotate(205deg);
}

.progress-circle.p58 .value-bar {
  transform: rotate(209deg);
}

.progress-circle.p59 .value-bar {
  transform: rotate(212deg);
}

.progress-circle.p60 .value-bar {
  transform: rotate(216deg);
}

.progress-circle.p61 .value-bar {
  transform: rotate(220deg);
}

.progress-circle.p62 .value-bar {
  transform: rotate(223deg);
}

.progress-circle.p63 .value-bar {
  transform: rotate(227deg);
}

.progress-circle.p64 .value-bar {
  transform: rotate(230deg);
}

.progress-circle.p65 .value-bar {
  transform: rotate(234deg);
}

.progress-circle.p66 .value-bar {
  transform: rotate(238deg);
}

.progress-circle.p67 .value-bar {
  transform: rotate(241deg);
}

.progress-circle.p68 .value-bar {
  transform: rotate(245deg);
}

.progress-circle.p69 .value-bar {
  transform: rotate(248deg);
}

.progress-circle.p70 .value-bar {
  transform: rotate(252deg);
}

.progress-circle.p71 .value-bar {
  transform: rotate(256deg);
}

.progress-circle.p72 .value-bar {
  transform: rotate(259deg);
}

.progress-circle.p73 .value-bar {
  transform: rotate(263deg);
}

.progress-circle.p74 .value-bar {
  transform: rotate(266deg);
}

.progress-circle.p75 .value-bar {
  transform: rotate(270deg);
}

.progress-circle.p76 .value-bar {
  transform: rotate(274deg);
}

.progress-circle.p77 .value-bar {
  transform: rotate(277deg);
}

.progress-circle.p78 .value-bar {
  transform: rotate(281deg);
}

.progress-circle.p79 .value-bar {
  transform: rotate(284deg);
}

.progress-circle.p80 .value-bar {
  transform: rotate(288deg);
}

.progress-circle.p81 .value-bar {
  transform: rotate(292deg);
}

.progress-circle.p82 .value-bar {
  transform: rotate(295deg);
}

.progress-circle.p83 .value-bar {
  transform: rotate(299deg);
}

.progress-circle.p84 .value-bar {
  transform: rotate(302deg);
}

.progress-circle.p85 .value-bar {
  transform: rotate(306deg);
}

.progress-circle.p86 .value-bar {
  transform: rotate(310deg);
}

.progress-circle.p87 .value-bar {
  transform: rotate(313deg);
}

.progress-circle.p88 .value-bar {
  transform: rotate(317deg);
}

.progress-circle.p89 .value-bar {
  transform: rotate(320deg);
}

.progress-circle.p90 .value-bar {
  transform: rotate(324deg);
}

.progress-circle.p91 .value-bar {
  transform: rotate(328deg);
}

.progress-circle.p92 .value-bar {
  transform: rotate(331deg);
}

.progress-circle.p93 .value-bar {
  transform: rotate(335deg);
}

.progress-circle.p94 .value-bar {
  transform: rotate(338deg);
}

.progress-circle.p95 .value-bar {
  transform: rotate(342deg);
}

.progress-circle.p96 .value-bar {
  transform: rotate(346deg);
}

.progress-circle.p97 .value-bar {
  transform: rotate(349deg);
}

.progress-circle.p98 .value-bar {
  transform: rotate(353deg);
}

.progress-circle.p99 .value-bar {
  transform: rotate(356deg);
}

.progress-circle.p100 .value-bar {
  transform: rotate(360deg);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="progress-circle">
  <span id="seconds">0</span>
  <div class="left-half-clipper">
    <div class="first50-bar"></div>
    <div class="value-bar"></div>
  </div>
</div>


注释:

  • 您的CSS要求当百分比超过50%时,应应用类over50。我添加了一行,当值超过50时添加此类。此外,由于这些样式具有不同的颜色,因此您会注意到绿色的条形出现在> 50处。如果您不希望这样做,则只需将绿色条更改为与另一条相同的颜色(红色)。

  • 我已将片段中经常更新的两个元素存储为变量。这会将整个脚本限制为两次DOM查找,而不是每秒 两次。