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

Implementierungsschritte zur Installation eines FTP-Servers in Ubuntu 14.04

Inhaltsverzeichnis Installieren Softwareverwaltun...

Schritte zum Upgrade von CentOS6 auf Glibc

Inhaltsverzeichnis Hintergrund Kompilieren Sie gl...

Einrichten eines Proxyservers mit nginx

Nginx kann seine Reverse-Proxy-Funktion zum Imple...

CSS3-Animation – Erläuterung der Funktion „Steps“

Als ich mir in letzter Zeit einige CSS3-Animation...

Detaillierte Erklärung des Nginx Reverse-Proxy-Beispiels

1. Reverse-Proxy-Beispiel 1 1. Erzielen Sie den E...

Mysql speichert Baumstruktur durch Adjazenzliste (Adjazenzliste)

Der folgende Inhalt stellt den Prozess und die Lö...

So ersetzen Sie alle Tags im HTML-Text

(?i) bedeutet, dass die Groß-/Kleinschreibung nich...

So lassen Sie DOSBox nach dem Start automatisch Befehle ausführen

Mit DOSBox können Sie DOS unter Windows simuliere...

So verwenden Sie die JSX-Syntax richtig in Vue

Inhaltsverzeichnis Vorwort Virtueller DOM Was ist...

So verwenden Sie http und WebSocket in CocosCreator

Inhaltsverzeichnis 1. HttpGET 2. HTTP POST WebSoc...

HTML-Tbody-Verwendung

Strukturierte Tabelle (nur IExplore) 1) Gruppieren...