最近話題になった「ついにGIFに代わる新しいアニメーション画像フォーマットが誕生か」として公開されたxng形式でしたが,実際には単なるSVGの仕組みを応用したパラパラアニメーション(パラパラマンガ)でした.
SVGではCSSやスクリプト無しにアニメーションが動作するため,驚かれた方も多かったと思われますが,このやり方でのパラパラアニメーションの実現には次のような問題が存在します.
- 最適化されていないことでファイルサイズが増大する
データURIスキーム形式で静止画をSVGファイルに埋め込む際に,画像データが増大します.また,動画形式と異なり,フレーム間での最適化が効きません. - そもそもIEで動作しない
IEはSVGアニメーション(SMILアニメーションと呼びます)をサポートしていません.
では上記の問題を解決するにはどうすればよいのでしょう?
前者は各静止画の品質を落としたり,フレーム数を減らすなどで対処できるかもしれません.
では後者のIEで動作しない問題は?
そこで本記事ではSVGの構造を見直し,javascriptと組み合わせることで無理矢理img要素でのアニメーションを動かしてみました.
なお,SVGを使ったパラパラアニメーションの原理については次の記事を見てください.
xng形式での内部構成とは大分異なりますが,画像データを埋め込んでいないこと以外やっていることは概ね一緒です.