Viele neue Ereignisse wurden zu HTML hinzugefügt, aber aufgrund von Kompatibilitätsproblemen werden viele Ereignisse nicht häufig verwendet. Als Nächstes stellen wir einige nützliche mobile Touch-Ereignisse vor: touchstart, touchmove, touchend.
einführenLassen Sie uns diese Ereignisse kurz vorstellen:
Diese Berührungsereignisse haben gemeinsame Dom-Eigenschaften. Darüber hinaus enthalten sie drei Eigenschaften zum Verfolgen von Berührungen:
Jedes Touch-Objekt enthält die folgenden Eigenschaften:
Nachdem Sie nun die Eigenschaften von Berührungsereignissen verstanden haben, beginnen wir mit der spannenden praktischen Sitzung.
Tatsächlicher KampfLassen Sie uns Touch-Ereignisse verwenden, um einen verschiebbaren Fortschrittsbalken auf der mobilen Seite zu implementieren.
Lassen Sie uns zunächst das HTML-Layout erstellen
<div class=progress-wrapper> <div class=progress></div> <div class=progress-btn></div></div>
Der CSS-Teil wurde hier weggelassen
Holen Sie sich das dom-Element und initialisieren Sie den Berührungsstartpunkt und den Abstand zwischen der Schaltfläche und dem ganz linken Teil des Containers
const progressWrapper = document.querySelector('.progress-wrapper')const progress = document.querySelector('.progress')const progressBtn = document.querySelector('.progress-btn')const progressWrapperWidth = progressWrapper.offsetWidthlet touchPoint = 0let btnLeft = 0Achten Sie auf das Touchstart-Ereignis
progressBtn.addEventListener('touchstart', e => { let touch = e.touches[0] touchPoint = touch.clientX // Anfangsposition der Berührung abrufen btnLeft = parseInt(getComputedStyle(progressBtn, null)['left'] , 10 ) // IE-Browserkompatibilität hier ignorieren})Achten Sie auf Touchmove-Ereignisse
progressBtn.addEventListener('touchmove', e => {e.preventDefault() let touch = e.touches[0] let diffX = touch.clientX - touchPoint // Berechnen Sie den geänderten Abstand anhand der Differenz zwischen der aktuellen Position und der Anfangsposition position let btnLeftStyle = btnLeft + diffX // Definiere einen neuen linken Wert für die Schaltfläche touch.target.style.left = btnLeftStyle + 'px' progress.style.width = (btnLeftStyle / progressWrapperWidth) * 100 + '%' // Berechnen Sie den Längenprozentsatz des Fortschrittsbalkens durch das Verhältnis des linken Werts der Schaltfläche zur Länge des Fortschrittsbalkencontainers})Durch eine Reihe logischer Operationen wurde unser Fortschrittsbalken grundsätzlich implementiert, es wurde jedoch ein Problem entdeckt. Wenn die Berührungsposition den Fortschrittsbalken-Container überschreitet, treten einige Einschränkungen auf.
if (btnLeftStyle > progressWrapperWidth) { btnLeftStyle = progressWrapperWidth } else if (btnLeftStyle < 0) { btnLeftStyle = 0}Zu diesem Zeitpunkt wurde eine einfache mobile Bildlaufleiste implementiert
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich ist. Ich hoffe auch, dass jeder das VeVb Wulin Network unterstützt.