24

最近の傾向では、アニメーションGIFを使用する代わりにJavaScriptを使用してCSSスプライトをアニメーション化する人々を見てきましたか?

元:

それはすべて、テクノロジーを示したり実験したりするためだけのものですか、それともテクノロジーから何かメリットがありますか。メリットがある場合は、そのメリットを知りたいと思います。私が尋ねる理由は、どちらの場合も中間フレームを生成する必要があるため(主にトゥイーン技術を使用して)理解できなかったためです。

4

2 に答える 2

37
  • コントロール

    アニメーション GIF を制御することはできません。それらを開始することも、停止することもできません。ロードするとすぐにアニメーション化されます。

    スプライトを使用すると、アニメーションを制御できます。ブラウザ イベントの開始、停止、および反応、アニメーションのパンを行うことができます。たとえば、Google Doodles は通常、クリックするとアクティブになります。

    気の利いたGIF制御システムが9gagにあります。それらを DOM に追加することでそれらを開始し、それらを削除して事前に生成された「最初のフレーム ビュー」と交換することで停止できます。しかし、それはGIFに関する限りです。

  • 独立したインスタンス

    同じ GIF の複数のインスタンスをロードすると、これらすべてのインスタンスがページ全体で同じ画像を使用し、同時に移動します。踊っているユニコーンの GIF が並んでいる場合、それらは同時に踊っています。シンクロダンス!

    しかし、スプライトでは、同じ画像を使用していても、アニメーションは下にあるスクリプトに依存しています。したがって、1 つのスプライトが 1 つのスクリプトによってアニメーション化され、別のスプライトが別のスクリプトによってアニメーション化される場合、両方のアニメーションは独立して実行され、互いに異なる方法で実行されます。

    これにより、別の GIF を作成する必要がなくなり、スクリプトを変更するだけなので簡単に変更できます。

  • スムーズなアニメーションの確保

    アニメーション GIF は読み込み中にアニメーション化するだけであり、インターネットの速度が遅いと、より多くの画像が読み込まれるまでアニメーションがフリーズします。

    対照的に、スプライトの利点は、それらを事前にロードできることです。すべての画像が事前にロードされるようにします。これにより、そのアニメーションに使用されるリソースがアニメーションの前に既に読み込まれていることを確認して、アニメーションが可能な限りスムーズになるようにします。

    ただし、GIF は静止画像です。それらを DOM から動的にロードし、DOM に追加する前にロード イベントをリッスンできます。

  • 部分レンダリング

    PNG スプライトを使用すると、アニメーションの「部分」を実行して、アニメーション シーンをパーツに分割できます。たとえば、キャラクターが静止しているのに、腕が振られている場合などです。キャラクター全体やシーン全体をアニメートする必要はありません。キャラクターの体のスプライトを描いた要素を「フリーズ」状態に配置できますが、腕はアニメーション化されている別の要素です。これにより、スプライト シートのスペースとサイズが節約されます。これの良い例は、Google による 2012 年の母の日の Doodle です。

    対照的に、ほとんどの場合、GIF アニメーションのすべてのフレームは画像全体であり、その中の何かが動くかどうかに関係なくアニメーション化されます。フレームが多いほど、GIF のサイズは大きくなります。

  • GIFは拡大縮小されません

    GIF はアイコン用でした。画像サイズに対するファイル サイズの比率は、PNG や JPG と比較して、GIF ではあまり大きくなりません。

于 2012-04-17T06:38:45.417 に答える
3

夢想家ジョゼフの答えに加えて…

私が知る限り、または少なくとも以前はそうでしたが、GIF ファイルはトゥルーカラーではなく、JPG/PNG を CSS スプライトとして使用するもう 1 つの理由です。

于 2015-07-24T11:45:27.593 に答える