Verwenden Sie natives JS, um den Scroll-Effekt des Live-Bullet-Bildschirms zu simulieren

Verwenden Sie natives JS, um den Scroll-Effekt des Live-Bullet-Bildschirms zu simulieren

1. Grundprinzipien

Teilen Sie zunächst den Live-Übertragungsbereich in zehn Teile auf (ich persönlich teile ihn der Einfachheit halber in zehn Teile auf), platzieren Sie den Eingabeinhalt zufällig in den zehn unterteilten Bereichen, fügen Sie ihn außerhalb der Ansicht auf der rechten Seite der zehn unterteilten Bereiche ein und rufen Sie dann die Animation auf, um sich mit zufälliger Geschwindigkeit von rechts nach links zu bewegen. Wenn sie sich außerhalb der Ansicht des linken Bereichs bewegt, entfernen Sie dieses Scroll-Element.

2. Spezifischer Code

<div Klasse="Videoinhalt verschieben">
    <div Klasse="Videoinhalt">
        <div Klasse="video_div" id="video_view"></div>
        <div Klasse="Scrollinhalt">
            <ul Klasse="scroll_ul" id="scroll_ul_id"></ul> 
        </div>
    </div>
    <div Klasse="Eingabeinhalt">
            <input type="text" class="input_text" maxlength="30" placeholder="Bitte geben Sie das Sperrfeuer ein, das Sie senden möchten" id="input_text_id">
            <button type="button" class="button_btn" id="send_btn">Senden</button>
    </div>
</div>

Die konkreten Auswirkungen sind wie folgt:

Der js-Code lautet wie folgt

let inputText = document.getElementById("input_text_id");//Eingabeeingabefeldlet scrollContent = document.getElementById("scroll_ul_id");//Nebenchatleistelet videoView = document.getElementById("video_view");//Videobereichlet videoWidth = videoView.offsetWidth;//Gesamtbreite des Liveübertragungsbereichslet listHeight = videoView.offsetHeight/10;//Höhe jeder Ebene des Liveübertragungsbereichslet listTopNum = [0,1,2,3,4,5,6,7,8,9];//Die Höhe des Liveübertragungsbereichs in 10 Ebenen aufteilendocument.getElementById("send_btn").addEventListener("click",function(){//Auf die Schaltfläche „Senden“ wartenlet value = inputText.value;//Wert des Eingabefelds abrufenif(!value) return;
    appendDom(value); //Den Wert des Eingabefelds in den Scroll-Chat einfügen createVideoBulletChatDom(value); //Den Wert des Eingabefelds in den Bullet-Bildschirm einfügen inputText.value = ''; //Eingabefeld löschen scrollContent.scrollTop = scrollContent.scrollHeight; //Automatisch nach unten scrollen })
function appendDom(value){//Füge den Wert des Eingabefelds in den Scroll-Chat ein let li = document.createElement("li");
    li.setAttribute("Klasse","scroll_li");
    li.innerHTML = Wert;
    scrollContent.appendChild(li);
}
let speedArr = ['normal','schnell','schneller'];
Funktion createVideoBulletChatDom(Wert){//Fügen Sie den Wert des Eingabefelds in den Bullet-Bildschirm ein let num = listTopNum[Math.floor((Math.random()*listTopNum.length))];
    let p = document.createElement("p");
    p.setAttribute("Klasse","video_p");
    p.style.top = (Zahl * 60) + "px";
    p.style.left = Videobreite + "px";
    p.innerHTML = Wert;
    videoView.appendChild(p);
    lass Geschwindigkeit = GeschwindigkeitArr[Math.floor((Math.random()*GeschwindigkeitArr.Länge))];
    Animate(p,speed); //Scrolling-Animation}
lass animateType = {
    'normal':5,
    'schnell':10,
    'schneller':15
}
Funktion Animate(dom,speed){//Scrolling-Animation let domWidth = dom.offsetWidth;//Die Breite des aktuellen Bullet-Bildschirmelements let distance = videoWidth;//Die Gesamtbreite des Live-Übertragungsbereichs Geschwindigkeit? Geschwindigkeit: „normal“;
    let Intervall = Animationstyp[Geschwindigkeit]
    let timer = setzeIntervall(Funktion(){
            Entfernung -= Intervall;
            dom.style.left = Abstand + "px";
            wenn(Abstand <= -domWidth){
                Intervall löschen(Timer);
                videoView.removeChild(dom); //Lösche das Label, das aus dem Bildschirm gescrollt ist}
    },50)
}

Ermitteln Sie entsprechend den zehn Teilen (listTopNum), in die der Live-Übertragungsbereich unterteilt ist, die Höhe jeder Ebene (listHeight) und ändern Sie dann die Oberseite der Bildlaufbeschriftung, um sie in verschiedene Bereiche der zehn Teile einzufügen.

Wenn Sie ein Scroll-Label erstellen, erstellen Sie eine Scroll-Animation (Funktion Animieren). Die Standardgeschwindigkeit ist normal. Jedes Mal, wenn Sie eine Animation erstellen, wird ein zufälliger Geschwindigkeitstyp (normal, schnell, schneller) übergeben. Die für jeden Bildlauf abgezogene Distanz wird entsprechend dem übergebenen Geschwindigkeitstyp geändert, um unterschiedliche Bildlaufgeschwindigkeiten zu erreichen.

Zusammenfassen

Dies ist eine Live-Scrolling-Animation, die ich aus Langeweile geschrieben habe. Wenn WebSocket hinzugefügt wird, ist eine synchrone Kommunikation zwischen mehreren Personen möglich. Ich werde es später verbessern, wenn ich nichts zu tun habe.

Den spezifischen Code finden Sie unter [:github.com/liqc-wwl/bu…] und können dort auch gleich herunterladen, um die Wirkung direkt zu sehen.

Dies ist das Ende dieses Artikels über die Verwendung von nativem JS zur Simulation des Scroll-Effekts von Live Barrage. Weitere relevante JS-Simulationen von Live Barrage-Scrolling-Inhalten 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:
  • Einfache Implementierung des JavaScript-Bullet-Screen-Effekts
  • Realisierung von Bullet-Screen-Spezialeffekten auf Basis von JavaScript
  • Beispiel für einen mit JS implementierten Video-Bullet-Screen-Effekt
  • JavaScript Live-Kommentar Barrage Bild ausschneiden Funktion Punkt Sammlung Effekt Code
  • JavaScript zum Erzielen eines Bullet-Screen-Wall-Effekts
  • JavaScript zum Erzielen eines Video-Sperreffekts (zwei Versionen)
  • Natives js, um Sperrfeuereffekt zu erzielen
  • js cavans realisiert einen statisch scrollenden Bullet-Screen
  • Eine einfache Anleitung zur Implementierung von Bullet-Screen-Effekten mit nativem JS
  • js, um einen Bullet-Screen-Flugzeugeffekt zu erzielen

<<:  So erstellen Sie mit Docker ein Basisimage der Python-Laufzeitumgebung

>>:  Spezifische Implementierungsmethoden für MySQL-Tabellen-Sharding und -Partitionierung

Artikel empfehlen

SVN-Installation und grundlegende Bedienung (grafisches Tutorial)

Inhaltsverzeichnis 1. Was ist SVN? 2. Methoden zu...

Beispielcode zum Bereitstellen von ELK mit Docker-Compose

Umfeld Host-IP 192.168.0.9 Docker-Version 19.03.2...

Zusammenfassung der Grundkenntnisse und Vorgänge der MySQL-Datenbank

Dieser Artikel erläutert anhand von Beispielen di...

Unterschiede im Stundentrennzeichen zwischen Browsern

Beim Erstellen einer Webseite verwenden Sie manchm...

Natives JS zum Erzielen von Laufschrifteffekten

Heute werde ich Ihnen einen Laufschrifteffekt zei...

Navicat für MySQL 11 Registrierungscode\Aktivierungscode-Zusammenfassung

Lesetipp: Navicat12.1 Serie Cracking und Aktivier...

Implementierung der Multi-Environment-Konfiguration (.env) des Vue-Projekts

Inhaltsverzeichnis Was ist eine Multiumgebungskon...

jQuery implementiert alle Auswahl- und umgekehrten Auswahloperationsfälle

In diesem Artikel wird der spezifische Code von j...

Beispiel für den schnellen Aufbau eines Redis-Clusters mit Docker

Was ist Redis Cluster? Redis Cluster ist eine von...

HTML erstellt eine einfache und schöne Anmeldeseite

Schauen wir uns das zunächst einmal an. HTML Quel...