Web活のロゴ

Web制作Output&初心者のための徹底ガイド

ローディングアニメーションを1回のみ表示し
ユーザーアビリティを向上させましょう #2/2

2023.06.15jqueryの活用法。ブラウザのキャシュを活用する方法
はじめに
概要

ローディングアニメーションは、初めて訪れるユーザーに強い印象を与えるためのものです。しかし、2回目以降はロード時間が長くなり、逆にユーザーに不満を与える可能性があります。そこで、Javascriptでブラウザのキャッシュをコントロールし、ローディングアニメーションを1回のみ表示する方法を実装します。サンプルコードを配布してますのでぜひ活用してください。実装には前回のコードを使用しますのでそちらも参考ください。

スポンサーリンク
※本記事の情報は執筆時点のものであり、閲覧時点では変更されている可能性があります。また、ご利用の環境によっては、本記事の内容が正常に動作しないことがあります。最新の情報については、公式サイトなどでご確認ください。
 

実装動画

実装する内容は以下の動画を参照ください。

 

サンプルコード

こちらが上記の動画のサンプルコードです。

Javascript

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
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();
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();
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回目のコードを記述し、下部に初回のコードを記述します。

 

コードの解説

初回のコード

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// ここに記述します
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,
});
// ここに記述します 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, });
// ここに記述します
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回目のコード

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
// ここに記述します
const mv = gsap.timeline();
mv.to("#global-container", 1, {
opacity: 1,
visibility: "visible",
display: "block",
}).from(
"#global-container",
{
y: 50,
},
"<"
);
// ここに記述します const mv = gsap.timeline(); mv.to("#global-container", 1, { opacity: 1, visibility: "visible", display: "block", }).from( "#global-container", { y: 50, }, "<" );
// ここに記述します
          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が便利

関連記事