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

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

ドラッグでゴミ箱に投入して削除

リスト項目をつかんでゴミ箱エリアまでドラッグして離すと、その項目が削除されます。WordPressのメディアライブラリやファイル管理一覧の削除操作に活用できます。

dragjs

プレビュー

ソースコード

HTML

<div class="d08-07-12-wrap">
          <ul class="d08-07-12-list" id="d08-07-12-list">
            <li class="d08-07-12-item" draggable="true">🖼️ 写真01.jpg</li>
            <li class="d08-07-12-item" draggable="true">🖼️ 写真02.jpg</li>
            <li class="d08-07-12-item" draggable="true">🖼️ 写真03.jpg</li>
          </ul>
          <div class="d08-07-12-trash" id="d08-07-12-trash">🗑 ここにドラッグして削除</div>
        </div>

CSS

.d08-07-12-wrap{display:flex;flex-direction:column;gap:14px;width:100%;max-width:240px}
        .d08-07-12-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
        .d08-07-12-item{background:#fff;border:1.5px solid #e2e2e8;border-radius:10px;padding:8px 12px;font-size:12.5px;font-weight:600;color:#2a2d3a;cursor:grab;transition:opacity .25s;box-shadow:0 1px 2px rgba(0,0,0,.04)}
        .d08-07-12-item.is-dragging{opacity:.35}
        .d08-07-12-trash{border:2px dashed #f1b5c0;border-radius:12px;padding:12px;text-align:center;font-size:12px;font-weight:700;color:#e0708a;transition:background .2s,border-color .2s,color .2s}
        .d08-07-12-trash.is-over{background:#fff1f4;border-color:#ef4444;color:#ef4444}
        .d08-07-12-empty{font-size:12px;color:#b0b4c0;text-align:center;padding:8px 0;list-style:none}

JavaScript

(function(){
        var root=document.getElementById('item-08-07-12');if(!root)return;
        var list=root.querySelector('#d08-07-12-list'),trash=root.querySelector('#d08-07-12-trash');
        if(!list||!trash)return;
        var dragItem=null;
        list.addEventListener('dragstart',function(e){
          var li=e.target.closest('.d08-07-12-item');if(!li)return;
          dragItem=li;li.classList.add('is-dragging');
          if(e.dataTransfer)e.dataTransfer.effectAllowed='move';
        });
        list.addEventListener('dragend',function(){
          if(dragItem)dragItem.classList.remove('is-dragging');
          dragItem=null;
        });
        trash.addEventListener('dragover',function(e){e.preventDefault();trash.classList.add('is-over');});
        trash.addEventListener('dragleave',function(){trash.classList.remove('is-over');});
        trash.addEventListener('drop',function(e){
          e.preventDefault();
          trash.classList.remove('is-over');
          if(!dragItem)return;
          dragItem.remove();
          dragItem=null;
          if(!list.querySelector('.d08-07-12-item')){
            var empty=document.createElement('li');
            empty.className='d08-07-12-empty';
            empty.textContent='すべて削除しました';
            list.appendChild(empty);
          }
        });
      })();

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