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

パーツ番号 06-14-02 ・ JavaScript使用

シェア完了チェックマーク演出

ボタンを押すとアイコンがチェックマークに切り替わり「シェアしました」に文言が変わる。単体のSNSシェアボタンに最適です。

clickjs

プレビュー

ソースコード

HTML

<div class="d06-14-02-wrap">
          <button class="d06-14-02-btn" type="button">
            <span class="d06-14-02-icon">
              <svg class="d06-14-02-check" viewBox="0 0 24 24" width="16" height="16"><path d="M5 13l4 4L19 7" fill="none" stroke="#fff" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"/></svg>
              <svg class="d06-14-02-share" viewBox="0 0 24 24" width="16" height="16"><path d="M18 8a3 3 0 1 0-2.83-4H15a3 3 0 0 0 .05 3.88L8.9 11.1a3 3 0 1 0 0 1.8l6.15 3.22A3 3 0 1 0 18 8zM6 14a1 1 0 1 1 0-2 1 1 0 0 1 0 2z" fill="#fff"/></svg>
            </span>
            <span class="d06-14-02-label">シェアする</span>
          </button>
        </div>

CSS

.d06-14-02-wrap { display:flex; align-items:center; justify-content:center; }
        .d06-14-02-btn { display:flex; align-items:center; gap:8px; border:none; border-radius:999px; background:#3b82f6; color:#fff; padding:10px 20px; font-size:13px; font-weight:700; cursor:pointer; transition:background .3s ease; }
        .d06-14-02-btn.is-done { background:#22c55e; }
        .d06-14-02-icon { position:relative; width:16px; height:16px; display:inline-flex; }
        .d06-14-02-icon svg { position:absolute; inset:0; transition:transform .25s ease, opacity .25s ease; }
        .d06-14-02-check { transform:scale(0); opacity:0; }
        .d06-14-02-btn.is-done .d06-14-02-check { transform:scale(1); opacity:1; }
        .d06-14-02-btn.is-done .d06-14-02-share { transform:scale(0); opacity:0; }

JavaScript

(function(){
          var root = document.querySelector('.d06-14-02');
          var btn = root.querySelector('.d06-14-02-btn');
          var label = root.querySelector('.d06-14-02-label');
          var timer = null;
          btn.addEventListener('click', function(){
            btn.classList.add('is-done');
            label.textContent = 'シェアしました';
            clearTimeout(timer);
            timer = setTimeout(function(){
              btn.classList.remove('is-done');
              label.textContent = 'シェアする';
            }, 2200);
          });
        })();

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