html画面を読み込み完了するまでローディング画像を表示するjQuery
- 投稿日:2015/10/28 |最終更新:2015/10/31
- JavaScript/jQuery
大きなスライドショーを表示していたり、フルスクリーンの画像背景を利用していたり、コンテンツ量が多いサイトなど、重いhtml画面を読込中にサイトのデザインが崩れることが心配な場合は、htmlを読込中にはローディング画像を表示し、読み込みが完了した時にサイト内容を表示するようにしておくと便利です。
画面読込中にローディング画像を表示するhtml画面のHTMLソースは以下のようにします。
HTML例
<html> <body> <div id="loader"> <img src="./loading.gif" alt="Now Loading..." width="80px" height="80px" /> </div> <div id="fade"></div> <div id="container"> サイトのコンテンツを表示します。 </div> </body> </html>
id="container"
のdiv要素の中にサイトのコンテンツを記載し、画面読込中はid="fade"
のdiv要素でid="container"
のdiv要素を覆い隠して、id="loder"
のdiv要素を表示します。
id="fade"
のdiv要素の中身は空でOKです。
id="loder"
のdiv要素には表示したいローディング画像を入れておきます。
id="loder"
とid="fade"
はbodyタグの直下に記載してください。
CSS例
#loader{ width: 80px; height: 80px; display: none; position: fixed; top: 50%; left: 50%; margin-top: -40px; /* heightの半分のマイナス値 */ margin-left: -40px; /* widthの半分のマイナス値 */ z-index: 10; /* #fadeより多い値を入れて下さい */ } #fade{ width: 100%; height: 100%; display: none; background-color: #fff; position: absolute; top: 0px; left: 0px; z-index: 5; /* #loaderより少ない値を入れて下さい */ }
#loder
では画像が中央に表示されるように調整しています。
更に、#loder
が#fade
よりも上に表示されるようにしています。
なお、#container
は自由に装飾してOKです。
#container
に対するdisplay: none;
の切り替えはjQuery側で行います。
jQuery例
$('head').append( '<style type="text/css">#container { display: none; } #fade, #loader { display: block; }</style>' ); jQuery.event.add(window,"load",function() { // 全ての読み込み完了後に呼ばれる関数 var pageH = $("#container").height(); $("#fade").css("height", pageH).delay(900).fadeOut(800); $("#loader").delay(600).fadeOut(300); $("#container").css("display", "block"); });
#container
のdisplay: inline;
とdisplay: block;
を切り替えています。
HTML画面の読込中は#fade
及び#loder
が表示され、全ての読み込みが完了すると、#container
が表示されます。
上記切り替えをjQueryで行うことにより、javascriptを切っている閲覧者にはローディングが表示されないようにできます。
ローディング画像について
ローディング画像は様々なものが配布されていますが、オリジナルのローディング画像を生成できるジェネレータがありますのでご紹介します。
上記サイトは海外のジェネレータですが、7種類のローディング画像(GIF)を生成できるので便利です。
上記サイトは海外のジェネレータですが、様々な種類の透過済のローダー画像を生成できるので便利です。
参考URL
参考にさせていただいたのは
2GRAVITY様:jQueryでhtmlの簡易ローディング画面をつくる
WPC様:HTML版簡易ローディング画面設置jQuery
上記サイト様です。
有意義な情報をご提供いただきまことにありがとうございます。