1. ホーム
  2. jquery

[解決済み] jQueryを使って「Please Wait, Loading...」というアニメーションを作成するにはどうすればよいですか?

2022-03-16 04:21:40

質問

私のサイトに"please wait, loading"回転する円形のアニメーションを設置したいのですが、可能ですか?jQueryを使用して、どのようにこれを実現すればよいですか?

どのように解決するのですか?

様々な方法でこれを行うことができます。ページ上に小さなステータスとして "ロード中..." を表示するような繊細な方法もあれば、新しいデータのロード中にページ全体をグレーアウトさせるような大げさな方法もあります。以下に紹介する方法は、両方の方法を実現する方法を紹介します。

セットアップ

まず、quot;loading" のアニメーションを作成することから始めましょう。 http://ajaxload.info 今回使用するのは

ajaxリクエストを行う際にいつでも表示/非表示を切り替えることができる要素を作ってみましょう。

<div class="modal"><!-- Place at bottom of page --></div>

CSS

次に、派手さを出してみましょう。

/* Start by setting display:none to make this hidden.
   Then we position it in relation to the viewport window
   with position:fixed. Width, height, top and left speak
   for themselves. Background we set to 80% white with
   our animation centered, and no-repeating */
.modal {
    display:    none;
    position:   fixed;
    z-index:    1000;
    top:        0;
    left:       0;
    height:     100%;
    width:      100%;
    background: rgba( 255, 255, 255, .8 ) 
                url('http://i.stack.imgur.com/FhHRx.gif') 
                50% 50% 
                no-repeat;
}

/* When the body has the loading class, we turn
   the scrollbar off with overflow:hidden */
body.loading .modal {
    overflow: hidden;   
}

/* Anytime the body has the loading class, our
   modal element will be visible */
body.loading .modal {
    display: block;
}

そして最後に、jQueryの

さて、次はjQueryです。次の部分は、実はとてもシンプルです。

$body = $("body");

$(document).on({
    ajaxStart: function() { $body.addClass("loading");    },
     ajaxStop: function() { $body.removeClass("loading"); }    
});

それだ! イベントを body 要素にアタッチしています。 ajaxStart または ajaxStop イベントが発生します。ajaxイベントが始まると、ボディに"loading" クラスを追加し、イベントが終了すると、ボディから"loading" クラスを削除しています。

実際に見てみましょう。 http://jsfiddle.net/VpDUG/4952/