🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

6211閲覧

Chart.jsのレスポンス対応で、ラベルのフォントサイズだけを変更させたいです。

beginner.tanaka

総合スコア23

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

1グッド

1クリップ

投稿2020/11/29 16:05

編集2020/11/29 16:12

前提・実現したいこと

Chart.jsのレーダーチャートを実装しているのですが、
iPhoneのデバイス幅にすると、ラベルの文字が大きすぎる為、ラベルの文字だけ小さく設定したいです。
ラベルの文字というのは、options, scalefontSizeの事を指しております。
イメージ説明

ご教授のほど、よろしくお願い致します。

現状

optionsのresponsive: trueを指定すると、無駄に横の余白があり、レーダーチャートが小さくなってしまいます。
そのため、responsive: falseに設定し、レーダーチャートが生成した際に自動で設定されるwidthheightは、横幅が500px以下の場合のみ.removeAttribute('style')で削除し、CSSでwidthheightを設定し直しています。
この結果、グラフは大きく表示されるようになったのですが、ラベルの文字数も大きくなり、ここだけを小さくしたいと思っていたのですが、調べても解決につながる情報はありませんでした。

###参考にした資料
参考資料
上記のリンクに、下記のコードが記載されており、参考にして記述したのですが、情報が古い為か記述方法が間違っているらしく、エラーがでてしまいます。

if (window.matchMedia('screen and (min-width:768px)').matches) { //768px以上のデスクトップでの処理 var options = { // 略 legend: { labels: { boxWidth: 20, fontSize: 12 // PC用 } } // 略 }; } else { //スクリーンサイズが768pxより小さい時の処理 var options = { // 略 legend: { labels: { boxWidth: 20, fontSize: 8 // スマホ用 } } // 略 }; }

該当のソースコード

html

1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <meta charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <title>Document</title> 7 <link rel="stylesheet" href="style.css" /> 8 <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.min.js" integrity="sha512-d9xgZrVZpmmQlfonhQUvTR7lMPtO7NkZMkA0ABN3PHCbKA5nqylQ/yWlFAyY6hYgdF1Qh6nYiuADWwKB4C2WSw==" crossorigin="anonymous"></script> 9 <script> 10 window.addEventListener('DOMContentLoaded', ()=>{ 11 new Chart(document.getElementById("myChart"),{ 12 type: 'radar', 13 data: { 14 labels: ["タイプA", "タイプB", "タイプC", "タイプD"], 15 datasets: [{ 16 label: 'A_kun', 17 borderColor: "rgba(0,0,80,1)", 18 data: [8, 6, 9, 8] 19 }] 20 }, 21 options: { 22 responsive: false, 23 legend:{ 24 position:'bottom' 25 }, 26 scale: { 27 pointLabels:{ 28 fontSize: 16, 29 fontColor: "rgb(129, 109, 109)" 30 }, 31 ticks: { 32 min: 0, 33 max: 10, 34 stepSize: 2 35 }, 36 gridLines:{ 37 display: true, 38 color: "rgb(129, 109, 109)" 39 } 40 } 41 } 42 }) 43 if(window.matchMedia('(max-width:500px)').matches){ 44 var chartStyle = document.getElementById("myChart") 45 chartStyle.removeAttribute('style'); 46 } 47}); 48 </script> 49</head> 50<body> 51 <canvas id="myChart"></canvas> 52</body> 53</html>

CSS

1#myChart{ 2 object-fit: cover; 3 width: 400px; 4 height: 300px; 5}

ご教授のほど、よろしくお願い致します。

退会済みユーザー👍を押しています

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

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

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

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

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

guest

回答1

0

ベストアンサー

js

1scale: { 2 pointLabels:{ 3 fontSize: 16,

この fontSize の調整でいかがでしょう。

追記

js

1var myChart = new Chart(document.getElementById("myChart"),{ 2... 3}) 4if( window.matchMedia('(min-width: 500px)').matches) { 5 myChart.options.scale.pointLabels.fontSize = 13; 6} else if ( window.matchMedia('min-width: 1000px)').matches) { 7 myChart.options.scale.pointLabels.fontSize = 18; 8} 9}); 10</script>

フォントサイズは変化するのですが、ウインドウ幅が大きいとフォントサイズが小さくなってしまうようで何か調整が必要かもしれません。

投稿2020/12/01 13:20

編集2020/12/01 15:06
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

beginner.tanaka

2020/12/01 13:57

回答いただきありがとございます! fontSizeのところを画面の大きさによって、数値を変えたいのですが、それができない状況です。 if文を使用すると、入力エラーが出てしまいます。 pointLabels:{ if( window.matchMedia('(min-width: 500px)').matches) { fontSize: 13 } else if ( window.matchMedia('min-width: 1000px)').matches) { fontSize: 18 } },
beginner.tanaka

2020/12/02 13:57

回答ありがとうございます! 教えていただいたコードを使用して、無事に解決する事ができました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問