WEBサイト制作・アプリ開発・システム開発・ブランディングデザイン制作に関するご相談はお気軽にご連絡ください。
構想段階からじっくりとヒアリングし、お客様の課題にあわせたアプローチ手法でお客様の“欲しかった”をカタチにしてご提案いたします。
Blog スタッフブログ
JavaScript
WEB制作
Chart.jsを画面スクロールした時に描画する方法
WEB制作担当の木戸です。
Chart.jsの描画アニメーションのタイミングを変更する方法をご紹介します。
「Chart.js」を普通に実装するとアニメーションはページを読みに合わせて描画されるためファーストビューの外のグラフのアニメーションを見ることができません。
そこで、グラフの設定を行ったjsに手を加えます。
事前に「Chart.js」の必要なファイルの読み込みをおこないます。
設定方法
手順.1
htmlファイルにcanvasタグで描画するブロックを用意します。
<canvas id="graph_name">
</canvas>
手順.2
適当な名前のjsファイルを作成してそちらに記述します。
canvasのidを指定し、後ほど使用するフラグを設置絵します。
var chart = document.getElementById("graph_name"); //canvasに設定したidを指定
var chart_flag = false; //フラグを設定
手順.3
グラフの描画設定を行います。
例としてドーナツ型グラフを使用していますが、他のタイプのグラフでも問題ありません。
オプションの設定は公式サイトをご覧ください。
//グラフの描画設定
var chartItem = function() {
var context = chart.getContext('2d');
chart = new Chart(context, {
type: 'doughnut',
data: {
labels: ["ラベル1", "ラベル2"],
datasets: [{
borderWidth: 0,
backgroundColor: ["#000000", "#ffffff"],
data: [70, 30]
}]
},
options: {
responsive: true,
cutout: '75%',
}
});
};
手順.4
画面の高さから画面上からのコンテンツまでの距離と画面の高さを引いて0になったら描画されます。
描画されたタイミングでchart_flagがtrueになります。
//グラフの描画タイミング
var chartTiming = function() {
var target = $(chart).offset().top; //画面上からのコンテンツまでの距離
var scroll = $(window).scrollTop(); //スクロール量を取得
var height = $(window).height(); //画面の高さを取得
if ( scroll > target - height && chart_flag == false ) {
chartItem();
chart_flag = true;
}
};
window.addEventListener('load', chartTiming);
window.addEventListener('scroll', chartTiming);
もし、画面下から100pxの位置で実行したい場合は、
var height = $(window).height();
を次のように変更します。
100の部分は目的に応じて変更します。
var height = $(window).height() - 100;