SVG画像について

インターネットの画像処理はJPG、GIFから始まり、2003年にPNG標準化。
そこからしばらく動きはなかったが、最近定着し始めている画像としてSVGがある。
SVG(Scalable Vector Graphics)はベクター画像としてWEBに扱える。まじか。
つまりどういうことか。

SVGを使用するメリット

1、デバイスの解像度に依存しないで拡大縮小

ベクター画像なので拡大縮小で画質に影響しない。解像度別にファイルを用意する必要もない。

2、CSSで配色が変更できる

hover画像を別に用意する必要がなくなる。

3、透過やアニメーションにも対応

いいことづくし!と思えるかもしれないが当然デメリットもある。

SVGを使用するデメリット

1、ベクター画像なので写真などには不向き

まあ、写真をわざわざベクターに書き出す事もあまりないだろう。

2、複雑な形だと重くなることもある

SVGOというツールで圧縮可能

3、未対応ブラウザ

IE8、Android2.3で未対応。
まあ要件にはいることもあまりないか。

実装

アートボードサイズを調整しながらイラレで作成。SVG形式で保存。
パスファインダなどでエレメント数を減らすなど工夫。無駄なグループも削除しておく。

1、普通にimgで実装
2、SVGコードで実装

SVGファイルをeditorで開くとxmlのコードがでてくるのでこちらから不要なタグを削除する。残ったコードをhtml上に貼り付けて実装。

3、SVGスプライト

SVG画像をまとめた1枚を用意しておき、個別に読み出す。これはアプローチがいくつかあるので別途記事にしようと思っている。

SVGを扱えるCSS

上記の1の方法には対応していない。
コードで実装すると以下のCSSに対応する。

fill:#f00;

要素内部の塗りつぶし。

stroke:#f00;

アウトライン部分の塗り潰し

stroke-width:1px;

アウトラインの線幅

stroke-opacity:0.5;

アウトラインの不透明度

stroke-linecap

線の端の形状
・butt(端の部分が線の長さと等しく平ら)
・round(丸)
・square(端を四角く)
デフォルトは butt

stroke-linejoin
線の頂点の部分のスタイル
・miter(鋭角)
・round(丸)
・bevel(面取り)
デフォルトは miter