Sunday, June 2, 2024
 Popular · Latest · Hot · Upcoming
63
rated 0 times [  69] [ 6]  / answers: 1 / hits: 36546  / 11 Years ago, thu, september 12, 2013, 12:00:00

I am trying to use the pie chart from Chart.js (http://www.chartjs.org/docs/#pieChart-exampleUsage). Everything works smooth, but the animation happens as soon as the page loads, but since the user has to scroll down to see the chart, they won't see the animation. Is there anyway I can make the animation to start only when scrolled to that position? Also if possible, is it possible to animate everytime when that chart becomes into view?



My code is as follows:



<canvas id=canvas height=450 width=450></canvas>
<script>
var pieData = [
{
value: 30,
color:#F38630
},
{
value : 50,
color : #E0E4CC
},
{
value : 100,
color : #69D2E7
}

];

var myPie = new Chart(document.getElementById(canvas).getContext(2d)).Pie(pieData);

</script>

More From » jquery

 Answers
32

You can combine the check for whether something is viewable with a flag to keep track of whether the graph has been drawn since it appeared in the viewport (though doing this with the plugin bitiou posted would be simpler):



http://jsfiddle.net/TSmDV/



var inView = false;

function isScrolledIntoView(elem)
{
var docViewTop = $(window).scrollTop();
var docViewBottom = docViewTop + $(window).height();

var elemTop = $(elem).offset().top;
var elemBottom = elemTop + $(elem).height();

return ((elemTop <= docViewBottom) && (elemBottom >= docViewTop));
}

$(window).scroll(function() {
if (isScrolledIntoView('#canvas')) {
if (inView) { return; }
inView = true;
new Chart(document.getElementById(canvas).getContext(2d)).Pie(data);
} else {
inView = false;
}
});

[#75726] Wednesday, September 11, 2013, 11 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
stephonkeandrer

Total Points: 392
Total Questions: 94
Total Answers: 100

Location: Tajikistan
Member since Sun, Aug 29, 2021
3 Years ago
;