Ü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

Detaillierte Erläuterung der Überwachung der NVIDIA GPU-Nutzung unter Linux

Bei der Verwendung von TensorFlow für Deep Learni...

Vue – Erste Schritte mit der Wettervorhersage

In diesem Artikelbeispiel wird der spezifische Co...

Mehrere Möglichkeiten zum Einfügen von SVG in HTML-Seiten

SVG (Scalable Vector Graphics) ist ein Bildformat...

Der Unterschied zwischen Löschen, Abschneiden und Löschen und wie man wählt

Vorwort Letzte Woche fragte mich ein Kollege: „Br...

Mit JS in zehn Minuten die Existenz von Elementen in einem Array bestimmen

Vorwort In der Front-End-Entwicklung müssen Sie h...

So verwenden Sie iostat zum Anzeigen der IO-Leistung von Linux-Festplatten

TOP-Beobachtung: Der Prozentsatz der CPU-Zeit, de...

Detaillierte Erläuterung des zeitgesteuerten Protokollschneidens von Nginx

Vorwort Standardmäßig werden Nginx-Protokolle in ...

Eine detaillierte Einführung in die Verwendung von Blockkommentaren in HTML

Allgemeine Kommentare in HTML: <!--XXXXXXXX--&g...