0
0

JavaScriptの復習②

Posted at

はじめに

今回は、Chapter4のイベント操作の基本と仕組みについてまとめていきます。

イベント操作とは

JavaScriptのイベント操作とは、ユーザーのアクション(クリック、キー入力、マウス移動など)やブラウザの状態変化(ページ読み込み、リサイズなど)をトリガーとして発生する出来事のことを指します。これにより、特定の処理や動作を実行することができます。具体的には、イベントリスナーを使ってイベントを監視し、発生した際に関数を呼び出すことができます。

ローディング中の画面を作ろう

下記のサイトを参考に、ローディング中の様子についてコードを書いていきます。

全体のコード解説

See the Pen ローディング中の画面 by Uka Suzuki (@uukasuzuki_) on CodePen.

CSS3のコード解説

/* ローディング中 */
#loading {
  transition: all 10s;
  background-color: #ddd;
  position: fixed;
  z-index: 9999;
  inset: 0;
  display: grid;
  place-items: center;
}

.spinner {
  border: 16px solid #f3f3f3; /* Light grey */
  border-top: 16px solid #3498db; /* Blue */
  border-radius: 50%;
  width: 100px;
  height: 100px;
  animation: spin 2s linear infinite;
}

@keyframes spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

/* ローディング完了 */
.loaded {
  opacity: 0;
  visibility: hidden;
}
  • @keyframes spinで、スピナーの回転アニメーションを定義しています。また.loadedでは、ローディングが完了した際に適用され、透明度を0にして視覚的に隠します。

JavaScriptのコード解説

const loading = document.querySelector("#loading");
window.addEventListener("load", () => {
  loading.classList.add("loaded");
});
  • const loading = document.querySelector("#loading");は、HTML内のidがloadingの要素を選択し、loadingという変数に格納します。この要素は、ローディング画面を表示するためのものです。

  • window.addEventListener("load", () => { ... });は、ウィンドウが完全に読み込まれた際(すべてのリソースが読み込まれた後)にイベントリスナーを追加します。

  • loading.classList.add("loaded");は、ローディングが完了した際に、loadedというクラスをloading要素に追加します。このクラスによって、CSSで定義されたスタイル(例えば、透明度や可視性を変更するスタイル)が適用され、ローディング画面がフェードアウトします。

三点ドットの場合

See the Pen ローディング中の画面(三点ドットの場合) by Uka Suzuki (@uukasuzuki_) on CodePen.

JavaScriptのコード解説

document.addEventListener("DOMContentLoaded", () => {
  const loader = document.querySelector(".loader");
  // 3秒後にフェードアウトを開始
  setTimeout(() => {
    loader.style.transition = "opacity 1s";
    loader.style.opacity = 0;
    // フェードアウト後にローダーを非表示にする
    setTimeout(() => {
      loader.style.display = "none";
    }, 1000); // 1秒後に非表示
  }, 3000); // 3秒待機
});
  • setTimeout(() => { ... }, 3000);では、3秒(3000ミリ秒)後に、指定した処理を実行します。この中ではローダーのフェードアウトを開始します。また、loader.style.transition = "opacity 1s";を使い、ローダーの透明度が変化する際のアニメーションを設定します。ここでは、1秒かけて透明度が変わるように指定しています。

  • loader.style.opacity = 0;は、ローダーの透明度を0に設定し、フェードアウトを実現します。loader.style.display = "none";では、フェードアウト後にローダーを完全に非表示にします。これにより、画面上に表示されない状態になります。

    この流れで、3秒間表示された後にローディングアニメーションがフェードアウトし、最終的には非表示になる仕組みです。

まとめ

今回は、ローディング中のアニメーションについてまとめました。パターンを参考に、Webサイトでよく使われるものも制作していきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0