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

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

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

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

JavaScript

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

Q&A

解決済

1回答

816閲覧

javascriptで変数にHTMLタグを入れる(?)には?(分数を描写したい)

kihokutarou

総合スコア60

canvas

HTML5の<canvas>要素用のタグです。CanvasはHTML5から導入された、二次元の図形描写が可能な要素です。

JavaScript

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

0グッド

0クリップ

投稿2021/11/25 04:18

fabric.jsを使用してcanvas要素を操作しています。

javascript

1 var Canvas = new fabric.Canvas('mycanvas'); 2 var t ="がんばろう!"; 3 4 var rect = new fabric.Text(t,{ 5 left: 80, top: 80, 6 fill: 'white', 7 stroke: 'white', 8 strokeWidth: 2, 9 fontFamily: "UD デジタル 教科書体 N-R", 10 fontSize: window.innerWidth/7 11 }); 12 Canvas.add(rect);

これまではrectに対して数値や文字列を入れることで問題なく動いてきました。
今回ただの文字列ではなく、分数を表記したと思います。

css

1 .fraction{ 2 display: inline-block; 3 vertical-align: middle; 4 text-align: center; 5 font-size: 5vw; 6 color: aliceblue; 7 } 8 .fraction_n,.fraction_d{ 9 display: block; 10 } 11 .fraction_n{ 12 border-bottom: 5px solid rgb(218, 213, 213); 13 }

html

1 <p> 2 <span class="fraction"> 3 <span class="fraction_n">2</span> 4 <span class="fraction_d">3</span> 5 </span> 6 </p>

つまり変数rectに上記のHTMLタグを代入したいのですが、そのやり方がよくわかりません。createElementやinnerHTMLなどはそもそもHTMLの要素に働きかけるものだと思いますので、違う方法だと思いますが、これが分かりません。canvas内の要素といて操作をしたいので、fabricを使用しながらcanvasに描写したいのです。

どなたか知恵やアドバイスを頂けないでしょうか。

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

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

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

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

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

yambejp

2021/11/25 04:21

結局具体的にどう表示されればよいのですか? 前後のつながりは気にしないで良い?
kihokutarou

2021/11/25 04:26

現在初期状態の「がんばろう」がcanvas内に描写されています。移動拡大縮小できる形です。このテキストに代わって任意の分数を入れたいのです。 前後のつながり、というのが私のソースのことであれば気にされないで構いません。分数自体の前後のことであれば、こちらも2/3が表記できれば応用させていきます。 最終的にはボタンを押すたびに分数のたし算が出題される形を目指しています。 ※現在は整数のたし算ひき算かけ算わり算等を置いています。
yambejp

2021/11/25 04:30

「2/3」は分数ですが、別の表記ということですよね? 具体的に図示されたほうがよいでしょう。多分回答しても見た目が違うと言い出すと思います
yambejp

2021/11/25 04:37

文字の表示についてはcanvasよりsvgの方がすんなりいくと思いますが canvasがマストなのでしょうか?
kihokutarou

2021/11/25 04:42

svgについては詳しくありませんが、簡単に文字や注釈を書き込めるのとこれまでの自分自身の知識としてcanvasをマストとしたく思います。確かに画像(?)やテキストを貼り付ける方がすんなりいくかなぁとも思いますが勉強する時間がt理想にありません。
guest

回答1

0

ベストアンサー

Canvasの中での文字描画は単純な文字列を描く機能しかなく、HTMLやCSSで装飾した要素をペイントすることはできません。対処としては、

  • Canvas の外にHTML要素を置いて、CSSで上手いことCanvasの上に重ねる
  • Canvas 内で分子と分母と横線を個別に描く
  • SVGを生成してHTMLImageElementにロードして、Canvas に drawImage() で描画する

などです。

投稿2021/11/25 04:32

int32_t

総合スコア21695

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問