JavaScript zum Erzielen eines ausgewogenen digitalen Scroll-Effekts

JavaScript zum Erzielen eines ausgewogenen digitalen Scroll-Effekts

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.
Da ich noch nie einen solchen Effekt erzielt hatte, wusste ich zunächst nicht, wie ich ihn erreichen sollte. Ich suchte auf GitHub nach einer entsprechenden Bibliothek und sah eine Bibliothek mit dem höchsten Stern, stellte jedoch fest, dass sie von jQuery abhängig war und nicht über npm Paket eingeführt werden konnte. Es fühlt sich unnötig an. Das ursprüngliche Projekt basierte auf dem react Framework, dessen Ziel darin besteht, DOM-Operationen zu minimieren. Um das Scroll-Problem zu lösen, muss jQuery eingeführt werden, was nicht angemessen erscheint. Ich habe mich also für die Selbstumsetzung entschieden, mir zuerst die Ideen anderer angeschaut und es dann selbst umgesetzt.

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 div mit Intervallen von 0 bis zur entsprechenden Zahl erstellt werden. Der Inhalt der Divs sind die entsprechenden Zahlen, genau wie ein langes vertikales Blatt mit Zahlen von 0 bis n, und dann innerhalb einer bestimmten Zeit von 0 bis zur Zielzahl gezogen wird.

3. Implementierungsprozess

Da wir es kapseln müssen, schreiben wir es in Form class . Kommen wir ohne weitere Umschweife direkt zum Code.

/**
 * 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:
  • js realisiert digitale Scrolling-Spezialeffekte
  • Vue.js realisiert digitale Scroll- und Flip-Effekte auf großen Bildschirmen
  • CountUp.js realisiert digitalen Scroll-Effekt
  • Detaillierte Erklärung zur Verwendung des digitalen Scroll-Plugins CountUp.js
  • CountUp.js realisiert den Effekt des digitalen Scroll-Mehrwerts

<<:  Mit HTML+CSS3 implementierte Anmeldeschnittstelle

>>:  Verwenden Sie Meta, um den Traffic-Cache zu löschen und die Seite bei jedem Besuch zu aktualisieren, um das Debuggen zu vereinfachen

Artikel empfehlen

RHCE installiert Apache und greift mit einem Browser auf IP zu

1. at ist so konfiguriert, dass nach 5 Stunden „D...

Unterscheidung zwischen Linux-Hardlinks und Softlinks

Unter Linux gibt es zwei Arten von Dateiverbindun...

So implementieren Sie das Builder-Muster in Javascript

Überblick Das Builder-Muster ist ein relativ einf...

Hinweise zum erweiterten Zeichengerätetreiber des Linux-Kernel-Gerätetreibers

/****************** * Erweiterter Zeichengerätetr...

CSS-Position feste linke und rechte Doppelpositionierungs-Implementierungscode

CSS-Position Das Positionsattribut gibt den Posit...

Detaillierte Erklärung der Grundkonzepte von HTML

Was ist HTML? HTML ist eine Sprache zur Beschreib...

Beispiel für eine Nginx-Cache-Konfiguration

Beim Entwickeln und Debuggen einer Webanwendung s...

Analyse der Ursache des Docker-Fehlers Beendet (1) vor 4 Minuten

Docker-Fehler 1. Überprüfen Sie die Ursache Docke...

So verwenden Sie den Linux-Befehl seq

1. Befehlseinführung Mit dem Befehl seq (Sequence...