(Sample)
ボタンを押してから結果が表示されるまでに時間がかかる処理には、更新中の文字とアニメーションを表示するとよいでしょう。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>更新中ボタン</title>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
<style>
#updateButton {
padding: 10px 20px;
font-size: 16px;
cursor: pointer;
color: white;
border: none;
border-radius: 5px;
background-color: #007bff; /* Bootstrapのprimaryカラー */
position: relative;
overflow: hidden;
margin: 10px;
}
.updating {
background-image: linear-gradient(135deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);
background-size: 1rem 1rem;
animation: stripeAnimation 1s linear infinite;
}
@keyframes stripeAnimation {
from {
background-position: 1rem 0;
}
to {
background-position: 0 0;
}
}
</style>
</head>
<body>
<button id="updateButton" onclick="showUpdatingMessage()">更新</button>
<script>
function showUpdatingMessage() {
let button = document.getElementById('updateButton');
button.innerHTML = '更新中...';
button.disabled = true;
button.classList.add('updating');
// 模擬的な更新処理(例: 3秒後に完了)
setTimeout(function() {
button.innerHTML = '更新';
button.disabled = false;
button.classList.remove('updating');
}, 3000);
}
</script>
</body>
</html>
このJavaScriptのポイントは以下のとおりです。
showUpdatingMessage関数: ボタンのテキストを「更新中…」に変更し、ボタンを無効化し、updatingクラスを追加します。
setTimeout: 模擬的な更新処理を3秒後に完了させ、元の状態に戻します。
以上。