2020
02/06

Lottieを使ってマイクロインタラクションを実装してみる

LottieはAirbnbが開発しているアニメーションライブラリです。
Airbnb本体のサービスにお世話になることは多分ないと思いますが(旅行行かないので…)、Lottieは非常になめらかで自由度の高いアニメーションを作ることができそうですので試してみました。

デモ

ADs

基本的な使い方

はじめに断っておきますが、AfterEffectsは使わずLottieFilesで公開されているJSONを使用した利用方法です。Aeは難しかった…今後の課題とします。

Lottieの読み込み

scriptタグでLottie本体を読み込みます。

Javascript

最小構成はこれだけです。
containerで指定した要素の内側にSVG(rendererオプションで「canvas」と「html」も選べます)が展開され、アニメーションが表示されます。

LottieFiles

LottieFilesではLottieで使える様々なアニメーションが公開されています。
今回はその中で以下のものを使わせていただきました。

チェック
ハート
ローディング
ローディング
チェック

実践的な使い方

今回はマイクロインタラクション的な使い方を試してみます。

デモではVue.jsを合わせて使用しています。

フォームのバリデーション

フォームに入力し、バリデーションに成功したらチェックマークが表示されるというものです。

正規表現による電話番号のバリデーションも本気でやるととてもややこしいですので、今回は簡易に00000-0000-0000でOKとしています。

computedが絡む場合、mountedでLottieによるアニメーションの構築が完了する前にcomputedの評価が発生してしまい、変数がundefinedになるなどのエラーが出ます。Promiseによりアニメーションの構築が完了を判定するフラグを設定するようにしています。

クリックで再生、もう一度クリックしたら逆再生(いいねボタン)

いいねやお気に入りなどで使えそうな、クリックしてアニメーションするハートのアイコンです。

HTMLは空のdivだけです。

クリックで「liked」というクラスをトグルし、再生方向を制御しています。
実際に利用する場合はこのメソッドにいいねを保持するPOST処理が入ることになります。

フォームにフォーカスしたら再生、外れたら停止

フォームにフォーカスするとアニメーションが再生され、外れると停止します。
入力中であることを明示したり、インクリメンタルサーチなどの場合は検索結果の取得待ちのときに表示させるなどの使い方ができると思います。

ボタンをクリックしたらローディング→完了するとチェックのアニメーション

メールフォームや小さなデータの送信なら一瞬で終わるので必要のない配慮ですが、大きなデータを送信する場合は処理が進んでいることを明示したほうが親切です。

クリックしたらローディングのアニメーションが無限ループで再生され、完了したらチェックのアニメーションになるというものです。

擬似的にsetTimeoutで完了まで5秒待つということにしています。
実際はデータを送信し、Promiseのthen()やfinally()で完了と判定します。

まとめ:簡単に高品質なアニメーションを使えるが、やはりAeが使えないと厳しい

LottieFilesには総ページ数から計算したところ8500件程度のアニメーションが公開されていますが、だからと言って自サイトにぴったり合うものが必ず見つかるとは限りません。「いいね」や「カートに入れる」などの汎用的なものは問題なさそうですが、「無表情から涙を流す顔文字」みたいなものはしっくり来るものがありませんでした。

ということで、AfterEffectsの習得が直近の課題となりました。
今後のAe解説記事にご期待ください(とやらざるを得ない状況に追い込むスタイル)

ADs

Post Comments

メールアドレスが公開されることはありません。

Comments

コメントはまだありません。