0%

Programmingプログラミングナレッジ

Posted:2018.01.29

jQueryでプログレスバー機能を実装する

ページの読み込み進捗状況をプログレスバーで表示されているのをたまに見かけますが、今回はjQueryでそれを実装してみたいと思います。前回記事「jQueryでページローディング機能を実装する」と合わせてページローディングのUIとしてみたり、ウェブアプリの機能としても使えそうです。

 

ただし、今回は簡素なものになりますので厳密に読み込み状況を表現する場合は別の方法を検討した方が良さそうです。あくまでビジュアルとしてみせる方法になります。

 

今回のプログレスバーで表現する進捗状況ですが、ロジックとしてはページ内部の画像の読み込み完了の割合を基準としています。理由としては他のファイルと比べて相対的にファイルサイズが大きいのである程度の精度が期待できるという点です。しかしCDNで配信されているjsファイルなど画像より読み込み時間がかかりそうなケースもありますが、そこは気にしないという前提です、、

 

ではコードを見ていきます。まずはHTMLから、プログレスバーの背景とプログレスバー本体の要素を重ねるように配置します。CSSで見た目を調整しますが、プログレスバー本体のwidthは0にしておきます。

// HTML ※一部省略
<div id="progress-box">
   <div id="progress-bar">
   </div>
</div>

// CSS
#progress-box {
   width: 100%;
   height: 60px;
   background: #c5c5c5;
   position: relative;
}
#progress-bar {
   width: 0;
   height: 60px;
   background: #00cab9;
   position: absolute;
   left: 0;
   top: 0;
}

 

 

次にjQueryでプログレスバーの機能を実装していきます。まずは画像のカウント用変数とページ内の画像のトータル数を取得します。そして、画像が読み込まれるごとにカウント用変数に数値を追加していきます。

 

それに合わせて、ページ全体の画像に対して読み込んだ画像数の割合でプログレスバーのwidthを変えるようにしていきます。すべて画像が読み込まれた状態でwidthが100%になるようにします。この時に読み込み毎に実行する必要があるのでsetInterval関数の中で行うようにします。引数で指定する間隔の時間は短くすればするほどプログレスバーの動きが滑らかになります。

var progress = 0;
var imgCount = $('img').length;
$("img").each(function(){
   var src = $(this).attr('src');
   $("<img>").attr('src',src).on('load',function(){
     progress++;
   });
});
setInterval(function(){
   $("#progress-bar").css({
     'width': (progress / imgCount) * 100 + '%'
   });
}, 1);

 


 

いかがでしょうか、簡単ですが結構本格的な感じに仕上がりますのでぜひ試してみてはいかがでしょうか。今回のサンプルはこちらに用意しています。

 

(参考にさせていただいたサイト様)
ページを読み込む際にプログレスバーでローディング状況を表示

author
この記事を書いた人オガワ シンヤ
FacebookTwitter

DesignSupply.代表 / ディレクター・ウェブデザイナー・フロントエンドエンジニアをやっています。「ウェブとデザインでヒト・モノ・サービスを繋げ新しい価値を生み出す」をコンセプトに日々奮闘中!制作中はチョコレートが欠かせない三十路Webクリエイター。

制作のご依頼やお問い合わせ・パートナー業務提携のご相談はこちら

デザインやウェブ制作についてのご依頼やご相談、その他お問い合わせなどもお気軽にご連絡ください。フットワークの軽さやレスポンスの早さ、また豊富な経験や知識、技術を活かした対応力といったフリーランスクリエイターの強みでクライアント様、パートナー企業様のお力になります。デザインからコーディングやWordPress実装といったウェブサイト構築はもちろん、写真撮影や動画編集、コンテンツ制作からサイト運用サポートまで一括してお任せください。

ホームページ制作のご検討やウェブ運用でお悩みの経営者様や企業のウェブ担当者様をはじめ、個人で店舗を営んでいらっしゃるオーナー様、フリーで活動されているビジネスオーナー様はもちろんのこと、リソース不足でお困りの制作会社様、またクリエイターをお探しの代理店様も大歓迎です。

コンタクトをご希望の方はお手数ですが、下記よりお問い合わせフォームのページへアクセスしていただき、必要事項を入力の上メッセージを送信してください。確認でき次第すぐに折り返しご連絡致します。

こんな記事も読まれています

コメントもお気軽にどうぞ

記事に関するご質問やご意見などありましたら下記のコメントフォームよりお気軽に投稿ください。なおメールアドレスは公開されませんのでご安心ください。また、* が付いている欄は必須項目となります。

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。

CAPTCHA


ページトップへ
大阪市天王寺区のホームページ制作デザイン事務所(SOHO)DesignSupply.【デザインサプライ】