HTML5 SVG

❮ 前章へ 次章へ ❯

SVG とは?


HTML <svg> 要素

HTMLの <svg> 要素は、SVG グラフィックスのコンテナです。

SVG には、パス、矩形、円、テキスト、グラフィック画像などの描画のためのいくつかのメソッドがあります。


ブラウザ・サポート

表中の数字は、完全に <svg> 要素をサポートした最初のブラウザのバージョンを表しています。

要素
<svg> 4.0 9.0 3.0 3.2 10.1

SVG 円形

<!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 矩形




<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 角丸の矩形

Sorry, your browser does not support inline SVG.


<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>


Try it Yourself ❯

SVG 星形

Sorry, your browser does not support inline 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 ロゴ

SVG Sorry, your browser does not support inline SVG.


<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 と Canvas の違い

SVG は、XML で 2D グラフィックスを記述するための言語です。

Canvasは、即座に(JavaScript を使用して)2D グラフィックスを描画するものです。

SVG は、XMLベースです。これは、すべての要素が SVG DOM で利用可能であることを意味します。 要素に JavaScript イベントハンドラをアタッチすることができます。

SVG では、描かれた各形状は、オブジェクトとして記憶されます。 SVG オブジェクトの属性が変更された場合、 ブラウザは自動的に形状を再レンダリングすることができます。

キャンバスは、ピクセル毎にレンダリングされます。キャンバスでは、いったんグラフィックが描画されると、 それはブラウザにより忘れ去られます。位置を変更する必要がある場合、 グラフィックによってカバーされている可能性がある全てのオブジェクトを含む、シーン全体を再描画する必要があります。


Canvas と SVG の比較

下の表に、Canvas と SVG との重要な相違点を示します:

Canvas SVG
  • 解像度に依存する
  • イベントハンドラはサポートしない
  • 貧弱なテキストレンダリング機能
  • 結果の画像を .png または .jpg で格納できる
  • グラフィックを中心としたゲームに最適
  • 解像度に依存しない
  • イベントハンドラをサポートする
  • 大きなレンダリング領域を持つアプリケーションに最適(Googleマップ)
  • 複雑な場合、レンダリングが遅い(DOMを多用するものはすべて遅くなる)。
  • ゲームアプリケーションに適さない

SVG の詳細については、SVG チュートリアルをご覧ください。


❮ 前章へ 次章へ ❯