ローディングインジケーター
CoddyのHTMLジャーニー「JavaScript in Action」セクションの一部 — レッスン 10/27。
ローディングインジケーターは、フォームの送信中やデータの読み込み中など、バックグラウンドで何かが進行していることをユーザーに知らせるための小さな視覚的要素(スピナーやアニメーションなど)です。ユーザーを不安にさせるのではなく、フィードバックを表示することでユーザーエクスペリエンスを向上させます。
まず、このHTMLをページに追加します:
<button id="loadBtn">Load Data</button>
<div id="loading-spinner" class="spinner-hidden">
<div class="spinner"></div>
</div>次に、要素をホイールのように見せるためのスタイルをCSSで追加し、キーフレームを使用して無限に回転させ続けます。また、必要に応じてスピナーを非表示にするために .hidden クラスを使用します。
.spinner {
width: 40px;
height: 40px;
border: 4px solid #f3f3f3;
border-top: 4px solid #3498db;
border-radius: 50%;
animation: spin 1s linear infinite;
}
.hidden {
display: none;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}次に、スピナーを表示/非表示にするためのJavaScriptを追加します。
const loadBtn = document.getElementById("loadBtn");
const spinner = document.getElementById("spinner");
loadBtn.addEventListener("click", function () {
// スピナーを表示
spinner.classList.remove("hidden");
// 3秒後、スピナーを非表示にしてアラートを表示
setTimeout(function () {
spinner.classList.add("hidden");
alert("Data loaded successfully!");
}, 3000);
});ボタンがクリックされると、スピナーを表示し、3秒間待機してから、それを非表示にしてアラートを表示します。
チャレンジ
簡単あなたのタスク:
- ボタンのクリックイベントリスナー内で、"hidden" クラスを削除してスピナーを表示するコードを追加してください。このコードを setTimeout 関数の前に配置してください。
自分で試してみよう
<!DOCTYPE html>
<html>
<head>
<title>Loading Spinner Example</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="container">
<h1>Welcome to My Page</h1>
<p>Click the button below to simulate loading data.</p>
<button id="loadBtn">Load Data</button>
<div id="spinner" class="spinner hidden"></div>
</div>
<script src="script.js"></script>
</body>
</html>
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。