1. ホーム
  2. Web制作
  3. HTML/Xhtml

HTMLページにSVGを挿入するための様々な方法

2022-01-07 11:19:12

SVG(Scalable Vector Graphics)とは? Scalable Vector Graphicsは、XML構文に基づく画像フォーマットです。他の画像フォーマットがピクセル処理に基づいているのに対し、SVGは画像の形状記述の一部であるため、基本的にテキストファイルであり、サイズも比較的小さく、拡大縮小しても歪むことがないのが特徴です。

svgタグの挿入

を直接使用します。 <svg> タグを使用して、DOMの一部となるコンテンツをページに挿入し、CSSやJSを使用して制御することができます。

シンプルな円形。

<svg width="400" heihgt="300" id="testSvg">
   <circle cx="100" cy="100" r="50" fill="red" stroke="black" strock-width="2& quot; id="testCircle"></circle>
</svg>

// You can control the style of the SVG with CSS, but the properties are different from the normal web elements
<style type="text/css">
   #testSvg {border:1px solid #ccc;}
   #testSvg circle {
   	fill: red;
   	stroke: blue;
   	stroke-width: 3;
   }
</style>

// You can use JS to manipulate SVG, make simple animations, etc.
<script type="text/javascript">
   var circle = document.getElementById("testCircle");
   circle.addEventListener("click", function(e) {
   	console.log("Click circle ... ");
   	circle.setAttribute("r", 65);
   }, false);
</script>

//In addition to JS manipulation, you can use SVG's own animate to create animation effects
<svg width="400" height="300" id="testSvg">
   <circle cx="100" cy="100" r="50" id="testCircle">
   	<animate attributeName="cx" from="100" to="300" dur="2s" repeatCount="indefinite"& gt;</animate>
   </circle>
</svg>

効果を表示します。

svgファイルの挿入

を使用することができます。

<img>
<embed>
<object>
<iframe>
などのタグを使って、SVGファイルをページに挿入することができます。
に加えて <img> を除き、すべてダブルタグの形式を使用する必要があります。

//Use <img> tags
<img src="test.svg'" />
//or base64 encoding for SVG
<img src="data:image/svg+xml;base64,[data]" />

//use <embed> tags
<embed id="embedSvg" type="image/svg+xml" src="test.svg"></embed>
//Get the SVG DOM
var embedSvg = document.getElementById("embedSvg").getSVGDocument();
console.log("SVG DOM: ", embedSvg);
		
//Use <object> tag
<object id="objectSvg" type="image/svg+xml" data="test.svg"></object>
//Get the SVG DOM
var objectSvg = document.getElementById("objectSvg").getSVGDocument();
console.log("SVG DOM: ", objectSvg);

//Use <iframe> tag
<iframe id="iframeSvg" src="test.svg"></iframe>
//Get the SVG DOM
var iframeSvg = document.getElementById("iframeSvg").contentDocument;
console.log("SVG DOM: ", iframeSvg);

SVG DOM出力。

svg を他のページ要素の背景画像として使用する

これは、svgをページに挿入する偽装方法です。つまり、svgをアニメーション効果を表示しない通常の画像として使用します。

<style type="text/css">
	.svg-div {
		width:400px;
		height:300px;
		background:url("test.svg") no-repeat center / 50%;
		border:1px solid #ccc;
	}
</style>

<div class="svg-div"></div>

効果

SVGソースコードの読み込み

SVGファイルは基本的にXMLテキストの一部であるため、XMLコードを読めばSVGのソースコードも読むことができます。

var svgStr = new XMLSerializer().serializeToString(document.getElementById("testSvg"));
console.log(svgStr);

概要

HTMLページにSVGを挿入する様々な方法についてご紹介しましたが、今回で終了です。HTMLページにSVGを挿入する方法については、Script Houseの過去の記事を検索するか、以下の記事を引き続きご覧ください。