| 目次 |
|---|
|
・表示領域を配置する ・図形を配置するく ・四角を描く ・丸を描く ・軌跡(パス)を描く ・単位を指定する |
SVGとは、「Scalable Vector Graphics(スケーラブル ベクター グラフィックス)」。
W3Cによりオープン標準として勧告された、XMLによって記述されたベクターグラフィック言語です。
HTML5以前から、SVGは利用することが出来ました。
但し、その際はFlash同様、HTMLから利用する場合は組み込み要素として使用していました。
(Adobe Illustratorなどのドロー系描画ソフトにて、作成・利用されています。)
<svg>要素は、HTML5にてはじめて追加された仕様です。
まず最初に行うことは、<canvas>要素同様に、<svg>要素を配置することで表示領域を配置します。
<svg>~</svg>の中には、XML形式のSVG言語で書かれた図形の定義を記述します。
<canvas>要素と違い、<svg>要素は対応しないブラウザでは非表示となります。
※<svg>要素に非対応のブラウザでは、Adobe SVGViewerなどをオブジェクトとして組み込み、別途svgファイルを用意する必要があります。
大きさを含めいくつか表現に係わる属性がありますのでご紹介します。
<svg>要素の大きさは、省略することも出来ますがwidth属性やheight属性、CSSなどで指定することが出来ます。
指定がない場合は、ブラウザの既定値が使われます。
※以降、座標で指定する部分がありますが、左上が原点となります。
リスト1. <svg>要素の配置
<!-- 表示領域のみを指定した場合 --> <svg id="svg0101" width="220" height="200"> <circle cx="110" cy="100" r="50" fill="none" stroke="red" /> </svg> <!--viewBoxを指定した場合 --> <svg id="svg0102" width="220" height="200" viewbox="80 0 300 200"> <circle cx="110" cy="100" r="50" fill="none" stroke="red" /> </svg>
コーディング例
左:表示領域のみを指定した場合 / 右:viewBoxを指定した場合
なお、この先 <svg>要素の領域がわかりやすいよう背景(銀)色をつけます。
まずは、三角形を描きます。
直線の引き方には2種類あります。
<line>要素を用いることで、直線を引くことができます。
但し、単線ですので<line>要素だけで塗りつぶし図形は作れません。
<polyline>要素を用いることで、連続した直線を引くことができます。
<line>要素と異なり、塗りつぶし図形が作れます。
図形を描くには、<line>要素より<polyline>要素の方が理解しやすいです。
リスト2. 図形の配置方法
<!-- 直線(line) 塗りつぶし可 --> <line x1="20" y1="20" x2="120" y2="120" stroke-width="3"/> <line x1="120" y1="120" x2="20" y2="120" stroke-width="3"/> <line x1="20" y1="120" x2="20" y2="20" stroke-width="3"/> <!-- 連続直線(ployline) 塗りつぶし可 --> <polyline points="220,20 320,120 220,120 220,20"/>
コーディング例
左:<line>要素 / 右:<polyline>要素
四角形を描きます。
「図形を配置する」でも、四角形はかけますが「<rect>」を使えば簡単に描けます。
リスト3. 四角形の描画方法
<!-- 標準的な(角張った) 四角形 --> <rect id="rect01" x="25" y="25" width="100" height="100" /> <!-- 角の丸い 四角形 --> <rect id="rect02" x="225" y="25" width="100" height="100" rx="20" rx="10" />
コーディング例
左:標準的な(角張った) 四角形 / 右:角の丸い 四角形
円を描きます。
正円(<circle>要素)と楕円(<ellipse>要素)が存在します。
なお、<canvas>要素と異なり、<circle>要素及び楕円(<ellipse>要素では、円弧や扇型を作ることはできません。
円弧や扇型を作る場合は次項「軌跡(パス)を描く」を用いる必要があります。
リスト4. 円の描画方法
<!-- 正円 --> <circle cx="100" cy="100" r="80" /> <!-- 楕円 --> <ellipse cx="350" cy="100" rx="120" ry="80" />
コーディング例
左:正円 / 右:楕円
軌跡(パス)を描きます。
直線、曲線が混在した図形が描けます。
リスト5. 軌跡(パス)の描画方法
5-1.<polyline>要素や<rect>要素と同様の処理
<!-- 連続直線(ploylineと同様) 塗りつぶし可 --> <path d="M 20 20 L 120 120 L 20 120 L 20 20 Z" /> <!-- 角丸の四角形(rectと同様) --> <path d="M 225 25 m 20 0 h 60 a 20 10 0 0 1 20 10 v 80 a 20 10 0 0 1 -20 10 h -60 a 20 10 0 0 1 -20 -10 v -80 a 20 10 0 0 1 20 -10 Z" />
コーディング例
5-1.<polyline>要素や<rect>要素と同様の処理
5-2.いろいろな形
コーディング例
5-2.いろいろな形
上記の全ての図形要素や「svg要素(2) 色とスタイル」などの長さや幅、距離を表す場合、単位を指定することができます。
CSS2で定義されている単位が利用可能で、以下は指定可能な単位系です。
CSS2では単位の省略不可ですが、SVGでは許されています。
省略された場合、長さ値は現在の利用座標系における距離を表します。
※省略された時の単位は大体において「px」です。