パーツ番号 04-04-06 ・ JavaScript使用
一括アップロード全体進捗バー
個別ファイルの進捗と連動して全体進捗バーが伸びる。まとめてアップロードするフォームの状況把握に。
プレビュー
ソースコード
HTML
<div class="d04-04-06-wrap">
<div class="d04-04-06-head"><span>全体の進捗</span><span class="d04-04-06-total">0%</span></div>
<div class="d04-04-06-bar d04-04-06-big"><div class="d04-04-06-fill d04-04-06-fillbig"></div></div>
<div class="d04-04-06-mini">
<div class="d04-04-06-bar"><div class="d04-04-06-fill" data-i="0"></div></div>
<div class="d04-04-06-bar"><div class="d04-04-06-fill" data-i="1"></div></div>
<div class="d04-04-06-bar"><div class="d04-04-06-fill" data-i="2"></div></div>
</div>
</div>CSS
.d04-04-06 .d04-04-06-wrap{width:100%;max-width:220px;display:flex;flex-direction:column;gap:10px}
.d04-04-06 .d04-04-06-head{display:flex;justify-content:space-between;font-size:11px;color:#374151}
.d04-04-06 .d04-04-06-bar{height:6px;background:#e5e7eb;border-radius:4px;overflow:hidden}
.d04-04-06 .d04-04-06-fill{height:100%;width:0%;background:linear-gradient(90deg,#818cf8,#8b5cf6);border-radius:4px}
.d04-04-06 .d04-04-06-bar.d04-04-06-big{height:9px}
.d04-04-06 .d04-04-06-mini{display:flex;flex-direction:column;gap:6px}
.d04-04-06 .d04-04-06-mini .d04-04-06-bar{height:4px}JavaScript
(function(){
var root=document.currentScript.closest('.item');
var fills=root.querySelectorAll('.d04-04-06-mini .d04-04-06-fill');
var big=root.querySelector('.d04-04-06-fillbig');
var total=root.querySelector('.d04-04-06-total');
var speeds=[0.6,0.9,0.4];
var vals=[0,0,0];
setInterval(function(){
var sum=0;
for(var i=0;i<fills.length;i++){
vals[i]+=speeds[i];
if(vals[i]>100)vals[i]=100;
fills[i].style.width=vals[i]+'%';
sum+=vals[i];
}
var avg=sum/fills.length;
big.style.width=avg+'%';
total.textContent=Math.round(avg)+'%';
if(avg>=100){
setTimeout(function(){ vals=[0,0,0]; },1500);
}
},90);
})();クラス名 .d04-04-06 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。