| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- /**
- * Inspiration for this project found at:
- * https://markus.oberlehner.net/blog/pure-css-animated-svg-circle-chart
- * 1. The `reverse` animation direction plays the animation backwards
- * which makes it start at the stroke offset 100 which means displaying
- * no stroke at all and animating it to the value defined in the SVG
- * via the inline `stroke-dashoffset` attribute.
- * 2. Rotate by -90 degree to make the starting point of the
- * stroke the top of the circle.
- * 3. Using CSS transforms on SVG elements is not supported by Internet Explorer
- * and Edge, use the transform attribute directly on the SVG element as a
- * . workaround.
- */
- .circle-chart {
- width: 200px;
- height: 200px;
- }
- .circle-chart__circle {
- stroke: #00acc1;
- stroke-width: 2;
- stroke-linecap: square;
- fill: none;
- animation: circle-chart-fill 2s reverse; /* 1 */
- transform: rotate(-90deg); /* 2, 3 */
- transform-origin: center; /* 4 */
- }
- /**
- * 1. Rotate by -90 degree to make the starting point of the
- * stroke the top of the circle.
- * 2. Scaling mirrors the circle to make the stroke move right
- * to mark a positive chart value.
- * 3. Using CSS transforms on SVG elements is not supported by Internet Explorer
- * and Edge, use the transform attribute directly on the SVG element as a
- * . workaround.
- */
- .circle-chart__circle--negative {
- transform: rotate(-90deg) scale(1,-1); /* 1, 2, 3 */
- }
- .circle-chart__background {
- stroke: #efefef;
- stroke-width: 2;
- fill: none;
- }
- .circle-chart__info {
- animation: circle-chart-appear 2s forwards;
- opacity: 0;
- transform: translateY(0.3em);
- }
- .circle-chart__percent {
- alignment-baseline: central;
- text-anchor: middle;
- font-size: 5px;
- fill:#fff;
- }
- .circle-chart__subline {
- alignment-baseline: central;
- text-anchor: middle;
- font-size: 4px;
- fill: #799dff;
- }
- .success-stroke {
- stroke: #00C851;
- }
- .warning-stroke {
- stroke: #ffbb33;
- }
- .danger-stroke {
- stroke: #ff4444;
- }
- @keyframes circle-chart-fill {
- to { stroke-dasharray: 0 100; }
- }
- @keyframes circle-chart-appear {
- to {
- opacity: 1;
- transform: translateY(0);
- }
- }
|