とある案件でページ遷移やアクセスした時にページの上部にプログレスバーを表示したいと依頼があったためプログレスバーの作り方。

HTML
<div id="progress-box">
  <div id="progress-bar"></div>
</div>

 

SCSS
#progress-box {
  width: 100%;
  height: 0;
  position: relative;
  z-index: 5;
  background: transparent;

  #progress-bar {
    width: 0;
    height: 3px;
    background: #000000;
    position: fixed;
    left: 0;
    top: 0;
    z-index: 6;
    transition: .3s;
  }
}

 

jQuery
// progress bar 
var progress = 0;
var imgCount = $('img').length;
$('img').each(function(){
  var src = $(this).attr('src');
  $('<img>').attr('src',src).on('load',function(){
    progress++;
  });
});

var timer = setInterval(function(){
  $('#progress-bar').css({
    'width': (progress / imgCount) * 100 + '%'
  });

  if((progress / imgCount) * 100 == 100){
    clearInterval(timer);
    $('#progress-bar').delay(500).animate({
      'opacity': 0
    }, 200);
  }
}, 1);