Chart Element Radial TAN
CSS Radial Chart Element for the non-top positions
by Stephen Irving
HTML
<div class="set-size charts-container">
<div class="pie-wrapper progress style">
<span class="label">46<span class="smaller">%</span></span>
<div class="pie">
<div class="left-side half-circle"></div>
<div class="right-side half-circle"></div>
</div>
<div class="shadow"></div>
</div>
</div>
SCSS
@import url(https://fonts.googleapis.com/css?family=Roboto:700);
// -- Vars
$radial-progress: 46;
$radial-color: #58B86B;
$shadow-color: #e2e2e2;
$bg-color: #ffffff;
$default-size: 1em;
$label-font-size: $default-size / 4;
$label-font-size-redo: $default-size * 4;
// -- Mixins
@mixin size($width, $height) {
height: $height;
width: $width;
}
@mixin draw-progress($progress, $color) {
.pie {
.half-circle {
border-color: $color;
}
.left-side {
transform: rotate($progress * 3.6deg);
}
@if $progress <= 50 {
.right-side {
display: none;
}
} @else {
clip: rect(auto, auto, auto, auto);
.right-side {
transform: rotate(180deg);
}
}
}
}
// -- selectors
*,
*:before,
*:after {
box-sizing: border-box;
}
html,
body {
background: $bg-color;
font-family: 'Roboto', Tahoma, Geneva, sans-serif;
font-size: 16px;
padding: 10px;
}
.set-size {
font-size: 10em;
}
.charts-container {
&:after {
clear: both;
content: '';
display: table;
}
}
.pie-wrapper {
@include size($default-size, $default-size);
float: left;
margin: 15px;
position: relative;
&:nth-child(3n + 1) {
clear: both;
}
.pie {
@include size(100%, 100%);
clip: rect(0, $default-size, $default-size, $default-size / 2);
left: 0;
position: absolute;
top: 0;
.half-circle {
@include size(100%, 100%);
border: ($default-size / 10) solid $shadow-color;
border-radius: 50%;
clip: rect(0, $default-size / 2, $default-size, 0);
left: 0;
position: absolute;
top: 0;
}
}
.label {
background: $bg-color;
border-radius: 50%;
bottom: $label-font-size-redo / 10;
color: $radial-color;
cursor: default;
display: block;
font-size: $label-font-size;
left: $label-font-size-redo / 10;
line-height: $label-font-size-redo * .70;
position: absolute;
right: $label-font-size-redo / 10;
...