ローディングアニメーションを1回のみ表示し
ユーザーアビリティを向上させましょう #2/2
はじめに
概要
ローディングアニメーションは、初めて訪れるユーザーに強い印象を与えるためのものです。しかし、2回目以降はロード時間が長くなり、逆にユーザーに不満を与える可能性があります。そこで、Javascriptでブラウザのキャッシュをコントロールし、ローディングアニメーションを1回のみ表示する方法を実装します。サンプルコードを配布してますのでぜひ活用してください。実装には前回のコードを使用しますのでそちらも参考ください。
※本記事の情報は執筆時点のものであり、閲覧時点では変更されている可能性があります。また、ご利用の環境によっては、本記事の内容が正常に動作しないことがあります。最新の情報については、公式サイトなどでご確認ください。
実装動画
実装する内容は以下の動画を参照ください。
サンプルコード
こちらが上記の動画のサンプルコードです。
Javascript
class Main { constructor() { this._loading(); } _loading() { document.addEventListener("DOMContentLoaded", () => { var webStorage = function () { if (sessionStorage.getItem("access")) { /* 2回目以降アクセス時の処理 */ // ここに記述します } else { /* 初回アクセス時の処理 */ sessionStorage.setItem("access", "true"); // sessionStorageにデータを保存 // ここに記述します } }; webStorage(); }); } } new Main();
ブラウザのキャッシュを活用したコードはこちらです。
上部に2回目のコードを記述し、下部に初回のコードを記述します。
コードの解説
初回のコード
// ここに記述します const loading = gsap.timeline(); loading .to(".loading", { // ロード時のチラつきの対策 display: "block", }) .from( ".js_1", 1, { opacity: 0, y: 50, }, 2 ) .to(".js_1", 1, { delay: 0.5, opacity: 0, y: 50, }) .to(".js_2", 1, { display: "none", }) .to(".js_3", 1, { display: "block", opacity: 1, visibility: "visible", y: -10, delay: 1, });
ローディングアニメーションチラつきの対策
こちらは前回実装したコードを添付しております。1点変更したのは、loadingアニメーションのチラつきが発生していたため、CSSで調整しGsapでdisplay:blockで対応しております。
2回目のコード
// ここに記述します const mv = gsap.timeline(); mv.to("#global-container", 1, { opacity: 1, visibility: "visible", display: "block", }).from( "#global-container", { y: 50, }, "<" );
こちらもシンプルで、Gsapのtimelineを使用して記述しております。timelineについてはこちらを参照ください。
以上です。お疲れ様でした。実装はできましたでしょうか?何か疑問点やご質問がございましたらお気軽にご連絡ください。お問い合わせフォームはこちら
まとめ
- ブラウザのキャッシュを活用し、アニメーションを1回のみとする
- Javascriptのコードを使用する
- 初回のコード並びに2回目のコードそれぞれ記述する
- アニメーションにはGsapが便利