Saturday, 5 October 2019

Circle progress bar with Number / Percentage



<!doctype html>
<html lang="en">
   <head>
      <!-- Bootstrap 4 CSS -->
      <link rel="stylesheet" href="css/bootstrap.min.css" />
   </head>
   <body>
      <section class="main-content">
         <div class="col-md-4 mx-auto mt-5 pt-5 col-12" >
            <div>
               <div class="progress" data-percentage="20">
                  <span class="progress-left">
                  <span class="progress-bar"></span>
                  </span>
                  <span class="progress-right">
                  <span class="progress-bar"></span>
                  </span>
                  <div class="progress-value">
                     <div class="text-center">
                        <h1>  <i class="fa fa-users"></i><span class="counter">20</span></h1>
                     </div>
                  </div>
               </div>
            </div>
         </div>
      </section>
      <!-- jQuery first, then Popper.js, then Bootstrap JS -->
      <script src="js/jquery.min.js" ></script>   
      <script src="js/bootstrap.min.js"  ></script>
      <script src="js/popper.min.js" ></script>
      <script  src="js/jquery.counterup.min.js"></script>
      <script  src="js/waypoints.min.js"></script>
      <script type="text/javascript">
         $('.counter').counterUp({
         delay: 10,
         time: 2000
         });
         $('.counter').addClass('animated fadeInDownBig');
         $('h3').addClass('animated fadeIn');
      </script>
      <style type="text/css">
         .progress {
         width: 250px;
         height: 250px;
         background: none;
         position: relative;
         }
         .progress::after {
         content: "";
         width: 100%;
         height: 100%;
         border-radius: 50%;
         border: 20px solid #eee;
         position: absolute;
         top: 0;
         left: 0;
         }
         .progress>span {
         width: 50%;
         height: 100%;
         overflow: hidden;
         position: absolute;
         top: 0;
         z-index: 1;
         }
         .progress .progress-left {
         left: 0;
         }
         .progress .progress-bar {
         width: 100%;
         height: 100%;
         background: none;
         border-width: 20px;
         border-style: solid;
         position: absolute;
         top: 0;
         }
         .progress .progress-left .progress-bar {
         left: 100%;
         border-top-right-radius: 124px;
         border-bottom-right-radius:124px;
         border-left: 0;
         -webkit-transform-origin: center left;
         transform-origin: center left;
         }
         .progress .progress-right {
         right: 0;
         }
         .progress .progress-right .progress-bar {
         left: -100%;
         border-top-left-radius: 124px;
         border-bottom-left-radius: 124px;
         border-right: 0;
         -webkit-transform-origin: center right;
         transform-origin: center right;
         }
         .progress .progress-value {
         position: absolute;
         top: 0;
         left: 0;
         }
         /*
         *
         * ==========================================
         * FOR DEMO PURPOSE
         * ==========================================
         *
         */
         .border-primary{border-color: #ed7d33 !important}
         .rounded-lg {
         border-radius: 1rem;
         }
         .text-gray {
         color: #aaa;
         }
         div.h4 {
         line-height: 1rem;
         }
         .col-md-4 {
         text-align: center;
         padding-bottom: 50px;
         border-right: 1px dashed black;
         }
         .col-md-4:last-child {
         border-right: 0px solid black;
         }
         .counter {
         animation-duration: 1s;
         animation-delay: 0s;
         }
         i {
         font-size: 20px !important;
         }
         @media (max-width: 991px) {
         .col-md-4 {
         border-right: 0px dashed black;
         border-bottom: 1px dashed black;
         width: 50%;
         margin: auto auto;
         }
         .col-md-4:last-child {
         border-bottom: 0px dashed black;
         }
         }
         .progress {
         width: 300px;
         height: 300px;
         line-height: 300px;
         background: none;
         margin: 0 auto;
         box-shadow: none;
         position: relative;
         }
         .progress:after {
         content: "";
         width: 100%;
         height: 100%;
         border-radius: 50%;
         border: 7px solid #eee;
         position: absolute;
         top: 0;
         left: 0;
         }
         .progress > span {
         width: 50%;
         height: 100%;
         overflow: hidden;
         position: absolute;
         top: 0;
         z-index: 1;
         }
         .progress .progress-left {
         left: 0;
         }
         .progress .progress-bar {
         width: 100%;
         height: 100%;
         background: none;
         border-width: 20px;
         border-style: solid;
         position: absolute;
         top: 0;
         border-color: #4caf50;
         }
         .progress .progress-left .progress-bar {
         left: 100%;
         border-top-right-radius: 150px;
         border-bottom-right-radius: 150px;
         border-left: 0;
         -webkit-transform-origin: center left;
         transform-origin: center left;
         }
         .progress .progress-right {
         right: 0;
         }
         .progress .progress-right .progress-bar {
         left: -100%;
         border-top-left-radius: 150px;
         border-bottom-left-radius: 150px;
         border-right: 0;
         -webkit-transform-origin: center right;
         transform-origin: center right;
         }
         .progress .progress-value {
         display: flex;
         border-radius: 50%;
         font-size: 36px;
         text-align: center;
         line-height: 20px;
         align-items: center;
         justify-content: center;
         height: 100%;
         font-weight: 300;
         }
         .progress .progress-value div {
         margin-top: 10px;
         }
         .progress .progress-value span {
         font-size:75px;
         line-height: 273px;
         font-weight: 700;
         text-transform: uppercase;
         }
         /* This for loop creates the necessary css animation names Due to the split circle of progress-left and progress right, we must use the animations on each side. */
         .progress[data-percentage="10"] .progress-right .progress-bar {
         animation: loading-1 1.5s linear forwards;
         }
         .progress[data-percentage="10"] .progress-left .progress-bar {
         animation: 0;
         }
         .progress[data-percentage="20"] .progress-right .progress-bar {
         animation: loading-2 1.5s linear forwards;
         }
         .progress[data-percentage="20"] .progress-left .progress-bar {
         animation: 0;
         }
         .progress[data-percentage="30"] .progress-right .progress-bar {
         animation: loading-3 1.5s linear forwards;
         }
         .progress[data-percentage="30"] .progress-left .progress-bar {
         animation: 0;
         }
         .progress[data-percentage="40"] .progress-right .progress-bar {
         animation: loading-4 1.5s linear forwards;
         }
         .progress[data-percentage="40"] .progress-left .progress-bar {
         animation: 0;
         }
         .progress[data-percentage="50"] .progress-right .progress-bar {
         animation: loading-5 1.5s linear forwards;
         }
         .progress[data-percentage="50"] .progress-left .progress-bar {
         animation: 0;
         }
         .progress[data-percentage="60"] .progress-right .progress-bar {
         animation: loading-5 1.5s linear forwards;
         }
         .progress[data-percentage="60"] .progress-left .progress-bar {
         animation: loading-1 1.5s linear forwards 1.5s;
         }
         .progress[data-percentage="70"] .progress-right .progress-bar {
         animation: loading-5 1.5s linear forwards;
         }
         .progress[data-percentage="70"] .progress-left .progress-bar {
         animation: loading-2 1.5s linear forwards 1.5s;
         }
         .progress[data-percentage="80"] .progress-right .progress-bar {
         animation: loading-5 1.5s linear forwards;
         }
         .progress[data-percentage="80"] .progress-left .progress-bar {
         animation: loading-3 1.5s linear forwards 1.5s;
         }
         .progress[data-percentage="90"] .progress-right .progress-bar {
         animation: loading-5 1.5s linear forwards;
         }
         .progress[data-percentage="90"] .progress-left .progress-bar {
         animation: loading-4 1.5s linear forwards 1.5s;
         }
         .progress[data-percentage="100"] .progress-right .progress-bar {
         animation: loading-5 1.5s linear forwards;
         }
         .progress[data-percentage="100"] .progress-left .progress-bar {
         animation: loading-5 1.5s linear forwards 1.5s;
         }
         @keyframes loading-1 {
         0% {
         -webkit-transform: rotate(0deg);
         transform: rotate(0deg);
         }
         100% {
         -webkit-transform: rotate(36);
         transform: rotate(36deg);
         }
         }
         @keyframes loading-2 {
         0% {
         -webkit-transform: rotate(0deg);
         transform: rotate(0deg);
         }
         100% {
         -webkit-transform: rotate(72);
         transform: rotate(72deg);
         }
         }
         @keyframes loading-3 {
         0% {
         -webkit-transform: rotate(0deg);
         transform: rotate(0deg);
         }
         100% {
         -webkit-transform: rotate(108);
         transform: rotate(108deg);
         }
         }
         @keyframes loading-4 {
         0% {
         -webkit-transform: rotate(0deg);
         transform: rotate(0deg);
         }
         100% {
         -webkit-transform: rotate(144);
         transform: rotate(144deg);
         }
         }
         @keyframes loading-5 {
         0% {
         -webkit-transform: rotate(0deg);
         transform: rotate(0deg);
         }
         100% {
         -webkit-transform: rotate(180);
         transform: rotate(180deg);
         }
         }
         .progress {
         margin-bottom: 1em;
         }
         body{
         font-family: 'Montserrat', sans-serif;
         /* font-family: 'Open Sans', sans-serif;*/
         }
         .progress .progress-value{display: block; width: 100%}
         .progress-value h1{ font-size: 85px !important }
      </style>
   </body>
</html>