パーツ番号 08-02-07 ・ JavaScript使用
円形パーセントローダー
SVG円のstroke-dashoffsetと数値が0→100で同期して進むローダー。WordPressサイトのオープニングやスキルグラフにも応用できます。
プレビュー
ソースコード
HTML
<div class="d08-02-07-wrap">
<svg class="d08-02-07-svg" viewBox="0 0 120 120" width="120" height="120" aria-hidden="true">
<circle class="d08-02-07-track" cx="60" cy="60" r="52" />
<circle class="d08-02-07-prog" cx="60" cy="60" r="52" />
</svg>
<span class="d08-02-07-num">0%</span>
</div>CSS
.d08-02-07-wrap{position:relative;width:120px;height:120px}
.d08-02-07-svg{transform:rotate(-90deg)}
.d08-02-07-track,.d08-02-07-prog{
fill:none;stroke-width:8;stroke-linecap:round;
}
.d08-02-07-track{stroke:#e5e7eb}
.d08-02-07-prog{
stroke:#f59e0b;
stroke-dasharray:326.7;stroke-dashoffset:326.7;
}
.d08-02-07-num{
position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
font-size:22px;font-weight:700;color:#374151;font-variant-numeric:tabular-nums;
}JavaScript
(function(){
var prog=document.querySelector('.d08-02-07 .d08-02-07-prog');
var num=document.querySelector('.d08-02-07 .d08-02-07-num');
if(!prog||!num)return;
var CIRC=326.7,p=0;
setInterval(function(){
p+=2;
if(p>115){p=0;} /* 100到達後少し待ってリセット */
var v=Math.min(p,100);
prog.style.strokeDashoffset=(CIRC*(1-v/100)).toFixed(1);
num.textContent=v+'%';
},60);
})();クラス名 .d08-02-07 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。