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

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

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

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

CSS

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

Q&A

解決済

1回答

2125閲覧

css javascript 円グラフ 100%超えたときの挙動を変えたい

chocolate_pie

総合スコア26

JavaScript

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

CSS

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

0グッド

0クリップ

投稿2020/04/29 08:34

編集2020/04/29 08:36

前提・実現したいこと

javascriptとcssを使って円グラフを作っているのですが、
100%超えたときの挙動が思うようにいかず困っています。

イメージは、画像のような感じです。
100%を超えた場合、その超えた分のみ色を濃くして残りの色を100%以下で色付けしている色にしたいです。
200%を超えたときは100%を超えたときと同じ挙動にしたいです。

20%
イメージ説明

120%
イメージ説明

50%を超えた時点でjavascriptで分岐しているみたいなのですが、仕組みが分からず自力では解決できませんでした。
書き方が分かる方、教えていただきたいです。よろしくお願いします。

該当のソースコード

HTML

1<div class="progress-pie-chart" data-percent="43"> 2 <div class="ppc-progress"> 3 <div class="ppc-progress-fill"></div> 4 </div> 5 <div class="ppc-percents"> 6 <div class="pcc-percents-wrapper"> 7 <span>%</span> 8 </div> 9 </div> 10</div>

css

1@mixin circle($size) { 2 content: ""; 3 position: absolute; 4 border-radius: 50%; 5 left: calc(50% - #{$size/2}); 6 top: calc(50% - #{$size/2}); 7 width: $size; 8 height: $size; 9} 10 11$size: 200px; 12.progress-pie-chart { 13 width: $size; 14 height: $size; 15 border-radius: 50%; 16 background-color: #E5E5E5; 17 position: relative; 18 &.gt-50 { 19 background-color: #81CE97; 20 } 21} 22.ppc-progress { 23 @include circle($size); 24 clip: rect(0, $size, $size, #{$size/2}); 25 .ppc-progress-fill { 26 @include circle($size); 27 clip: rect(0, #{$size/2}, $size, 0); 28 background: #81CE97; 29 transform: rotate(60deg); 30 } 31 .gt-50 & { 32 clip: rect(0, #{$size/2}, $size, 0); 33 .ppc-progress-fill { 34 clip: rect(0, $size, $size, #{$size/2}); 35 background: #E5E5E5; 36 } 37 } 38} 39.ppc-percents { 40 @include circle(#{$size/1.15}); 41 background: #fff; 42 text-align: center; 43 display: table; 44 span { 45 display: block; 46 font-size: 2.6em; 47 font-weight: bold; 48 color: #81CE97; 49 } 50} 51.pcc-percents-wrapper { 52 display: table-cell; 53 vertical-align: middle; 54} 55 56 57 58body { 59 font-family: Arial; 60 background: #f7f7f7; 61} 62.progress-pie-chart { 63 margin: 50px auto 0; 64}

javascript

1$(function(){ 2 var $ppc = $('.progress-pie-chart'), 3 percent = parseInt($ppc.data('percent')), 4 deg = 360*percent/100; 5 if (percent > 50) { 6 $ppc.addClass('gt-50'); 7 } 8 $('.ppc-progress-fill').css('transform','rotate('+ deg +'deg)'); 9 $('.ppc-percents span').html(percent+'%'); 10});

試したこと

javascriptに%が100以上の場合の分岐点を書いてみましたがおかしなことになってしまい断念しました。

補足情報(FW/ツールのバージョンなど)

初心者で至らない点があると思いますがよろしくお願いします。

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

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

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

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

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

yambejp

2020/04/29 09:41

100%を超えるものはもはや円グラフではないのでは?
退会済みユーザー

退会済みユーザー

2020/04/29 10:14 編集

円グラフは全体を100%として各要素の割合を表すものなので、 100%を超えるという想定では作られていないと思います。
chocolate_pie

2020/04/29 12:43

確かに100%超えるという考え方がおかしかったです。 100%超えないようなデータを扱うようにします。 ご指摘ありがとうございます。
guest

回答1

0

自己解決

円グラフは100%を超えないということで、そもそも円グラフを作る目的を見直して100%超えないような仕様に変更しました。

投稿2020/04/29 12:47

chocolate_pie

総合スコア26

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問