デザイン、システム、マーケティングなど
WEBサイトに関わることをまとめてます



投稿日時: 2014年7月25日 カテゴリー: JavaScript・jQuery
JavaScript/jQueryでローディングバー・プログレスバーを表示させて読み込み処理を行うには「imagesLoaded」というライブラリを使用して、htmlにある画像の読み込み状況を監視します。
まず、プログレス処理を行ないたいページに「jQuery」と「imagesLoaded」を読み込ませます。
<script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="imagesloaded.js"></script>
次にcssでプログレスバーの設定を行ないます。
#progress {
width: 300px;
height: 20px;
}
#progressBar {
width: 0;
height: 20px;
background-color: red;
}
プログレスバーのHTMLは以下になります。
そして、メインのプログレス処理を行うプログラムになります。
$(function(){
// bodyの画像数を取得
var imgNum = imagesLoaded('body').images.length;
// 読み込んだ画像の数を格納
var loadedImg = 0;
// 現在のプログレス値を格納
var progressNowPosition = 0;
// 1秒間に50回、progressMonitor()を実行する
Timer = setInterval(progressMonitor, 1000/50);
// 画像を読み込んだらloadedImgを加算する
imagesLoaded('body').on('progress', function(){
loadedImg++;
});
// 画像の読み込み状況をチェックし、更新する関数
function progressMonitor(){
// 読み込んだ画像のパーセンテージ
var progressPosition = (loadedImg/imgNum) * 100;
// プログレス値を現在値と目標値からイージングする
progressNowPosition += (progressPosition-progressNowPosition) * 0.1;
// プログレスバーの横幅を指定する
$('#progressBar').css('width', progressNowPosition+'%');
// 読み込んだ画像のパーセンテージ数値を表示する
$('#progressTxt').text(Math.floor(progressNowPosition)+'%');
// 読み込みが完了した場合の処理
if(progressNowPosition >= 100){
clearInterval(Timer);
$('#progress').fadeOut(1000, function(){
$('#imgBox').fadeIn(1000);
});
}
// イージング計算を完了させる
if(progressNowPosition > 99.9){
progressNowPosition = 100;
}
}
});