パーツ番号 11-03-08 ・ JavaScript使用
スワイプで削除(リスト)
リスト項目を左にスワイプ/ドラッグすると削除ボタンが現れ、タップで消去。WordPressのモバイル通知・メッセージ管理に。ドラッグとタップで動作。
プレビュー
ソースコード
HTML
<div class="d11-03-08-phone">
<div class="d11-03-08-screen">
<div class="d11-03-08-content">受信トレイ</div>
<div class="d11-03-08-list" id="d11-03-08-list">
<div class="d11-03-08-item"><div class="d11-03-08-del">削除</div><div class="d11-03-08-fg">メッセージ 1</div></div>
<div class="d11-03-08-item"><div class="d11-03-08-del">削除</div><div class="d11-03-08-fg">メッセージ 2</div></div>
<div class="d11-03-08-item"><div class="d11-03-08-del">削除</div><div class="d11-03-08-fg">メッセージ 3</div></div>
</div>
</div>
</div>CSS
.d11-03-08-phone{width:190px;height:240px;border-radius:24px;border:6px solid #1f2937;background:#fff;position:relative;overflow:hidden;box-shadow:0 10px 30px rgba(0,0,0,.15)}
.d11-03-08-screen{position:absolute;inset:0;background:#f8fafc}
.d11-03-08-content{position:absolute;top:14px;left:0;right:0;text-align:center;color:#94a3b8;font-size:13px;font-weight:600}
.d11-03-08-list{position:absolute;top:44px;left:10px;right:10px}
.d11-03-08-item{position:relative;height:40px;margin-bottom:8px;border-radius:10px;overflow:hidden;background:#ef4444}
.d11-03-08-del{position:absolute;top:0;right:0;bottom:0;width:64px;display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:700;cursor:pointer}
.d11-03-08-fg{position:absolute;inset:0;background:#fff;border:1px solid #e5e7eb;border-radius:10px;display:flex;align-items:center;padding:0 12px;font-size:12px;color:#334155;transition:transform .28s;touch-action:pan-y;user-select:none}
.d11-03-08-fg.d11-03-08-open{transform:translateX(-64px)}JavaScript
(function(){
var root=document.getElementById('item-11-03-08');if(!root)return;
root.querySelectorAll('.d11-03-08-item').forEach(function(it){
var fg=it.querySelector('.d11-03-08-fg'),del=it.querySelector('.d11-03-08-del');
var sx=0,dx=0,drag=false;
fg.addEventListener('pointerdown',function(e){drag=true;sx=e.clientX;fg.style.transition='none';fg.setPointerCapture(e.pointerId);});
fg.addEventListener('pointermove',function(e){if(!drag)return;dx=Math.max(-64,Math.min(0,e.clientX-sx-(fg.classList.contains('d11-03-08-open')?64:0)));fg.style.transform='translateX('+dx+'px)';});
fg.addEventListener('pointerup',function(){if(!drag)return;drag=false;fg.style.transition='';fg.style.transform='';fg.classList.toggle('d11-03-08-open',dx<-30);dx=0;});
del.addEventListener('click',function(){it.style.transition='opacity .25s,height .25s,margin .25s';it.style.opacity='0';it.style.height='0';it.style.margin='0';});
});
})();クラス名 .d11-03-08 は本ライブラリ内での識別用です。複数のパーツを同じページで使う場合は、重複しないよう名前を変更してください。