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

パーツ番号 08-11-12 ・ JavaScript使用

カチカチ刻むダイヤルカウンター

押すたびに目盛りの針が段階的に回転し、数字がコマ送りで一段ずつ増える演出です。WordPressの数量選択やクリックカウンターの操作感を強調したい場面で使えます。

clickjs3d

プレビュー

ソースコード

HTML

<div class="d08-11-12-stage">
          <button class="d08-11-12-dial" type="button" aria-label="ダイヤルを回してカウントアップ">
            <svg viewBox="0 0 60 60" width="56" height="56" aria-hidden="true">
              <circle cx="30" cy="30" r="26" fill="none" stroke="#e2e2e8" stroke-width="4"/>
              <path class="d08-11-12-tick" d="M30 6v8" stroke="#6a5cff" stroke-width="4" stroke-linecap="round"/>
            </svg>
            <span class="d08-11-12-num">0</span>
          </button>
          <span class="d08-11-12-hint">クリックでカチカチ加算</span>
        </div>

CSS

.d08-11-12-stage{display:flex;flex-direction:column;align-items:center;gap:10px}
        .d08-11-12-dial{position:relative;background:none;border:none;cursor:pointer;padding:6px;display:flex;align-items:center;justify-content:center}
        .d08-11-12-tick{transform-origin:30px 30px;transition:transform .18s steps(1,end)}
        .d08-11-12-dial.is-tick .d08-11-12-tick{animation:d08-11-12-kick .18s ease-out}
        @keyframes d08-11-12-kick{0%{stroke:#ff9f43}100%{stroke:#6a5cff}}
        .d08-11-12-num{position:absolute;font-size:16px;font-weight:800;color:#2a2d3a}
        .d08-11-12-hint{font-size:11px;color:#9aa0ad}

JavaScript

(function(){
        var dial=document.querySelector('#item-08-11-12 .d08-11-12-dial');
        var tick=document.querySelector('#item-08-11-12 .d08-11-12-tick');
        var num=document.querySelector('#item-08-11-12 .d08-11-12-num');
        if(!dial||!tick||!num)return;
        var count=0,step=30;
        dial.addEventListener('click',function(){
          count++;
          step+=30;
          tick.style.transform='rotate('+(step%360)+'deg)';
          num.textContent=String(count);
          dial.classList.remove('is-tick');void dial.offsetWidth;dial.classList.add('is-tick');
        });
      })();

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