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

パーツ番号 04-04-11 ・ JavaScript使用

画像プレビューサムネイル一覧UI

選択した画像がサムネイル一覧で並び、×ボタンで個別に取り消せる送信前プレビュー。商品登録フォームの複数画像添付確認に使えます。

clickjsinput

プレビュー

ソースコード

HTML

<div class="d04-04-11-wrap">
          <div class="d04-04-11-grid">
            <div class="d04-04-11-thumb" style="--c1:#fca5a5;--c2:#f472b6"><button class="d04-04-11-rm" type="button" aria-label="削除">×</button></div>
            <div class="d04-04-11-thumb" style="--c1:#93c5fd;--c2:#818cf8"><button class="d04-04-11-rm" type="button" aria-label="削除">×</button></div>
            <div class="d04-04-11-thumb" style="--c1:#86efac;--c2:#4ade80"><button class="d04-04-11-rm" type="button" aria-label="削除">×</button></div>
            <div class="d04-04-11-add">+</div>
          </div>
          <p class="d04-04-11-count"><span class="d04-04-11-n">3</span>/6 枚選択中</p>
        </div>

CSS

.d04-04-11 .d04-04-11-wrap{width:100%;max-width:230px;display:flex;flex-direction:column;align-items:center;gap:10px}
        .d04-04-11 .d04-04-11-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;width:100%}
        .d04-04-11 .d04-04-11-thumb{position:relative;aspect-ratio:1;border-radius:10px;background:linear-gradient(135deg,var(--c1),var(--c2));transition:transform .25s ease,opacity .25s ease}
        .d04-04-11 .d04-04-11-thumb.is-removing{transform:scale(.4);opacity:0}
        .d04-04-11 .d04-04-11-rm{position:absolute;top:-6px;right:-6px;width:20px;height:20px;border-radius:50%;border:none;background:#1f2937;color:#fff;font-size:12px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
        .d04-04-11 .d04-04-11-add{aspect-ratio:1;border-radius:10px;border:2px dashed #cbd5e1;color:#94a3b8;display:flex;align-items:center;justify-content:center;font-size:20px}
        .d04-04-11 .d04-04-11-count{margin:0;font-size:11px;color:#6b7280}

JavaScript

(function(){
          var root=document.currentScript.closest('.item');
          var grid=root.querySelector('.d04-04-11-grid');
          var nEl=root.querySelector('.d04-04-11-n');
          function updateCount(){
            nEl.textContent=grid.querySelectorAll('.d04-04-11-thumb').length;
          }
          grid.addEventListener('click',function(e){
            var btn=e.target.closest('.d04-04-11-rm');
            if(!btn) return;
            var thumb=btn.closest('.d04-04-11-thumb');
            thumb.classList.add('is-removing');
            setTimeout(function(){
              thumb.remove();
              updateCount();
            },260);
          });
        })();

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