Ü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

Grundlegende Anwendungsmethoden für eingebettete und externe JavaScript-Links

Inhaltsverzeichnis Grundlegende Anwendung eingebe...

JavaScript Canvas-Textuhr

In diesem Artikelbeispiel wird der spezifische Co...

So sperren Sie eine virtuelle Konsolensitzung unter Linux

Wenn Sie an einem gemeinsam genutzten System arbe...

MySQL NULL-Datenkonvertierungsmethode (unbedingt lesen)

Wenn Sie MySQL zum Abfragen der Datenbank verwend...

XHTML verwendet einige veraltete Elemente in HTML nicht mehr

Wenn wir CSS-Webseitenlayouts erstellen, wissen wi...

Vue elementUI implementiert Baumstrukturtabelle und Lazy Loading

Inhaltsverzeichnis 1. Ergebnisse erzielen 2. Back...

So konfigurieren Sie Umgebungsvariablen in einer Linux-Umgebung

JDK-Downloadadresse: http://www.oracle.com/techne...

Detaillierte Erklärung der CocosCreator-Optimierung DrawCall

Inhaltsverzeichnis Vorwort Was ist DrawCall Welch...

Eine dauerhafte Lösung für MySQLs Unfähigkeit, Chinesisch zu erkennen

In den meisten Fällen unterstützt MySQL Chinesisc...

Detaillierte Schritte zur Installation des NERDTree-Plugins in Vim unter Ubuntu

NERDTree ist ein Dateisystembrowser für Vim. Mit ...

Analyse des Problems der Hyper-V-Installation unter CentOS 8

CentOS 8 ist schon seit längerem auf dem Markt. A...

Vue3 Vue CLI-Konfiguration für mehrere Umgebungen

Inhaltsverzeichnis 1. Einleitung 2. Umschalten 1....

Grundlegende Ideen und Codes zur Implementierung von Videoplayern in Browsern

Inhaltsverzeichnis Vorwort Zusammenfassung der Au...

Detaillierte Erklärung der Rahmen- und Regelattribute der Tabelle in HTML

Die Rahmen- und Regelattribute des Tabellentags k...

Einfaches Schreiben von gespeicherten MySQL-Prozeduren und -Funktionen

Was ist eine gespeicherte Prozedur? Einfach ausge...