HTMLの <svg> 要素は、SVG グラフィックスのコンテナです。
SVG には、パス、矩形、円、テキスト、グラフィック画像などの描画のためのいくつかのメソッドがあります。
表中の数字は、完全に <svg> 要素をサポートした最初のブラウザのバージョンを表しています。
要素 | |||||
---|---|---|---|---|---|
<svg> | 4.0 | 9.0 | 3.0 | 3.2 | 10.1 |
<!DOCTYPE html>
<html>
<body>
<svg
width="100" height="100">
<circle cx="50" cy="50" r="40" stroke="green"
stroke-width="4" fill="yellow" />
</svg>
</body>
</html>
Try it Yourself ❯
<svg width="400" height="100">
<rect width="400" height="100" style="fill:rgb(0,0,255);stroke-width:10;stroke:rgb(0,0,0)"
/>
</svg>
Try it Yourself ❯
<svg width="400" height="180">
<rect x="50" y="20" rx="20" ry="20"
width="150" height="150"
style="fill:red;stroke:black;stroke-width:5;opacity:0.5" />
</svg>
<svg width="300" height="200">
<polygon points="100,10 40,198 190,78 10,78 160,198"
style="fill:lime;stroke:purple;stroke-width:5;fill-rule:evenodd;"
/>
</svg>
Try it Yourself ❯
<svg height="130" width="500">
<defs>
<linearGradient id="grad1" x1="0%"
y1="0%" x2="100%" y2="0%">
<stop offset="0%" style="stop-color:rgb(255,255,0);stop-opacity:1"
/>
<stop offset="100%" style="stop-color:rgb(255,0,0);stop-opacity:1" />
</linearGradient>
</defs>
<ellipse cx="100" cy="70" rx="85" ry="55"
fill="url(#grad1)" />
<text fill="#ffffff" font-size="45"
font-family="Verdana" x="50" y="86">SVG</text>
Sorry, your browser does not
support inline SVG.
</svg>
Try it Yourself ❯
SVG は、XML で 2D グラフィックスを記述するための言語です。
Canvasは、即座に(JavaScript を使用して)2D グラフィックスを描画するものです。
SVG は、XMLベースです。これは、すべての要素が SVG DOM で利用可能であることを意味します。 要素に JavaScript イベントハンドラをアタッチすることができます。
SVG では、描かれた各形状は、オブジェクトとして記憶されます。 SVG オブジェクトの属性が変更された場合、 ブラウザは自動的に形状を再レンダリングすることができます。
キャンバスは、ピクセル毎にレンダリングされます。キャンバスでは、いったんグラフィックが描画されると、 それはブラウザにより忘れ去られます。位置を変更する必要がある場合、 グラフィックによってカバーされている可能性がある全てのオブジェクトを含む、シーン全体を再描画する必要があります。
下の表に、Canvas と SVG との重要な相違点を示します:
Canvas | SVG |
---|---|
|
|
SVG の詳細については、SVG チュートリアルをご覧ください。