← 動的パーツギャラリーへ戻る

パーツ番号 07-03-10 ・ JavaScript使用

簡易プレーヤーバー

再生/一時停止ボタン・進捗バー・時間表示を備えた簡易プレーヤー。再生ボタンを押すと進捗バーが進み、時間表示も更新されます。動画UIの雛形に。

clickjs

プレビュー

ソースコード

HTML

<div class="d07-03-10-player">
          <div class="d07-03-10-screen"><svg viewBox="0 0 24 24"><path d="M8 5v14l11-7z"/></svg></div>
          <div class="d07-03-10-bar">
            <button class="d07-03-10-toggle" aria-label="再生 / 一時停止">
              <svg class="d07-03-10-i-play" viewBox="0 0 24 24"><path d="M8 5v14l11-7z"/></svg>
              <svg class="d07-03-10-i-pause" viewBox="0 0 24 24"><path d="M6 5h4v14H6zM14 5h4v14h-4z"/></svg>
            </button>
            <div class="d07-03-10-track"><div class="d07-03-10-fill"></div></div>
            <span class="d07-03-10-time">0:00 / 1:00</span>
          </div>
        </div>

CSS

.prev.d07-03-10{background:#0f172a}
        .d07-03-10-player{width:100%;max-width:340px;border-radius:14px;overflow:hidden;box-shadow:0 12px 28px rgba(0,0,0,.45)}
        .d07-03-10-screen{aspect-ratio:16/9;display:flex;align-items:center;justify-content:center;
          background:linear-gradient(135deg,#4f46e5,#db2777)}
        .d07-03-10-screen svg{width:44px;height:44px;fill:rgba(255,255,255,.75)}
        .d07-03-10-bar{display:flex;align-items:center;gap:10px;padding:10px 12px;background:#1e293b}
        .d07-03-10-toggle{flex:0 0 auto;width:34px;height:34px;border:none;border-radius:50%;background:#22d3ee;cursor:pointer;
          display:flex;align-items:center;justify-content:center}
        .d07-03-10-toggle svg{width:16px;height:16px;fill:#0f172a}
        .d07-03-10-i-pause{display:none}
        .d07-03-10-player.playing .d07-03-10-i-play{display:none}
        .d07-03-10-player.playing .d07-03-10-i-pause{display:block}
        .d07-03-10-track{flex:1;height:6px;border-radius:3px;background:#334155;overflow:hidden}
        .d07-03-10-fill{width:0;height:100%;background:#22d3ee;border-radius:3px}
        .d07-03-10-time{flex:0 0 auto;color:#cbd5e1;font-size:.68rem;font-variant-numeric:tabular-nums}

JavaScript

(function(){
        var root=document.querySelector('#item-07-03-10');
        if(!root)return;
        var player=root.querySelector('.d07-03-10-player'),
            btn=root.querySelector('.d07-03-10-toggle'),
            fill=root.querySelector('.d07-03-10-fill'),
            time=root.querySelector('.d07-03-10-time'),
            total=60,cur=0,timer=null;
        function fmt(s){var m=Math.floor(s/60),ss=Math.floor(s%60);return m+':'+(ss<10?'0':'')+ss;}
        function tick(){
          cur+=0.2;
          if(cur>=total){cur=total;stop();}
          fill.style.width=(cur/total*100)+'%';
          time.textContent=fmt(cur)+' / '+fmt(total);
        }
        function play(){player.classList.add('playing');timer=setInterval(tick,200);}
        function stop(){player.classList.remove('playing');clearInterval(timer);timer=null;}
        btn.addEventListener('click',function(){
          if(timer){stop();}
          else{if(cur>=total){cur=0;fill.style.width='0';}play();}
        });
      })();

クラス名 .d07-03-10 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。