Über das WeChat-Gleitproblem des UniApp-Editors

Über das WeChat-Gleitproblem des UniApp-Editors

Das Uniapp-Applet wird ein ähnliches Dropdown-Problem in WeChat haben

Die Lösung besteht darin, in der onLaunch-Methode der app.vue-Seite eine Methode hinzuzufügen, die das Herunterrutschen verhindert

dies.$nextTick(() => {
document.body.addEventListener("touchmove", this.addBodyTouchEvent, {
passiv: falsch
});
});

Nach der Lösung des Problems ist es nicht mehr möglich, die Editor-Komponente von uniApp einzufügen.

Problemumgehung

Fügen Sie diese beiden Werte in Daten hinzu

Fügen Sie Touchstart- und Touchend-Methoden hinzu, um Gleiteffekte manuell zu schreiben

touchstart(e) {
this.previewScrollTop = e.touches[0].pageY;
},
touchend(e) {
let Abstand = e.changedTouches[0].pageY - this.previewScrollTop;
wenn (Math.abs(Abstand) <= 10) {
gibt false zurück;
}
//Nicht scrollen, wenn die Distanz zu kurz ist let dom = this.$refs.editor.$el.getElementsByClassName("ql-editor")[0],
maxHeight = Math.max(0, dom.scrollHeight - dom.clientHeight), //Maximaler Höhenbereich tempData = this.scrollTop + (distance >= 0 ? -60 : 60); //Berechnen Sie die erforderlichen Höhendaten if (tempData >= maxHeight) {
this.scrollTop = maximale Höhe;
dom.scrollTop = dieses.scrollTop;
} sonst wenn (tempData <= 0) {
dies.scrollTop = 0;
dom.scrollTop = dieses.scrollTop;
} anders {
this.scrollTop = tempData;
dom.scrollTop = dieses.scrollTop;
}
}

Zu diesem Zeitpunkt tritt der Gleiteffekt auf. Das Gleiten ist jedoch nicht reibungslos.

Ich wollte einen animierten Übergangseffekt schreiben. Aber. Dieses Verschieben erfolgt mithilfe der Eigenschaft dom.scrollTop. Diese Eigenschaft gehört nicht zur CSS-Eigenschaft und kann keine CSS-Übergangsanimation verwenden

Also habe ich eine JS-Methode geschrieben.

/**
* Animation scrollt vertikal zur angegebenen Position auf der Seite* @param { } DOM-Element-Objekt* @param { Number } currentY aktuelle Position* @param { Number } targetY Zielposition*/
Exportfunktion scrollAnimation(dom, aktuellesY, ZielY) {
// Berechnen Sie die zu verschiebende Distanz. let needScrollTop = targetY - currentY;
sei _currentY = currentY;
setzeTimeout(() => {
// Die Anzahl der gleitenden Frames pro Aufruf ist jedes Mal unterschiedlich const dist = Math.ceil(needScrollTop / 10);
_currentY += abst;
dom.scrollTo(_currentY, currentY);
// Wenn die Bewegung weniger als zehn Pixel beträgt, direkt bewegen, andernfalls rekursiv aufrufen, um einen Animationseffekt zu erzielen if (needScrollTop > 10 || needScrollTop < -10) {
scrollAnimation(dom, _currentY, targetY);
} anders {
dom.scrollTo(_currentY, targetY);
}
}, 1);
}

Abrufen

touchend(e) {
let Abstand = e.changedTouches[0].pageY - this.previewScrollTop;
wenn (Math.abs(Abstand) <= 10) {
gibt false zurück;
}
//Nicht scrollen, wenn die Distanz zu kurz ist let dom = this.$refs.editor.$el.getElementsByClassName("ql-editor")[0],
maxHeight = Math.max(0, dom.scrollHeight - dom.clientHeight), //Maximaler Höhenbereich tempData = this.scrollTop + (distance >= 0 ? -60 : 60); //Berechnen Sie die erforderlichen Höhendaten if (tempData >= maxHeight) {
this.scrollTop = maximale Höhe;
dom.scrollTop = dieses.scrollTop;
} sonst wenn (tempData <= 0) {
dies.scrollTop = 0;
dom.scrollTop = dieses.scrollTop;
} anders {
this.scrollTop = tempData;
scrollAnimation(dom, 0, dies.scrollTop);
}
}

Notiz:

Diese Frage sollte ursprünglich unter Verwendung der Eigenschaft „Transform: translateY( y )“ geschrieben werden, und tatsächlich wurde dies getan.

Aber nachdem ich es getan hatte, fand ich

let dom = this.$refs.editor.$el.getElementsByClassName("ql-editor")[0]; 

Das ausgewählte Element ist hier das Element unterhalb des roten Kästchens. Beim Offset wird das gesamte Element versetzt. Das Dokument wird nicht vollständig angezeigt, aber darunter befindet sich ein großer leerer Bereich. Ich habe damals keine Screenshots gemacht. Notieren Sie die Fallstricke, auf die Sie stoßen.

Dies ist das Ende dieses Artikels über das WeChat-Gleitproblem des UniApp-Editors. Weitere verwandte Inhalte zum WeChat-Gleitproblem des UniApp-Editors finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird!

Das könnte Sie auch interessieren:
  • Ideen und Codes zur Implementierung des Wasserfall-Flow-Layouts im UniApp-Applet
  • Uniapp WeChat-Applet: Lösung bei Schlüsselfehler
  • Implementierung domänenübergreifender H5-https-Anfragen
  • Detaillierte Erklärung der globalen Variablenimplementierung von Uniapp
  • Uniapp entwickelt ein kleines Programm, um die Anzeige- und Ausblendeffekte von verschiebbaren Seitensteuerelementen zu realisieren
  • Uniapp WeChat-Applet realisiert mehrere Countdowns auf einer Seite
  • Uniapp E-Commerce-Applet implementiert 30-Minuten-Countdown für Bestellungen
  • Uniapp implementiert verschiebbare Tabs
  • Analysieren Sie, wie Uniapp den Schnittstellendomänennamen dynamisch erhält

<<:  Informationen zur Verwendung und Vorsichtsmaßnahmen von Promises in Javascript (empfohlen)

>>:  Vue-Element el-transfer fügt Drag-Funktion hinzu

Artikel empfehlen

Häufige CSS-Fehler und Lösungen

Code kopieren Der Code lautet wie folgt: Untersch...

Detailliertes Beispiel für die Verwendung einer asynchronen JS-Fetch-Anforderung

Inhaltsverzeichnis Asynchronität verstehen abrufe...

So richten Sie Referer in Nginx ein, um Bilddiebstahl zu verhindern

Wenn die Bilder des Servers von anderen Websites ...

Einführung in Linux-Komprimierungs- und Dekomprimierungsbefehle

Inhaltsverzeichnis Gängige Komprimierungsformate:...

Einfache Schritte zum Schreiben benutzerdefinierter Anweisungen in Vue3.0

Vorwort Vue bietet eine Fülle integrierter Anweis...

Untersuchung der Wirkung der durch JS realisierten Seitenseitenleiste

Inhaltsverzeichnis Entdecken Sie: Anwendung von D...

So installieren Sie Git unter Linux

1. Einleitung Git ist ein kostenloses, verteiltes...

Ausführliche Erläuterung der HTML-Grundlagen (Teil 1)

1. Das WEB verstehen Webseiten bestehen hauptsäch...

Beispiel für das Erreichen eines Deckeneffekts mit dem WeChat-Applet

Inhaltsverzeichnis 1. Umsetzung 2. Probleme 3. Üb...

HTML ist die zentrale Grundlage für die Entwicklung von WEB-Standards

HTML-zentrierte Front-End-Entwicklung entspricht p...

Jenkins+Gitlab+Nginx Bereitstellung einer Front-End-Anwendung

Inhaltsverzeichnis Zugehörige Abhängigkeitsinstal...