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

Detailliertes Tutorial zur Installation und Konfiguration von Nginx unter Centos7

Hinweis: Der grundlegende Verzeichnispfad für die...

Tutorial zur Installation von MySQL 5.6 auf CentOS 6.5

1. Laden Sie das RPM-Paket für Linux herunter htt...

Best Practices für MySQL-Upgrades

MySQL 5.7 fügt viele neue Funktionen hinzu, wie z...

MySQL-Datenbankindizes und -Transaktionen

Inhaltsverzeichnis 1. Inhaltsverzeichnis 1.1 Konz...

Was sind die Unterschiede zwischen xHTML- und HTML-Tags?

Alle Tags müssen klein geschrieben sein In XHTML m...

Zusammenfassung der verschiedenen Haltungen der MySQL-Berechtigungseskalation

Inhaltsverzeichnis 1. Schreiben Sie Webshell in d...

Übung zum Hochladen von Element-Avataren

Dieser Artikel verwendet die offizielle Element-W...

Sollte ich JQuery aufgeben?

Inhaltsverzeichnis Vorwort Was soll verwendet wer...