Ü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

So zeigen Sie Bilder im TIF-Format im Browser an

Der Browser zeigt Bilder im TIF-Format an Code kop...

Eine kurze Erläuterung der Schriftarteinstellungen in Webseiten

Das Festlegen der Schriftart für die gesamte Site...

Implementierung der Codeaufteilung von Webpack3+React16

Projekthintergrund Seit kurzem gibt es ein Projek...

MySql-Lerntag 03: Verbindungs- und Abfragedetails zwischen Datentabellen

Primärschlüssel: Schlagwort: Primärschlüssel Funk...

So ändern Sie den MySQL-Zeichensatz utf8 in utf8mb4

Wenn für MySQL 5.5 der Zeichensatz nicht festgele...

Beispiel für die Verwendung von UserMap in IMG

usemap ist ein Attribut des <img>-Tags, das ...

So verwenden Sie vue3 zum Erstellen einer Materialbibliothek

Inhaltsverzeichnis Warum brauchen wir eine Materi...

Proxy realisiert das Prinzip der bidirektionalen Bindung von Vue3-Daten

Inhaltsverzeichnis 1. Vorteile von Proxy gegenübe...

Detaillierte Erläuterung der Implementierung der Nginx-Prozesssperre

Inhaltsverzeichnis 1. Die Rolle der Nginx-Prozess...

JavaScript-Grundlagen: Funktion zur sofortigen Ausführung

Inhaltsverzeichnis Funktionsformat sofort ausführ...