質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

2回答

421閲覧

canvasチャートの表示指定について

MOMONUTS

総合スコア43

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2018/03/23 02:00

chart.jsを使いドーナツチャートを作り、カウンターjsで数値をカウントさせるものを
ページの途中に設置したいと思っております。
動き自体はこのような形です。
http://me.hateblo.jp/entry/2013/11/26/213212

動作自体はきちんと出来るのですが、そのセクションにたどり着く前にアニメーションが終わってしまいます。

チャートがあるセクションにたどり着いた際にアニメーションを開始させるには、どの様な指定をすれば良いのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

IntersectionObserverを使って, ドーナツチャートがスクリーンに入った(入りきった)ことを検知してからアニメーションを開始するようすればよいでしょう.

IntersectionObserverの使い方の例

JavaScript

1const observer = new IntersectionObserver( 2 changes => changes[0].intersectionRatio >= 1 ? draw() : null, 3 {threshold: 1} 4); 5observer.observe(canvas); 6function draw(){ 7 canvas.width = canvas.height = 200; 8 const ctx = canvas.getContext("2d"); 9 ctx.fillStyle = "blue"; 10 ctx.fillRect(0, 0, 200, 200); 11 observer.unobserve(canvas); 12}

参考
https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver

投稿2018/03/23 02:34

編集2018/03/23 03:22
defghi1977

総合スコア4756

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MOMONUTS

2018/03/23 02:55 編集

ご回答ありがとうございます。 IntersectionObserverというものがあるのですね!! 参考ページを拝見し、どういうものかは理解出来たのですが、それをどこに入れれば良いのか分からずで.... 今ドーナツチャートの指定部分は <script> var data = [ { value: 10, color:"#000" }, { value : 20, color:"#111" }, { value : 30, color:"#222" }, { value : 40, color:"#333" } ]; var ctx = document.getElementById("mychart").getContext("2d"); new Chart(ctx).Doughnut(data,{ segmentShowStroke : false, segmentStrokeWidth : 1, percentageInnerCutout :60, animation : true, animationSteps : 200, animationEasing : "easeOutQuint", animateRotate : true, animateScale : false, onAnimationComplete : null }); </script> の様にしており、カウンター部分は <div class="per11"> <span class="count" data-num="10">0</span><span class="per">%</span> </div> の様になっております。 この中にIntersectionObserver指定を入れ込む形になるのでしょうか。 初歩的質問で大変申し訳ございませんが、ご教授願えれば幸いですm(_ _)m
MOMONUTS

2018/03/23 12:04

色々調べたのですが、IntersectionObserverはまだ不安定だったりブラウザによっては対応していない様ですので、別の方法があればと模索中です。
defghi1977

2018/03/23 12:08

JavaScriptによるpolyfillもあるようなので, いろいろ試してみて下さい.
guest

0

自己解決

inview.jsを使うことで解決いたしました。
ありがとうございました。

投稿2018/03/27 13:55

MOMONUTS

総合スコア43

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

defghi1977

2018/03/27 13:57

できれば配布サイトなどへのリンクを追記願います.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問