SVGについて – ドキュメント内にSVGを表示する(createElementNS)

javascript

SVGについて – ドキュメント内にSVGを表示する(createElementNS)

SVGについて、描画の方法を試してみます。

前回の投稿ではHTML5ドキュメント内にSVGタグを直接記述してSVGを描画しましたが、
ここではjavascriptのcreateElementNSメソッドを使って描画してみます。

HTMLドキュメント内のdivタグにIDを付与し、javascriptでSVGを生成+描画する方法

HTMLドキュメント内のdivタグにIDを付与し、javascriptでSVGを生成+描画する方法を試してみます。
HTML全体のコードは次のように書きました。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>テストHTML</title>
</head>
<body>

<div id="svgtest"></div>

<script type="text/javascript">
let test1 = document.createElementNS('http://www.w3.org/2000/svg', 'svg');

test1.setAttribute("width", "600");
test1.setAttribute("height", "400");
test1.setAttribute("viewbox", "0 0 600 400");
test1.setAttribute("style", "background-color:#cccccc;");

let line = document.createElementNS('http://www.w3.org/2000/svg', 'line')

line.setAttribute('x1', '20');
line.setAttribute('y1', '50');
line.setAttribute('x2', '500');
line.setAttribute('y2', '300');
line.setAttribute('stroke', '#000000');

test1.appendChild(line);

let svgtest_dom = document.getElementById("svgtest");
svgtest_dom.appendChild(test1);

</script>

</body>
</html>

サーバ上のHTMLはこちら(test1.html)

画面にアクセスすると、グレーのSVG領域に、黒で直線(line)が描画されます。

HTMLドキュメント内にはsvgタグを書いていないので、
javascript側で

document.createElementNS('http://www.w3.org/2000/svg', 'svg');

を記述し、
svgオブジェクトをcreateElementNSで生成しています。

HTMLドキュメント内のsvgタグに、javascriptでSVGを描画する方法

また、

<div id="svgtest"></div>

のdivタグをHTMLに記述せず、ここをsvgタグにすることもできます。
次のHTMLを用意しました。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>テストHTML</title>
</head>
<body>

<svg id="svg_tag" width="500" height="400"  viewBox="0 0 500 400" xmlns="http://www.w3.org/2000/svg"></svg> 

<script type="text/javascript">
let line = document.createElementNS('http://www.w3.org/2000/svg', 'line')

line.setAttribute('x1', '30');
line.setAttribute('y1', '50');
line.setAttribute('x2', '400');
line.setAttribute('y2', '300');
line.setAttribute('stroke', '#000000');

let svgtest_dom = document.getElementById("svg_tag");
svgtest_dom.appendChild(line);

</script>

</body>
</html>

サーバ上のHTMLはこちら(test2.html)

画面にアクセスすると、直線だけが描画されます。
一つ前のサンプルとの違いは、javascript内でsvgタグを生成していない為、
生成時に背景色を指定していた処理がない為、直線のみが描画されています。

HTMLドキュメント内のsvgタグに、javascriptでSVGを描画する方法(SVGの要素を変更)

先程のサンプルは直線のみを描画でしたが、直線の要素を円に変更して試してみます。
下記のHTMLサンプルを用意しました。

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>テストHTML</title>
</head>
<body>

<svg id="svg_tag" width="500" height="400"  viewBox="0 0 500 400" xmlns="http://www.w3.org/2000/svg"></svg> 

<script type="text/javascript">
let circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle')

circle.setAttribute('cx', '50');
circle.setAttribute('cy', '50');
circle.setAttribute('r', '40');
circle.setAttribute('stroke', '#1');
circle.setAttribute('stroke-width', '300');
circle.setAttribute('fill', '#cccccc');

let svgtest_dom = document.getElementById("svg_tag");
svgtest_dom.appendChild(circle);

</script>

</body>
</html>

サーバ上のHTMLはこちら(test3.html)

画面にアクセスすると、円(circle)の描画がされていることが確認できます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です