Javascriptを使用してSVGグラフィックを作成しますか?


80

JavaScriptを使用してSVGグラフィックを作成するにはどうすればよいですか?

すべてのブラウザがSVGをサポートしていますか?


2
2年後のsvg開発は、それは素晴らしいことだと言えますが、すべての主要なブラウザーからの完全なサポートがなければ、使用しても悪くはありません。新しいアプリを起動する場合は、代わりに別の形式を選択してください。
カマレイ2009年

31
この質問と回答を読んでいる人は誰でも、2009年に質問が行われてから多くのことが進化し、SVGがすべての主要なブラウザーでネイティブにサポートされるようになったことに注意してください(ポリフィルは必要ありません)。
Jeach 2013年

1
サポートされている実際のブラウザを確認するためのリンクは次のとおりです。caniuse.com/#feat=svg今日、 svgを使用することは間違いなく保存されています。
Lukas Liesis 2016

回答:


30

見ていWikipediaのこのリストのブラウザがSVGをサポートするかについてを。また、脚注の詳細へのリンクも提供します。たとえばFirefoxは基本的なSVGをサポートしていますが、現時点ではほとんどのアニメーション機能が不足しています。

Javascriptを使用してSVGオブジェクトを作成する方法に関するチュートリアルはここにあります

var svgns = "http://www.w3.org/2000/svg";
var svgDocument = evt.target.ownerDocument;
var shape = svgDocument.createElementNS(svgns, "circle");
shape.setAttributeNS(null, "cx", 25);
shape.setAttributeNS(null, "cy", 25);
shape.setAttributeNS(null, "r",  20);
shape.setAttributeNS(null, "fill", "green"); 

@Aculeo:ありがとう、修正しました。
schnaader 2015

Firefoxの解決策はまだありますか?
ディネッシュ2017年

1
あなたは本当に説明する必要がありますevt。動作するソリューションについては、themadmaxの回答を参照してください。
AldaronLau

24

この回答は2009年のものです。誰かがそれを最新のものにしたいと思っている場合に備えて、コミュニティwikiになりました。

IEには、SVGを表示するためのプラグインが必要です。最も一般的なのは、Adobeがダウンロードできるものです。ただし、アドビはこれをサポートまたは開発していません。Firefox、Opera、Chrome、Safariはすべて、基本的なSVGを正常に表示しますが、サポートが不完全なため、高度な機能を使用すると問題が発生します。Firefoxは宣言型アニメーションをサポートしていません。

SVG要素は次のようにjavascriptで作成できます。

// "circle" may be any tag name
var shape = document.createElementNS("http://www.w3.org/2000/svg", "circle");
// Set any attributes as desired
shape.setAttribute("cx", 25);
shape.setAttribute("cy", 25);
shape.setAttribute("r",  20);
shape.setAttribute("fill", "green");
// Add to a parent node; document.documentElement should be the root svg element.
// Acquiring a parent element with document.getElementById() would be safest.
document.documentElement.appendChild(shape);

SVG仕様は、すべてのSVG要素のDOMインターフェースを記述する。例えば、上記で作成されSVGCircleElement、有しcxcyおよびr直接アクセスすることができ、中心点と半径の属性、。これらはSVGAnimatedLength属性でありbaseVal、通常の値のanimValプロパティとアニメーション化された値のプロパティがあります。現在、ブラウザはこのanimValプロパティを確実にサポートしていません。baseValはSVGLengthであり、その値はvalueプロパティによって設定されます。

したがって、スクリプトアニメーションの場合、これらのDOMプロパティを設定してSVGを制御することもできます。次のコードは、上記のコードと同等である必要があります。

var shape = document.createElementNS("http://www.w3.org/2000/svg", "circle");
shape.cx.baseVal.value = 25;
shape.cy.baseVal.value = 25;
shape.r.baseVal.value = 20;
shape.setAttribute("fill", "green");
document.documentElement.appendChild(shape);

5
これはもはや真実ではなく、この回答は更新または削除する必要があります。
デヴィッド・Martenssonから

18

クロスブラウザで行うには、RaphaelJSを強くお勧めします。それは優れたAPIの地獄を持っており、SVGを理解できないIEでVMLを実行します。


9

IEを除くすべての最新のブラウザはSVGをサポートしています

これは、javascriptを使用してSVGを操作する方法のステップバイステップガイドを提供するチュートリアルです。

JavaScriptを使用したSVGスクリプティングパート1:シンプルサークル

同様Boldewynは、あなたがしたい場合は、既に述べています

クロスブラウザで行うには、RaphaelJSを強くお勧めします:rapaheljs.com

今は図書館の大きさが大きすぎる気がしますが。それはあなたが必要としないかもしれない多くの素晴らしい機能を持っています。


「IEを除くすべての最新ブラウザ」?:)
tuomassalo 2013年

2
最新のIEバージョンはありません。SVGの場合、IE(v11経由)はSMILをサポートしていないため、興味深いアニメーションは忘れてください。
オタク株

7

私はjQuerySVGライブラリがとても好きです。SVGで操作する必要があるたびに役立ちます。それはJavaScriptからSVGでの作業を本当に容易にします。


5

準拠した回答が見つからなかったので、サークルを作成してsvgに追加するには、次のようにしてください。

var svgns = "http://www.w3.org/2000/svg";
var svg = document.getElementById('svg');
var shape = document.createElementNS(svgns, "circle");
shape.setAttributeNS(null, "cx", 25);
shape.setAttributeNS(null, "cy", 25);
shape.setAttributeNS(null, "r",  20);
shape.setAttributeNS(null, "fill", "green");
svg.appendChild(shape);
<svg id="svg" width="100" height="100"></svg>


2

すべてのブラウザがSVGをサポートしているわけではありません。IEがそれらを使用するにはプラグインが必要だと思います。svgは単なるxmlドキュメントであるため、JavaScriptで作成できます。ただし、ブラウザにロードするかどうかはわかりません。私はそれを試していません。

このリンクには、javascriptとsvgに関する情報があります。

http://srufaculty.sru.edu/david.dailey/svg/SVGAnimations.htm


2

Javascriptを介してSVGを操作できるjQueryプラグインがあります。

http://plugins.jquery.com/project/svg

そのイントロから:

Firefox、Opera、Safariでネイティブにサポートされており、IEのAdobe SVGビューアまたはRenesisプレーヤーを介して、SVGを使用するとWebページ内にグラフィックを表示できます。これで、JavaScriptコードからSVGキャンバスを簡単に駆動できます。



2

Snap、Raphael、D3のようなJavascriptを使用するSVGグラフィックスには複数のライブラリがあります。または、SVGをプレーンなJavaScriptと直接インターフェースすることもできます。

現在、ブラウザのすべての最新バージョンはSVGv1.1をサポートしています。SVG v2.0はワーキングドラフトであり、使用するには時期尚早です。

この記事では、Javascriptを使用してSVGを操作する方法を示し、ブラウザーサポートのリンクを参照します。SVGとのインターフェース



0

したがって、JSでSVGを1つずつ作成する場合はcreateElement()、を使用するだけでなく、描画されません。代わりに次を使用してください。

var ci = document.createElementNS("http://www.w3.org/2000/svg", "circle");

-1

現在、すべての主要なブラウザはsvgをサポートしています。JSでのsvgの作成は非常に簡単です(現在innerHTML=...非常に高速です

element.innerHTML = `
    <svg viewBox="0 0 400 100" >
      <circle id="circ" cx="50" cy="50" r="50" fill="red" />
    </svg>
`;

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.