2017-04-18 13 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

私は「scroll」イベントを聞いていますか?スクロールイベントが発生したときに、表示されているときに可視であることを知るために提供された回答を使用します。 – 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

関連する問題