1. Hintergrund zur Umsetzung Letzte Woche mussten wir bei einer Aktivität, bei der Benutzer Aufgaben erledigten und rote Umschläge erhielten, ein Popup-Fenster zum Empfangen roter Umschläge implementieren, nachdem der Benutzer auf eine Schaltfläche geklickt hatte. Wenn das Popup-Fenster geschlossen wurde und der Benutzer zur ursprünglichen Seite zurückkehrte, musste die Saldenzahl auf der Seite den Effekt des Scrollens jeder Ziffer anzeigen. 2. Umsetzungsideen Tatsächlich geht es darum, die eingehende n-stellige Zahl durch Rollen in jede zu würfelnde Zahl aufzuteilen und dann dynamisch einen Container zu erstellen, der die entsprechenden zu jeder Ziffer gewürfelten Zahlen enthält, und diesen dann in den eingehenden Zielcontainer einzufügen. Das Scrollen zu jeder entsprechenden Zahl kann erreicht werden, indem dynamisch 3. Implementierungsprozess Da wir es kapseln müssen, schreiben wir es in Form /** * Klasse, die den digitalen Scroll-Effekt implementiert*/ Klasse DigitScroll { Konstruktor(Optionen) { //DOM des Containers abrufen. Wenn nicht, wird ein Fehler ausgegeben this.container = document.querySelector(options.container); wenn (!dieser.container) { throw Error("kein Container"); } this.container.style.overflow = "versteckt"; dieser.Container.Stil.Anzeige = "flex"; //Die Höhe des sichtbaren Containers ist gleichzeitig das Scrollintervall. Die Höhe des Containers muss festgelegt werden, andernfalls beträgt der Standardwert 30px this.rollHeight = parseInt(getComputedStyle(this.container).height) || 30; diese.Container.Stil.Höhe = diese.Rollhöhe + "px"; } rollen(num) { // Die zum Scrollen übergebene Zahl aufteilen und den Container jeder Ziffer initialisieren this.initDigitEle(num); const numEles = this.container.querySelectorAll(".single-num"); // Durchlaufe und erzeuge die Scroll-Warteschlange für jede Ziffer. Wenn der Scroll beispielsweise 7 erreicht, erzeuge 7 Divs mit den Inhalten 0, 1, 2, 3, 4, 5, 6 und 7 für die Scroll-Animation [...numEles].forEach((numEle, index) => { Konstante aktuelle Nummer = 0; sei targetNum = Zahl(diese.numberArr[index]); if (aktuelleNummer >= ZielNummer) { ZielNummer = ZielNummer + 10; } sei cirNum = curNum; // Dokumentfragmente zusammenfügen und gleichzeitig in den Knoten einfügen const fragment = document.createDocumentFragment(); // Generiere Divs entsprechend der Zielzahl von 0 bis während (Zielnummer >= Kreisnummer) { const ele = document.createElement("div"); ele.innerHTML = cirNum % 10; cirNum++; fragment.appendChild(ele); } numEle.innerHTML = ""; AnzahlEle.AnhängenUntergeordnetesElement(Fragment); //Position zurücksetzen numEle.style.cssText += "-webkit-transition-duration:0s;-webkit-transform:translateY(0)"; setzeTimeout(() => { numEle.style.cssText += `-webkit-transition-duration:1s;-webkit-transform:translateY(${ -(Zielnummer - aktuelleNummer) * diese.Rollhöhe }px);`; }, 50); }); } // Initialisiere den Container initDigitEle(num) { //Zahlenaufteilung in Ziffern const numArr = num.toString().split(""); // Dokumentfragmente zusammenfügen und gleichzeitig in den Knoten einfügen const fragment = document.createDocumentFragment(); numArr.fürJeden((Artikel) => { const el = document.createElement("div"); // Zahlen werden gescrollt, Nicht-Zahlen wie . werden nicht gescrollt if (/[0-9]/.test(item)) { el.className = "Einzelnum"; el.style.height = this.rollHeight + "px"; el.style.lineHeight = this.rollHeight + "px"; } anders { el.innerHTML = Element; el.className = "keine Bewegung"; el.style.verticalAlign = "unten"; } // el.style.float='links'; fragment.appendChild(el); }, []); dieser.container.innerHTML = ""; dies.container.appendChild(fragment); //Speichern Sie die scrollenden Zahlen this.numberArr = numArr.filter((item) => /[0-9]/.test(item)); } } Dies ist das Ende dieses Artikels über die Verwendung von JavaScript zum Erzielen von scrollenden Kontoständen. Weitere Informationen zur Verwendung von JavaScript zum Erzielen von scrollenden Kontoständen finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Mit HTML+CSS3 implementierte Anmeldeschnittstelle
[LeetCode] 181.Mitarbeiter verdienen mehr als ihr...
1. MySQL herunterladen 1. Melden Sie sich auf der...
In diesem Artikel wird der spezifische Code von j...
In diesem Artikel möchten wir eine Sammlung von 2...
„Seiten-Screenshot“ ist eine Anforderung, die häu...
In diesem Artikelbeispiel wird der spezifische Ja...
So ändern Sie den Bild-Hyperlink, wenn Sie mit der...
1. Problembeschreibung Der im Docker-Container in...
Inhaltsverzeichnis Klasse void zeigen ES6-Pfeilfu...
serializable Serialisierung (kein Problem) Transa...
Einführung in jsvc In der Produktion sollte Tomca...
Dieser Artikel zeichnet die Installations- und Ko...
1. ip_hash: ip_hash verwendet einen Quelladressen...
【1】existiert Verwenden Sie eine Schleife, um die ...
Inhaltsverzeichnis Vorwort Bedarfsanalyse Mysql-B...