2017-04-18 66 views
1

仅当用户滚动页面并到达图表的div时,才想显示我的图表。仅当用户在特定DIV上滚动时才显示chart.js动画

现在图表会将页面加载到一起,当我到达图表时,它会被收费。

我用Chart.js制作这个图表。

这是网站的链接:我有图表下的“技能”的声音 http://www.matteoschiatti.it/

这是我的技能部分:

<section id="skills" class="skills-section"> 

    <div id="counter"> 
     <canvas id="polarChart" height="100%"></canvas> 
    </div> 

</section> 

JS:

 $(function() { 
    var oTop = $('#counter').offset().top - window.innerHeight; 
    var oBottom = $('#contact').offset().top - window.innerHeight; 
    var chartHidden = true; 
    $(window).scroll(function(){ 
     var pTop = $('body').scrollTop(); 
     if ((pTop > oTop) && (chartHidden)) { 
      chartHidden = false; 
      start_count(); 
     } else if (pTop < oTop) { 
      chartHidden = true; 
     } 

     if ((pTop > oBottom)) { 
      chartHidden = true; 
     } 
    }); 
}); 

function start_count(){ 
    var ctx = document.getElementById("polarChart").getContext('2d'); 
    var myChart = new Chart(ctx, { 
     type: 'polarArea', 
     data: { 
      labels: ["Php", "Css", "Html", "Wordpress", "Magento", "Photoshop", "Web Analisis", "Seo"], 
      datasets: [{ 
       backgroundColor: [ 
        "#0066ff", 
        "#cc3333", 
        "#ffba02", 
        "#009966", 
        "#ff6600", 
        "#db01de", 
        "#00cc33", 
        "#00ccff" 
       ], 
       data: [65, 85, 90, 95, 75, 75, 85, 85] 
      }] 
     } 
    }); 
} 
+0

看到[这个答案](http://stackoverflow.com/a/488073/5090771)知道什么时候_user滚动页面并到达图表的div _... – WhiteHat

+0

这个解决方案让我明白如果一个元素在页面的可见部分。但我无法理解,只有当用户向下滚动时才能显示我的图表。你能帮我理解吗?我应该在身体底部添加js代码吗?但是之后? – Matteo

+0

不知道我跟着,你在听'滚动'事件吗?当滚动事件被触发时,使用提供的答案知道什么时候可见,何时可见绘制图表... – WhiteHat

回答

1

一旦图表变得可见后制定,
你不想保持与每一个卷轴绘画

使用一个标志来知道它何时第一次被绘制,请参阅chartHidden ...

$(function() { 
    var oTop = $('#counter').offset().top - window.innerHeight; 
    var chartHidden = true; 
    $(window).scroll(function(){ 
     var pTop = $('body').scrollTop(); 
     if ((pTop > oTop) && (chartHidden)) { 
      chartHidden = false; 
      start_count(); 
     } 
    }); 
}); 

function start_count(){ 
    var ctx = document.getElementById("polarChart").getContext('2d'); 
    var myChart = new Chart(ctx, { 
     type: 'polarArea', 
     data: { 
      labels: ["Php", "Css", "Html", "Wordpress", "Magento", "Photoshop", "Web Analisis", "Seo"], 
      datasets: [{ 
       backgroundColor: [ 
        "#0066ff", 
        "#cc3333", 
        "#ffba02", 
        "#009966", 
        "#ff6600", 
        "#db01de", 
        "#00cc33", 
        "#00ccff" 
       ], 
       data: [65, 85, 90, 95, 75, 75, 85, 85] 
      }] 
     } 
    }); 
} 
+0

是否还有一种方法来加载图表所有时间我通过这个div(并删除图表所有时间我移动另一个视图)?我有这个问题的脚本吗? http://stackoverflow.com/questions/487073/check-if-element-is-visible-after-scrolling/488073#488073 – Matteo

+1

只需要跟踪'pTop'和'oTop',也许底部也是如此,如果可以滚动过去 - 所以当发生pTop WhiteHat

+0

我添加了'else if(pTop Matteo