滚动到该部分时如何使Chart.js动画?

我正在尝试使用Chart.js中的饼图( http://www.chartjs.org/docs/#pieChart-exampleUsage )。 一切顺利,但动画会在页面加载后立即发生,但由于用户必须向下滚动才能看到图表,因此他们不会看到动画。 无论如何我只能在滚动到该位置时才能启动动画? 如果可能的话,每当该图表进入视图时,是否可以进行动画处理?

我的代码如下:

  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);  

您可以结合使用标记查看是否可以查看某些内容,以跟踪图形是否已在视口中显示(尽管使用插入的插件执行此操作会更简单):

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; } }); 

我不知道你是否能做到这一点,我有同样的问题,并以这种简单的方式解决它没有任何插件,请查看:

 $(window).bind("scroll", function(){ $('.chartClass').each(function(i){ var dougData = [ {value: 100, color:"#6abd79"}, {value: 20, color:"#e6e6e6"} ]; var graphic = new Chart(document.getElementById("html-charts").getContext("2d")).Doughnut(dougData, options); $(window).unbind(i); }); }); 

我遇到了与Chart.js相同的问题,并找到了一个非常好的解决方案。 GitHub上有一个包,由FVANCOP称为ChartNew.js。 他扩展了它并添加了几个function。

查看示例,通过向下滚动绘制图表。

声明是负责任的

 dynamicDisplay : true 

这就是你想要的:

滚动后检查元素是否可见

下次请检查是否已有答案;)

或者: jquery.appear