SVGサンプル
デメリット
写真や複雑なイラストなどドットを主体にしている画像には向かない。canvasとの違い
svgはxmlで記述する静的画像である。参考リンク
svgファイルを読み込む方法
sample1.svg
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="200" height="200" version="1.1" xmlns="http://www.w3.org/2000/svg">
<rect x="10" y="20" width="100" height="120" fill="#00599b" />
</svg>
<img src="img/svg_note/sample1.svg" />
直接HTMLに埋め込む方法
下記をhtmlに直接記述する。
<svg width="200" height="200" version="1.1" xmlns="http://www.w3.org/2000/svg">
<rect x="10" y="20" width="100" height="120" fill="#00599b" />
</svg>
<svg width="200" height="200" version="1.1"
xmlns="http://www.w3.org/2000/svg">
<rect x="20" y="20" width="100" height="50" rx="5"
fill="none" stroke="#8ca934" stroke-width="4" />
</svg>
<svg width="200" height="240" version="1.1" xmlns="http://www.w3.org/2000/svg">
<rect x="4" y="4" width="150" height="80" rx="5"
fill="none" stroke="#8ca934" stroke-width="4" />
<text x="20" y="30" fill="red" >
いろはにほへと
</text>
<text x="25" y="50" >
<a xlink:href="http://www.yahoo.co.jp/" fill="green">Yahoo</a>
</text>
</svg>
<script>
function test4(){
var rect = $('#rect4');
console.log(rect.attr('x') + ',' + rect.attr('y'));
// 位置を取得 (1乗算は暗黙の数値変換)
var x = rect.attr('x') * 1;
var y = rect.attr('y') * 1;
// 位置を変えてみる。
rect.attr('y',y+10);
// アニメーションさせて動かかしてみる。
rect.animate({"x": "+=10"}, "slow");
console.log(rect.attr('x') + ',' + rect.attr('y'));
}
</script>
~省略~
<svg width="200" height="240" version="1.1" xmlns="http://www.w3.org/2000/svg">
<rect id="rect4" x="20" y="20" width="100" height="50" rx="5"
fill="none" stroke="#8ca934" stroke-width="4" />
<text x="0" y="30" fill="blue" >
<a href="http://www.yahoo.co.jp/">Yahoo</a>
</text>
</svg>
<br>
<input type="button" value="TEST4" class="btn btn-primary" onclick="test4()" />
<script>
$(function(){
$('#svg1').click(function(e){
// 絶対座標系のSVG要素位置
var offset =$(this).offset();
// 相対位置 = 絶対座標系のクリック位置 - 絶対座標系のSVG要素位置
var x = e.pageX - offset.left;
var y = e.pageY - offset.top;
console.log(x);
console.log(y);
// 矩形へ相対位置をセット
var rect = $('#rect4');
rect.attr('x',x);
rect.attr('y',y);
});
});
</script>
~ 省略 ~
<svg id="svg1" width="200" height="240" version="1.1" xmlns="http://www.w3.org/2000/svg">
<rect id="rect4" x="20" y="20" width="100" height="50" rx="5"
fill="none" stroke="#8ca934" stroke-width="4" />
</svg>
$('#svg_rap').html($('#svg_rap').html(););
<div id="svg_rap">
<svg width="200" height="240" version="1.1" xmlns="http://www.w3.org/2000/svg">
<rect id="rect4" x="20" y="20" width="100" height="50" rx="5"
fill="none" stroke="#8ca934" stroke-width="4" />
</svg>
</div>
$("#sample3").load("sample3.svg", function(){
});
<div id="sample3">
<img src="sample3.svg" />
</div>
<svg width="640" height="480" version="1.1" xmlns="http://www.w3.org/2000/svg"> <image width="320" height="200" xlink:href="imori_md.jpg" ></image> <rect id="rect4" x="20" y="20" width="100" height="50" rx="5" fill="none" stroke="#8ca934" stroke-width="4" /> <text x="0" y="30" fill="blue" > <a href="http://www.yahoo.co.jp/">Yahoo</a> </text> </svg>
注意
外部SVGファイルにラスタイメージを埋め込んでいる場合、img要素では表示できなくなる。<div id="svg2"> <img src="sample2.svg" /> </div>
<script>
function test2(){
// 外部SVGを読み込み
$("#svg2").load("sample2.svg", function(){});
}
</script>
<svg baseProfile="tiny" height="200" width="200" xmlns="http://www.w3.org/2000/svg">
<line x1="0" y1="50" x2="200" y2="50" stroke="#000"/>
<line x1="0" y1="100" x2="200" y2="100" stroke="#000"/>
<line x1="0" y1="150" x2="200" y2="150" stroke="#000"/>
<line x1="50" y1="0" x2="50" y2="200" stroke="#000"/>
<line x1="100" y1="0" x2="100" y2="200" stroke="#000"/>
<line x1="150" y1="0" x2="150" y2="200" stroke="#000"/>
<line x1="200" y1="0" x2="200" y2="200" stroke="#000"/>
</svg>