In this article, we will learn about how to create animated pie chart using css3 and simple jQuery with example and live demo.
The preview are shown as below-
To create animated pie chart write the code as shown below-
HTML:
Now save the file and run on browser to view the animated pie chart.
HTML:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Create Animated Pie Chart Using CSS3 and Simple jQuery with Example | webcodelogics.com</title>
<!-- jQuery Library Link -->
<script src="https://code.jquery.com/jquery-3.1.0.min.js" type="text/javascript"></script>
<style>
.circular_chart_main {
width: 330px;
margin: 100px auto;
border: 1px solid #ddd;
font-family: Arial;
padding: 15px;
}
.circular_chart_main h4.head {
border-left: medium none;
font-size: 12px;
font-weight: bold;
margin-bottom: 7px;
}
.circular_chart_main h4.head span {
float: right;
}
@keyframes bake-graph {
from {
transform: rotate(0deg) translate3d(0,0,0);
}
}
.chart {
display: inline-block;
vertical-align: middle;
}
.graph {
height: 150px;
width: 150px;
margin-right: 15px;
position: relative;
}
.graph::before {
content: "";
display: block;
position: absolute;
z-index: 1;
width: 70px;
height: 70px;
background: #EEE;
border-radius: 50%;
top: 40px;
left: 40px;
}
.slice {
position: absolute;
width: 150px;
height: 150px;
clip: rect(0px, 150px, 150px, 75px);
animation: bake-graph 1s;
color: #333;
}
.slice span {
display: block;
position: absolute;
top: 0;
left: 0;
background-color: black;
width: 150px;
height: 150px;
border-radius: 50%;
clip: rect(0px, 150px, 150px, 75px);
}
.legend {
list-style-type: none;
padding: 0;
margin: 0;
font-size: 13px;
width: 155px;
}
.legend li {
line-height: 12px;
height: 12px;
margin-bottom: 9px;
padding-left: 7px;
border-left: 12px solid #ddd;
}
.legend em {
font-style: normal;
}
.legend span {
float: right;
}
</style>
<script>
$(document).ready(function () {
createGraph(".circular_chart_main .chart .legend", ".circular_chart_main .chart.graph");
});
function createGraph(dataElement, graphElement) {
var listData = [];
$(dataElement + " span").each(function () {
listData.push(Number($(this).html()));
});
var listTotal = 0;
for (var i = 0; i < listData.length; i++) {
listTotal += listData[i];
}
var offset = 0;
var color = ["#FF6347", "#6495ED", "#FFA500", "#6B8E23", "#CA6FF8"];
for (var i = 0; i < listData.length; i++) {
var size = sliceSize(listData[i], listTotal);
iterateSlices(size, graphElement, offset, i, 0, color[i]);
$(dataElement + " li:nth-child(" + (i + 1) + ")").css("border-color", color[i]);
offset += size;
}
}
function sliceSize(dataNum, dataTotal) {
return (dataNum / dataTotal) * 360;
}
function addSlice(sliceSize, graphElement, offset, sliceID, color) {
$(graphElement).append("<div class='slice " + sliceID + "'><span></span></div>");
var offset = offset - 1;
var sizeRotation = -179 + sliceSize;
$(graphElement + " ." + sliceID).css({
"transform": "rotate(" + offset + "deg) translate3d(0,0,0)"
});
$(graphElement + " ." + sliceID + " span").css({
"transform": "rotate(" + sizeRotation + "deg) translate3d(0,0,0)",
"background-color": color
});
}
function iterateSlices(sliceSize, graphElement, offset, dataCount, sliceCount, color) {
var sliceID = "s" + dataCount + "-" + sliceCount;
var maxSize = 179;
if (sliceSize <= maxSize) {
addSlice(sliceSize, graphElement, offset, sliceID, color);
} else {
addSlice(maxSize, graphElement, offset, sliceID, color);
iterateSlices(sliceSize - maxSize, graphElement, offset + maxSize, dataCount, sliceCount + 1, color);
}
}
</script>
</head>
<body>
<div class="circular_chart_main">
<div class="chart graph"></div>
<div class="chart">
<h4 class="head">Total Vehicals <span>310</span></h4>
<ul class="legend">
<li><em>Cars </em><span>120</span></li>
<li><em>Motorbikes </em><span>75</span></li>
<li><em>Vans </em><span>45</span></li>
<li><em>Buses </em><span>60</span></li>
<li><em>Trains </em><span>10</span></li>
</ul>
</div>
</div>
</body>
</html>
Now save the file and run on browser to view the animated pie chart.








0 comments:
Post a Comment