前提・実現したいこと
chart.jsで棒グラフを作成しました。
そこで、スクロールしたら起動するもの(グラフがにゅっと出てくる)
になったのですがこちらを繰り返したいのです。
現在は1回しか起動しないものになっています。
jsに慣れていないもので、調べたのですが解決できませんでしたので
どうかよろしくお願い致します。
該当のソースコード
// 棒グラフ var chartEl1 = document.getElementById("graph1"); var chartEl2 = document.getElementById("graph2"); var chartFlag1 = false; var chartFlag2 = false; // 1つ目のグラフ var chartFunc1 = function() { var ctx = chartEl1.getContext('2d'); ctx.canvas.height = 300; chart = new Chart(ctx, { type: 'bar', data: { labels: ["HTML5", "CSS3", "Sass", "Javascript", "PHP", "WordPress"], datasets: [{ label: "Programing level", backgroundColor: "rgba(0,73,163,0.6)", data: [20, 18, 15, 12, 5, 15] }] }, options: { legend: { labels: { fontColor: "#0049A3", fontSize: 14 } }, scales: { //縦軸の設定 yAxes: [{ //目盛りの設定 ticks: { //開始値を0にする beginAtZero: true, } }] } } }); }; // 2つ目のグラフ var chartFunc2 = function() { var ctx = chartEl2.getContext('2d'); ctx.canvas.height = 300; chart = new Chart(ctx, { type: 'bar', data: { labels: ["Photoshop", "Illustrator", "XD", "Dreamweaver", "VScode"], datasets: [{ label: "Tool level", backgroundColor: "rgba(0,73,163,0.6)", data: [13, 20, 15, 10, 18] }] }, options: { legend: { labels: { fontColor: "#0049A3", fontSize: 14 } }, scales: { //縦軸の設定 yAxes: [{ //目盛りの設定 ticks: { //開始値を0にする beginAtZero: true, } }] } } }); }; // スクロール処理 var graphAnim = function() { var wy = window.pageYOffset, wb = wy + screen.height - 400, // スクリーンの最下部位置を取得 // wb = wy + window.innerHeight, // ブラウザの最下部位置を取得 // チャートの位置を取得 chartElPos1 = wy + chartEl1.getBoundingClientRect().top, chartElPos2 = wy + chartEl2.getBoundingClientRect().top; // チャートの位置がウィンドウの最下部位置を超えたら起動 if ( wb > chartElPos1 && chartFlag1 == false ) { chartFunc1(); chartFlag1 = true; } if ( wb > chartElPos2 && chartFlag2 == false ) { chartFunc2(); chartFlag2 = true; } }; window.addEventListener('load', graphAnim); // 読み込み時の処理 window.addEventListener('scroll', graphAnim); // スクロール時の処理
あなたの回答
tips
プレビュー