jqueryプラグインのjquery svgを試してみたのでメモ。このプラグインを使えばsvgの表示できるブラウザならどれでもいける(はず)。前述のインラインsvgも大丈夫。 GPL & MIT ライセンス。
1. セットアップ
まず空のdivを用意。
<div id="svg"></div>
ラッパーdivのサイズがsvgのサイズに適用されるのでdivのサイズを先に定義する。
//1000×1000px
$("#svg").width(1000).height(1000);
初期化。div中にsvgタグを作ってくれる。
$("#svg").svg();
SVGWrapperオブジェクトの参照を取得する。このSVGWrapperオブジェクトがsvg操作のルートになる。
var wrapper = $("#svg").svg('get');
あとはこの$svgの関数を実行すればsvgの描画ができる。
2. 四角形の描画
座標(10,20)に縦100、横200、塗り#ff0000、線の色#000000、線の太さ1の四角形を描画する。
var rect = wrapper.rect(10,20,100,200,
{
fill: "#ff0000",
stroke: "#000000",
strokeWidth: 1
});
3. プロパティの操作
rectの座標を(100,100)に、透明度を50%に変更する。
wrapper.change(rect,
{
x: 100,
y: 100,
opacity: 0.5
});
4. アニメーション
jquery.svganim.jsをロードしておけばjqueryのanimateが使えるようになる。アニメーションできるプロパティはここを参照。
3秒かけてrectを座標(200,200)に、透明度100%に変更する。
$(rect).animate(
{
svgX: 200,
svgY: 200,
opacity: 1.0
},3000);
5. 外部svgのロード
svg/mountain.svgをロードして読み込み完了後loadSvgCompleteHandlerを実行する。
wrapper.load('svg/mountain.svg',
{
onLoad: loadSvgCompleteHandler
});
6. svgをテキストで取得
rectをテキストで取得。
alert(wrapper.toSVG(rect));
出力は、
<rect x="100" y="100" width="100" height="200" fill="#ff0000" stroke="#000000" stroke-width="1" opacity="0.5" style="opacity: 0.5; "></rect>