ボタンクリック時にスピナーを表示する方法


  1. HTMLとCSSを使用した方法:

HTMLのボタン要素とスピナー要素、およびCSSを使用してスピナーをスタイル付けします。

HTML:

<button id="myButton" onclick="showSpinner()">クリック</button>
<div id="spinner" class="hidden"></div>

CSS:

.hidden {
  display: none;
}
.spinner {
  /* スピナーのスタイルを定義 */
}

JavaScriptを使用して、ボタンクリック時にスピナーを表示および非表示にする関数を作成します。

JavaScript:

function showSpinner() {
  var spinner = document.getElementById('spinner');
  spinner.classList.remove('hidden');

  // スピナーを表示した後、非同期処理や他の作業を開始します

  // 作業が完了したら、以下のコードを使用してスピナーを非表示にします
  // spinner.classList.add('hidden');
}
  1. JavaScriptライブラリを使用した方法:

モダンなフレームワークやライブラリを使用することで、ボタンクリック時にスピナーを表示することができます。例として、ReactとReact Spinnersライブラリを使用した方法を示します。

まず、ReactとReact Spinnersをインストールします。

npm install react react-spinners

Reactコンポーネント内で、ボタンとスピナーをレンダリングする方法を記述します。

import React, { useState } from 'react';
import { css } from '@emotion/react';
import { ClipLoader } from 'react-spinners';
function MyComponent() {
  const [loading, setLoading] = useState(false);
  const override = css`
    display: block;
    margin: 0 auto;
    border-color: red;
  `;
  const handleClick = async () => {
    setLoading(true);
    // 非同期処理や他の作業を開始します
    // 作業が完了したら、以下のコードを使用してスピナーを非表示にします
    // setLoading(false);
  };
  return (
    <div>
      <button onClick={handleClick}>クリック</button>
      <ClipLoader color={'#0000ff'} loading={loading} css={override} size={50} />
    </div>
  );
}
export default MyComponent;

上記の例では、ReactのuseStateフックを使用してloading状態を管理し、ボタンクリック時にloadingをtrueに設定してスピナーを表示します。

以上の方法を使用すると、ボタンクリック時にスピナーを表示することができます。詳細な実装は使用しているフレームワークやライブラリによって異なる場合がありますが、上記の例は一般的なアプローチです。