Heim > Artikel > Web-Frontend > Mobile HTML5 simuliert ein Löschereignis durch langes Drücken (mit Code)
Der Inhalt dieses Artikels befasst sich mit dem simulierten HTML5-Löschereignis (mit Code). Ich hoffe, dass es für Sie hilfreich ist.
Ich habe kürzlich eine Anfrage erhalten, lange auf eine bestimmte Beschriftung zu drücken, um eine schwebende Schaltfläche zum Löschen anzuzeigen. Diese Anforderung kommt bei Apps tatsächlich sehr häufig vor, aber im mobilen h5 gibt es kein langes Drücken-Ereignis, daher müssen wir dieses Ereignis selbst simulieren.
Der ungefähre Effekt ist wie folgt:
Gib das auf Klicken Sie auf ein Ereignis und fällen Sie ein Urteil. Die Dauer des Drückens bestimmt, ob geklickt oder lange gedrückt wird.
Verwenden Sie Touchstart- und Touchend-Ereignisse
, um einen Timer zu starten in Touchstart, zum Beispiel in Nach 700 ms wird ein Menü für langes Drücken angezeigt
Löschen Sie diesen Timer in Touchend, sodass das Menü für langes Drücken bereits angezeigt wird, wenn die Druckzeit 700 ms überschreitet angezeigt werden, und das Löschen des Timers hat keine Auswirkungen; wenn die Presszeit weniger als 700 ms beträgt, wird das Menü für langes Drücken in Touchstart gelöscht, bevor es angezeigt werden kann.
Daraus können wir simulierte Long-Press-Events umsetzen.
Bitte konzentrieren Sie sich auf JS. Der vollständige Code wird hier veröffentlicht, damit jeder ihn genauer betrachten kann. Der Code kann kopiert werden, um den Effekt direkt zu sehen in CSS Die meisten von ihnen verschönern nur den Stil und verbergen die Schaltfläche „Löschen“ am Anfang
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <link rel="stylesheet" type="text/css" href="./longpress.css" /> </head> <body> <div> <div id="label">长按我</div> <div>删除</div> </div> <script src="./longpress.js"></script> </body> </html>
let timer = null let startTime = '' let endTime = '' const label = document.querySelector('.label') const deleteBtn = document.querySelector('.delete_btn') label.addEventListener('touchstart', function () { startTime = +new Date() timer = setTimeout(function () { deleteBtn.style.display = 'block' }, 700) }) label.addEventListener('touchend', function () { endTime = +new Date() clearTimeout(timer) if (endTime - startTime < 700) { // 处理点击事件 label.classList.add('selected') } })
.container { position: relative; display: inline-block; margin-top: 50px; } .label { display: inline-block; box-sizing: border-box; width: 105px; height: 32px; line-height: 32px; background-color: #F2F2F2; color: #5F5F5F; text-align: center; border-radius: 3px; font-size: 14px; } .label.selected { background-color: #4180cc; color: white; } .delete_btn { display: none; position: absolute; top: -8px; left: 50%; transform: translateX(-50%) translateY(-100%); color: white; padding: 10px 16px; background-color: rgba(0, 0, 0, .7); border-radius: 6px; line-height: 1; white-space: nowrap; font-size: 12px; } .delete_btn::after { content: ''; width: 0; height: 0; border-width: 5px; border-style: solid; border-color: rgba(0, 0, 0, .7) transparent transparent transparent; position: absolute; bottom: -9px; left: 50%; transform: translateX(-50%); }
Das obige ist der detaillierte Inhalt vonMobile HTML5 simuliert ein Löschereignis durch langes Drücken (mit Code). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!