パーツ番号 07-06-04 ・ JavaScript使用
波形シークバー(クリックでシーク)
音声波形上をクリックすると再生位置がその地点まで移動する、シーク操作つきの波形バーです。
プレビュー
ソースコード
HTML
<div class="seek07-06-04">
<div class="bars07-06-04">
<span style="--h:30%"></span><span style="--h:55%"></span><span style="--h:80%"></span><span style="--h:40%"></span>
<span style="--h:65%"></span><span style="--h:90%"></span><span style="--h:35%"></span><span style="--h:60%"></span>
<span style="--h:45%"></span><span style="--h:75%"></span><span style="--h:50%"></span><span style="--h:85%"></span>
<span style="--h:40%"></span><span style="--h:60%"></span><span style="--h:30%"></span><span style="--h:70%"></span>
</div>
<div class="progress07-06-04"></div>
<div class="knob07-06-04"></div>
</div>CSS
.d07-06-04 .seek07-06-04{ position:relative; width:90%; max-width:280px; height:60px; cursor:pointer; }
.d07-06-04 .bars07-06-04{ position:absolute; inset:0; display:flex; align-items:center; gap:3px; }
.d07-06-04 .bars07-06-04 span{ flex:1; height:var(--h); background:#d8d8e0; border-radius:2px; }
.d07-06-04 .progress07-06-04{ position:absolute; top:0; left:0; height:100%; width:35%; overflow:hidden; display:flex; align-items:center; gap:3px; pointer-events:none; }
.d07-06-04 .knob07-06-04{ position:absolute; top:0; left:35%; width:2px; height:100%; background:#4f46e5; pointer-events:none; transition:left .1s linear; }JavaScript
(function(){
var root = document.querySelector('.d07-06-04');
var seek = root.querySelector('.seek07-06-04');
var bars = root.querySelector('.bars07-06-04');
var progress = root.querySelector('.progress07-06-04');
var knob = root.querySelector('.knob07-06-04');
function buildProgressBars(){
progress.innerHTML = bars.innerHTML.replace(/background:#d8d8e0/g, 'background:#4f46e5');
}
function setPos(ratio){
ratio = Math.max(0, Math.min(1, ratio));
progress.style.width = (ratio*100) + '%';
knob.style.left = (ratio*100) + '%';
}
buildProgressBars();
setPos(0.35);
seek.addEventListener('click', function(e){
var rect = seek.getBoundingClientRect();
setPos((e.clientX - rect.left) / rect.width);
});
})();クラス名 .d07-06-04 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。