2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

HTML5のcanvasを使ってみたーJavaScriptをどこに書く?

Posted at

canvasを使ってみた

初めてHTML5のcanvasを使ってみました.
理由は,簡単な画像を表示したかったのですが,画像ソフトで作るのも面倒なので,とりあえず試してみたというものです.結果は,うまくいきました.

JavaScriptを書く場所

ここで,迷ったのは,JavaScriptを書く場所です.
私は,HTML文書で数式を表示するのにMathJaxを使っていますが,文書作成時や自分のMac上での作業では,MacのストレージにあるMathJaxを読みに行くようにしていますが,Webサイトにアップする時は,cdn.mathjax.orgに読みに行くようにしています.また文書作成時は,ヘッダーやフッダー,装飾にはこだわりませんが,サイトにアップするときはこれらを付け足すようにしています.
このため,<body> </body> の間を読み取って,これにヘッダーやフッダーを付け足すプログラムを作って処理しています.

ここで,canvasについてネットで調べてみましたが,内容を示すJavaScriptは <head> </head> の間に書いている事例が多いように思いました. しかし,上記処理を行うことを考えると,canvasがあるページのみ,canvas用のJavaScriptを含む違うヘッダーにするのはめんどうくさい.それに妙に長いヘッダーはあまりかっこよくない(個人的趣味).
そこで,色々検索してみると,一般的にJavaScriptは </body> の手前に書くのがいいらしい.

参考サイト
http://wp-p.info/tpl_rep.php?cat=js-biginner&fl=r2

そこで,以下のHTML文書を作り試したところ,うまく表示できました.
私のMac上のSafariでの表示結果は,画像に示すとおりです.

テスト用HTMLの文書

<!DOCTYPE html>
<html>
<head>
<script src="/Users/kk/mathjax/MathJax.js?config=TeX-AMS_HTML">
<!--<script src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML">-->
MathJax.Hub.Config({ tex2jax: { inlineMath: [['$','$'], ["\\$","\\$"]] } });
</script>
</head>
<body>

<h4>点と直線の距離</h4>
<p>点$(x_g,z_g)$から直線$z=a'*x+b'$への最短距離となる直線上の点$(x_x,z_z)$は以下のとおり求められる.</p>
<div class="eq">
\begin{equation}
\begin{cases}
&x_x=\cfrac{x_g+z_g*a'-a'*b'}{1+a'*a'} \\
&z_z=a'*x_x+b'
\end{cases}
\end{equation}
</div>

<canvas id="sample1" width="170" height="150" style="background-color:transparent;">
図形を表示するには、canvasタグをサポートしたブラウザが必要です。
</canvas>

<p>四角形要素は4節点で構成されるが,4点を通る平面は空間中に設定できない.
このため,四角形要素を構成する節点を,半時計回りに4組の3点に分けて考え,ある圧力を示す点を特定する.
ここで要素節点番号を(1,2,3,4)とすれば,三角形を構成できる節点の組み合わせは,(1,2,3),(2,3,4),(3,4,1),(4,1,2)となる.</p>

<canvas id="sample2" width="170" height="150" style="background-color:transparent;">
図形を表示するには、canvasタグをサポートしたブラウザが必要です。
</canvas>

<script type="text/javascript">
onload=function(){
    test1();
    test2();
}
function test1(){
  var canvas = document.getElementById('sample1');
  if (canvas.getContext) {
    var context = canvas.getContext('2d');
    //左から50上から50の位置に、幅70高さ50の四角形を描く
    context.strokeRect(50,50,70,50);
    context.fillStyle = 'rgb(0,0,0)';
    context.beginPath()
    context.moveTo(50,50);
    context.lineTo(120,100);
    context.moveTo(50,100);
    context.lineTo(120,50);
    context.stroke();
    context.font="16px sans-serif"
    context.textAlign="center"
    context.fillText( '1', 45, 115 );
    context.fillText( '2',125, 115 );
    context.fillText( '3',125,  45 );
    context.fillText( '4', 45,  45 );
   }
}
function test2(){
  var canvas = document.getElementById('sample2');
  if (canvas.getContext) {
    var context = canvas.getContext('2d');
    //左から20上から20の位置に、幅80高さ60の四角形を描く
    context.strokeRect(20,20,80,60);
    context.fillStyle = 'rgb(0,0,0)';
    context.beginPath()
    context.moveTo(20,20);
    context.lineTo(100,80);
    context.moveTo(20,80);
    context.lineTo(100,20);
    context.stroke();
    context.font="32px sans-serif"
    context.textAlign="center"
    context.strokeText( 'Mail', 60, 50 );
   }
}
</script>

</body>
</html>

Safariでの表示結果

pic_work.png

以 上

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?