A circle progress bar made with CSS transitions, SVG, and some JS to control the percentage of completion.
Forked from Jon Christensen's Pen SVG Circle Progress.
A Pen by Captain Anonymous on CodePen.
| <h1>SVG Circle Progress</h1> | |
| <h2>Based off of CSS3 circle progress bars</h2> | |
| <div id="cont" data-pct="100"> | |
| <svg id="svg" width="200" height="200" viewPort="0 0 100 100" version="1.1" xmlns="http://www.w3.org/2000/svg"> | |
| <circle r="90" cx="100" cy="100" fill="transparent" stroke-dasharray="565.48" stroke-dashoffset="0"></circle> | |
| <circle id="bar" r="90" cx="100" cy="100" fill="transparent" stroke-dasharray="565.48" stroke-dashoffset="0"></circle> | |
| </svg> | |
| </div> | |
| <label for="percent">Type a percent!</label> | |
| <input id="percent" name="percent"> |
| $('#percent').on('change', function(){ | |
| var val = parseInt($(this).val()); | |
| var $circle = $('#svg #bar'); | |
| if (isNaN(val)) { | |
| val = 100; | |
| } | |
| else{ | |
| var r = $circle.attr('r'); | |
| var c = Math.PI*(r*2); | |
| if (val < 0) { val = 0;} | |
| if (val > 100) { val = 100;} | |
| var pct = ((100-val)/100)*c; | |
| $circle.css({ strokeDashoffset: pct}); | |
| $('#cont').attr('data-pct',val); | |
| } | |
| }); |
| <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> |
| #svg circle { | |
| stroke-dashoffset: 0; | |
| transition: stroke-dashoffset 1s linear; | |
| stroke: #666; | |
| stroke-width: 1em; | |
| } | |
| #svg #bar { | |
| stroke: #FF9F1E; | |
| } | |
| #cont { | |
| display: block; | |
| height: 200px; | |
| width: 200px; | |
| margin: 2em auto; | |
| box-shadow: 0 0 1em black; | |
| border-radius: 100%; | |
| position: relative; | |
| } | |
| #cont:after { | |
| position: absolute; | |
| display: block; | |
| height: 160px; | |
| width: 160px; | |
| left: 50%; | |
| top: 50%; | |
| box-shadow: inset 0 0 1em black; | |
| content: attr(data-pct)"%"; | |
| margin-top: -80px; | |
| margin-left: -80px; | |
| border-radius: 100%; | |
| line-height: 160px; | |
| font-size: 2em; | |
| text-shadow: 0 0 0.5em black; | |
| } | |
| input { | |
| color: #000; | |
| } | |
| /* Make things perty */ | |
| html { height: 100%;} | |
| body { font-family: 'Source Sans Pro', Helvetica, Arial, sans-serif; background: url(http://www.jmchristensendesign.com/wp-content/themes/jmcdsn/images/intro_default-background.jpg); color: #fff; height: 100%; padding-top: 2em; text-align: center;} | |
| h1, h2{ margin: 0; text-transform: uppercase;text-shadow: 0 0 0.5em black;} | |
| h2 { font-weight: 300} | |
| input { border: 1px solid #666; background: #333; color: #fff; padding: 0.5em; box-shadow: none; outline: none !important; margin: 1em auto; text-align: center;} |
| <link href="http://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400" rel="stylesheet" /> |
A circle progress bar made with CSS transitions, SVG, and some JS to control the percentage of completion.
Forked from Jon Christensen's Pen SVG Circle Progress.
A Pen by Captain Anonymous on CodePen.