Scalable Vector Graphics の略。 XMLの一種。 図形を記述することができる。 現在はメジャーなブラウザでサポートされている。
<!DOCTYPE html>
<html>
<body>
<p> ふつうの文章。
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
version="1.1" width="300" height="120">
<rect x="10" y="10" width="200" height="100" fill="none" stroke="black" />
<text x="110" y="60" text-anchor="middle">よう</text>
</svg>
</body>
</html>
ふつうの文章。
<!DOCTYPE html> で始めなければならない。
width と height で指定する。
SVGは、HTMLの <img src="..."> タグの画像として利用することもできる。
<img src="octocat.svg" alt="オクトキャット" width="100" />
XMLでは、複数の異なる規格が、ひとつの文書中に混在することがある。
各タグや属性がどの規格に従って解釈されるべきかを区別するために、 タグ名や属性に「名前空間 (namespace)」がついている。
<html> ... (← XHTMLの規格で定義されている)
<svg> ... (← SVGの規格で定義されている)
http://www.w3.org/1999/xhtml
http://www.w3.org/2000/svg
http://www.w3.org/1998/Math/MathML
http://purl.org/dc/elements/1.1/
urn:ISBN:0-395-36341-6
xmlns="…" は、そのタグがどの名前空間に所属するかを示す。
xmlns:prefix="…" は、
prefix:... で始まるタグがどの名前空間に所属するかを示す。
これは簡略表記であるとともに、属性の名前空間を指定するのに用いられる。
は、以下の例と同じ:<svg xmlns="http://www.w3.org/2000/svg"> ... </svg>
<foo:svg xmlns:foo="http://www.w3.org/2000/svg"> ... </foo:svg>
<rect x="10" y="10" width="100" height="80" fill="none" stroke="black" stroke-width="2" /> <rect x="80" y="60" width="50" height="40" fill="yellow" stroke="blue" stroke-width="4" />
x, y に左上の座標を指定する。[必須]
width, height に幅と高さを指定する。[必須]
fill には塗る色を指定する。(塗らない場合は none)
stroke には線の色を指定する。(線がない場合は none)
stroke-width には線幅を指定する。
色の指定は HTML と同様に black、 #ffddff などとする。
<line x1="10" y1="10" x2="100" y2="80" stroke="black" stroke-width="2" />
x1, y1 に始点の座標を指定する。[必須]
x2, y2 に終点の座標を指定する。[必須]
stroke, stroke-width は同じ。
<polygon points="10,90 50,10 90,90" fill="green" stroke="black" stroke-width="2" />
points に点の座標列を指定する。[必須]
座標列は、x, y の順に 2個ずつ区切って記述する。
(区切りはカンマまたは空白のどちらでもよい)
fill, stroke, stroke-width は同じ。
<circle cx="50" cy="50" r="40" fill="none" stroke="black" stroke-width="2" /> <ellipse cx="200" cy="50" rx="80" ry="40" fill="red" stroke="black" stroke-width="2" />
cx, cy に中心の座標を指定する。[必須]
r (円の場合) または rx, ry (楕円の場合) に半径を指定する。[必須]
fill, stroke, stroke-width は同じ。
<rect x="10" y="10" width="200" height="80" fill="none" stroke="black" /> <text x="10" y="40" text-anchor="start">左寄せ</text> <text x="110" y="60" fill="red" text-anchor="middle">中央寄せ</text> <text x="210" y="80" fill="white" stroke="black" text-anchor="end">右寄せ</text>
x, y に起点の座標を指定する。[必須]
text-anchor に起点の方法を指定する。
(start, middle, end のいずれか)
left, center, right ではない。
<text> 〜 </text> で囲む。
fill で指定する。
stroke 属性を指定すると、アウトラインが描画される。
注意: HTMLと違い、複数行にわたる文字は一度に書けない。
どの要素 (おもに <text>) も、
style="..." で CSS 属性をつけることができる。
<text x="0" y="40" style="font-style: italic;">斜体</text> <text x="100" y="80" style="font-size: 200%;">大きな文字</text>
<g> 〜 </g> で囲んだ部分は、
同じ属性値が適用される。
<g fill="none" stroke="blue" stroke-width="1"> <rect x="10" y="10" width="50" height="30" /> <line x1="35" y1="25" x2="100" y2="50" /> <circle cx="100" cy="50" r="30" /> </g>
要素に
transform="..." 属性をつけると、
その図形を変形させることができる。
(グループ化した図形に対しても有効。)
<g fill="none" stroke="black" stroke-width="2" transform="translate(100,50)"> <circle cx="0" cy="0" r="40"/> <rect x="50" y="-50" width="80" height="40" transform="rotate(30)" /> </g> <text x="0" y="20" transform="scale(4,2)">HELLO</text>
translate(x, y) で起点を移動する。
rotate(a) で指定した角度だけ時計回りに回転する。
scale(x, y) で拡大・縮小率を変更する。
ひとつの transform 属性の中に
複数の指定を空白で区切って入れることも可能。
すべての要素には id="..." 属性をつけておき、何度でも再利用できる。
一度定義した図形を利用するには <use /> タグを使う。
<polygon id="star" points="25,90 90,40 10,40 75,90 50,10"
fill="none" stroke="black" stroke-width="3" />
<use xlink:href="#star" transform="translate(150,10)" />
<use xlink:href="#star" transform="translate(150,0) rotate(45) " />
id="名前" 属性をつける。
(<g> 〜 </g> でグループ化した要素も可)
<use xlink:href="#名前" /> を書く。
このとき、属性 xlink の名前空間を指定しておく必要がある。
さらに応用として、<marker> タグがある。
これは線の終端で利用する図形を定義する。
<marker id="arrow" viewBox="-5 -5 10 10" orient="auto">
<polygon points="-5,-5 5,0 -5,5" fill="black" stroke="none" />
</marker>
<line x1="10" y1="20" x2="100" y2="20"
stroke="black" stroke-width="4" marker-end="url(#arrow)" />
<marker id="名前"> 〜 </marker>
で定義しておく。
viewbox="x y width height" 属性で指定する。[必須]
注意: 図形は (0, 0) を中心とするように描くこと。
marker-start="url(#名前)" あるいは
marker-end="url(#名前)" を指定する。
注意:
ここでは url(...) が必要。
<image x="0" y="0" width="320" height="220" xlink:href="image.jpg" />
<text x="160" y="200" text-anchor="middle" fill="white"
style="font-weight: bold; font-size: 24px;">
United States Capitol Dome
</text>
x, y に左上の座標を指定する。[必須]
width, height に幅と高さを指定する。[必須]
xlink:href に画像の URL を指定する。[必須]
手で全部入力するのが面倒くさいときは、 ツールで作成して貼りつければよい。
ダウンロード版: svg-edit-2.7.zip