■補講 インラインSVGをJavaScriptで制御
本書の補習講義でもSVGについて少し解説しました。ここでは、JavaScriptを使ってHTMLファイル内に記述されたインラインSVGを制御してみます。
まず、本書のコラムで掲載したSVGをHTML5ドキュメント内に埋め込んだものが以下のものになります。IE9, Safari/Google Chrome, Firefoxで表示されます(Opera 11.5は未対応です)。
----------------------------------------------------------------------------------------------------------------
■HTML
----------------------------------------------------------------------------------------------------------------
インラインSVG
----------------------------------------------------------------------------------------------------------------
それでは、このSVGデータをJavaScriptで制御して図形の色を変更してみましょう。インラインSVGの場合、通常の要素と同様にID名を割り当てておけばdocument.getElementById()でアクセスできます。上記のようにID名が割り当てられていない場合にはdocument.getElementsByTagName()を使って要素にアクセスすることができます。
document.getElementsByTagName()を使ってrect要素を指定し、塗り潰された色を青色に変更するプログラムが以下のものです。ページが読み込まれると、すぐに図形の色を青色に変えています。
----------------------------------------------------------------------------------------------------------------
■HTML
----------------------------------------------------------------------------------------------------------------
インラインSVGを制御する
----------------------------------------------------------------------------------------------------------------
それでは次にタイマーを使って四角形の色を変化させてみましょう。四角形に設定されているカラーを読み出して処理するので、やや長めのプログラムになっています。
SVG図形に設定されている属性値を読み出すにはgetAttribute()メソッドを使います。このメソッドのパラメータに読み出したい属性名を文字列で指定します。例えばfillという属性に設定されている値を取得したい場合には以下のように指定します。
ele.getAttribute("fill");
この場合、#ffee77のように属性に設定されている文字列が読み出されます。以下のサンプルではfill属性に設定されているのが#rrggbb形式のカラーコードであることが前提となっています。もし、fill="red"のようにカラー名が指定されていると正しく動作しません。
----------------------------------------------------------------------------------------------------------------
■HTML
----------------------------------------------------------------------------------------------------------------
インラインSVGを制御する
----------------------------------------------------------------------------------------------------------------
ここまでは手書きのSVGデータなので非常にシンプルです。しかし、SVGデータを手書きで作成するのは、あまり現実的ではありません。SVGデータを作成するのであれば、やはり作図ツール/アプリケーションの手助けが必要になります。
SVGデータを作成できるアプリケーションとしてはInkscapeやAdobe Illustratorがあります。
●Inkscape
http://inkscape.org/index.php?lang=ja
●Adobe Illustrator
http://www.adobe.com/jp/products/illustrator.html
Inkscapeは標準の保存形式がSVGです。つまり作図すれば、そのままSVGデータができあがります。Adobe Illustratorは保存する際にSVGを選択すれば、SVG形式のテキストまたは圧縮された形式(svgz)になります。SVGは、もとはAdobe社が提唱したものですから、Adobe Illustratorとの親和性は高くなっています。以前はAdobe社がSVGプラグインを出していた時期もありました。
ここではAdobe Illustrator CS5を使ってHTML文書内にSVGデータを入れてみます。Adobe Illustrator CS5より前のバージョンでもSVGデータを生成することができますが、かなり冗長なものになるので、おすすめできません。CS5以降を利用するのがベストです。
Adobe Illustratorを使って作図したらSVG形式で保存します。保存されたSVGファイルをテキストエディタで開きます。すると