SVGをwebサイトで使うメモ
SANOGRAPHIX.NETで使っているアイコンなどをSVGにしてみました。
SVGのメリット
ベクターデータなのでいくら拡大しても画像が粗くなりません。試しにロゴを思い切り拡大して、gif画像と比べてみます。
はっきり違いが出ますね。
スマートフォンやタブレットでは、サイトを拡大する動作はごく一般的に行われているし、今後PCディスプレイでもRetina化が進むと思われます。そういった環境でも綺麗な画像を提供できるという意味で、導入するメリットは十分にあります。
SVGの導入
SVG画像をウェブサイトで使うには、IllustratorなどでSVG形式で保存したファイルをobjectタグで埋め込めばよいわけですが、ロゴなど、画像の外側にアンカータグを使いたい時があると思います。また、IEは9以外はSVGをサポートしていません。ですので、以下のようにしてみました。
SVGをobjectで表示してリンクにするサンプル
html
<a href="/" class="inline-block">
<object data="images/toplogo.svg" width="260px" height="28px" type="image/svg+xml">
</object>
<img src="images/toplogo.gif" alt="" />
</a>
<!--[if IE]>
object[type="image/svg+xml"] {
display: none;
}
object[type="image/svg+xml"] + img {
display: inline !important;
}
<![endif]-->
CSS
.inline-block {
display: inline-block;
*display: inline;
*zoom: 1;
}
object[type="image/svg+xml"] {
pointer-events: none;
}
object[type="image/svg+xml"] + img {
display: none;
}
aタグの中にobjectとimgを入れて、IEのときだけojectを非表示にしてimg代わりに表示する、というようなことをしました。
IE9ではSVG使えるのになぜ使っていないのかというと、IEだけSVGでカーソルが指マークにならなくて、これを修正するにはonloadイベントでcursor: pointer;みたいにしなければならず面倒だからです。
SVG、ちょっとファイルサイズが大きいですがなかなか良いですね。