CSS3 realisiert die Mask Barrage-Funktion

CSS3 realisiert die Mask Barrage-Funktion

Kürzlich habe ich auf der B-Station einen Sperrfeuereffekt namens Smart Anti-Blocking Barrage gesehen, das legendäre maskierte Sperrfeuer. Nach dem Einschalten ist der Effekt wahrscheinlich so

Sie müssen sich keine Sorgen mehr machen, dass die unvergleichliche Schönheit Ihres Idols oder Ihrer Göttin durch auffällige Kommentare blockiert wird. Ist das nicht magisch?

Das Implementierungsprinzip ähnelt tatsächlich der Maske in PS, d. h. dem „Verstecken“ eines Teils des Bildes. Was wir hier verwenden müssen, ist das Maskenattribut von CSS3.

CSS-Masken

Die Geschichte des CSS-Maskenattributs ist sehr lang, sogar länger als die des CSS3-Rahmenradius und anderer Attribute. Es erschien erstmals im Safari-Browser, fast schon 2009. Damals war jedoch der Internet Explorer noch die dominierende Kraft und wurde aus Kompatibilitätsgründen nicht weiter gefördert. Aber jetzt gehört der Internet Explorer der Vergangenheit an, Sie können ihn also beruhigt verwenden.

Es ist auch relativ einfach zu bedienen

<img src="ps1.jpg" class="mask-image">

Der CSS-Code lautet wie folgt:

.Maskenbild {
    Breite: 250px;
    Höhe: 187,5px;
    -webkit-mask-image: URL (Maske.png);
    Maskenbild: URL (Maske.png);
}

Die Maske kann ein CSS3-Farbverlauf oder ein halbtransparentes PNG-Bild sein. Wenn der Alphawert des Maskenelements 0 ist, deckt es die darunter liegenden Elemente ab. Wenn er 1 ist, wird der Inhalt darunter vollständig angezeigt. Die Wirkung ist wahrscheinlich folgende:

Weitere Eigenschaften und Parameter der Maske werden hier nicht einzeln untersucht. Weitere Einzelheiten finden Sie in diesem Artikel: https://www.zhangxinxu.com/wordpress/2017/11/css-css3-mask-masks/

Nun, mit dieser Eigenschaft können wir den maskierten Bullet-Screen problemlos implementieren.

Zunächst benötigen wir eine Basiskarte, die als Bild eines bestimmten Frames des Videos simuliert wird.

Dann brauchen wir eine Maske, um die Zeichen im Hintergrund abzudecken

Der Anzeigecode lautet wie folgt:

HTML-Teil:

<div Klasse="Container">
    <div Klasse="Barrage-Wrapper">
    </div>
  </div>

CSS-Teil:

.container {
  Breite: 900px;
  Höhe: 506px;
  Hintergrund: URL (Banner.jpg) No-Repeat-Center;
  Hintergrundgröße: Abdeckung;
  
}
.Barrage-Wrapper {
  Breite: 100 %;
  Höhe: 100%;
  Position: relativ;
  Maskenbild: URL (Maske.png);
  -webkit-mask-image: URL (Maske.png);
}

Schauen wir uns zunächst die Wirkung an:

Also, nichts zu sehen. Tatsächlich aber wurde die Figur maskiert.

Fügen Sie etwas Sperrfeuer hinzu, um den Effekt auszuprobieren.

Fügen Sie Bullet-Screen-Animationseffekte und -Stile hinzu

@Keyframes Sperrfeuer{
  aus{
    links: 100 %;
    transformieren:übersetzenX(0);
  }
  Zu{
    links: 0;
    transformieren: übersetzenX(-100%);
  }
}
.Block{
  Position: absolut;
  oben: 50 %;
  links: 100 %;
  Breite: 100 %;
  Farbe: #fff;
}

JS-Skript für Sperrfeuer hinzufügen

// Generiere eine Zufallszahl von 0 bis zum Bereich const geneNumber = range => Math.floor(Math.random() * range)
    var Sperrfeuer = [
      ‚Airdrop erfolgreich‘, ‚Warnung vor echtem Geruch‘, ‚Freundliche Erinnerung, bitte vorher Lautstärke aufdrehen/schnell Kopfhörer aufsetzen‘, ‚Bullet-Displayschutz! Schutzbombardement! Schutzbombardement! ', 'Alle oben genannten Unternehmen sind bankrott gegangen', 'Viel Energie voraus', 'Ich habe noch nie eine so schamlose Person gesehen', 'Herzlichen Glückwunsch zum Ende',
      ‚Airdrop erfolgreich‘, ‚Warnung vor echtem Geruch‘, ‚Freundliche Erinnerung, bitte vorher Lautstärke aufdrehen/schnell Kopfhörer aufsetzen‘, ‚Bullet-Displayschutz! Schutzbombardement! Schutzbombardement! ', 'Alle oben genannten Unternehmen sind bankrott gegangen', 'Viel Energie voraus', 'Ich habe noch nie eine so schamlose Person gesehen', 'Herzlichen Glückwunsch zum Ende',
      ‚Airdrop erfolgreich‘, ‚Warnung vor echtem Geruch‘, ‚Freundliche Erinnerung, bitte vorher Lautstärke aufdrehen/schnell Kopfhörer aufsetzen‘, ‚Bullet-Displayschutz! Schutzbombardement! Schutzbombardement! ', 'Alle oben genannten Unternehmen sind bankrott gegangen', 'Viel Energie voraus', 'Ich habe noch nie eine so schamlose Person gesehen', 'Herzlichen Glückwunsch zum Ende',
      ‚Airdrop erfolgreich‘, ‚Warnung vor echtem Geruch‘, ‚Freundliche Erinnerung, bitte vorher Lautstärke aufdrehen/schnell Kopfhörer aufsetzen‘, ‚Bullet-Displayschutz! Schutzbombardement! Schutzbombardement! ', 'Alle oben genannten Unternehmen sind bankrott gegangen', 'Viel Energie voraus', 'Ich habe noch nie eine so schamlose Person gesehen', 'Herzlichen Glückwunsch zum Ende',
      ‚Airdrop erfolgreich‘, ‚Warnung vor echtem Geruch‘, ‚Freundliche Erinnerung, bitte vorher Lautstärke aufdrehen/schnell Kopfhörer aufsetzen‘, ‚Bullet-Displayschutz! Schutzbombardement! Schutzbombardement! ', 'Alle oben genannten Unternehmen sind bankrott gegangen', 'Viel Energie voraus', 'Ich habe noch nie eine so schamlose Person gesehen', 'Herzlichen Glückwunsch zum Ende',
      ‚Airdrop erfolgreich‘, ‚Warnung vor echtem Geruch‘, ‚Freundliche Erinnerung, bitte vorher Lautstärke aufdrehen/schnell Kopfhörer aufsetzen‘, ‚Bullet-Displayschutz! Schutzbombardement! Schutzbombardement! ', 'Alle oben genannten Unternehmen sind bankrott gegangen', 'Viel Energie voraus', 'Ich habe noch nie eine so schamlose Person gesehen', 'Herzlichen Glückwunsch zum Ende',
      ‚Airdrop erfolgreich‘, ‚Warnung vor echtem Geruch‘, ‚Freundliche Erinnerung, bitte vorher Lautstärke aufdrehen/schnell Kopfhörer aufsetzen‘, ‚Bullet-Displayschutz! Schutzbombardement! Schutzbombardement! ', 'Alle oben genannten Unternehmen sind bankrott gegangen', 'Viel Energie voraus', 'Ich habe noch nie eine so schamlose Person gesehen', 'Herzlichen Glückwunsch zum Ende',
    ]
    const wrapper = document.querySelector('.barrage-wrapper')
    für (const item of barrages) {
      const block = dokument.createElement('div')
      block.classList.add('block')
      block.style.top = geneNumber(486) + 'px' // Die Position der Aufzählungsnachricht darf die Höhe des Containers nicht überschreiten block.style.animation = `barrage ${geneNumber(20)}s linear ${geneNumber(60)}s` // Zufälliger Animationseffekt block.textContent = item
      Wrapper.AnhängenKind(Block)
    }

Schauen Sie sich den Effekt noch einmal an

Zusammenfassen

Das Obige ist die Einführung des Herausgebers in die maskierte Sperrfunktion basierend auf CSS3. Ich hoffe, es wird allen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten!

<<:  Zusammenfassung der XHTML-Tags auf Blockebene

>>:  Lösen Sie das Problem der unsicheren Docker x509-Registrierung

Artikel empfehlen

So legen Sie die Anzahl der MySQL-Verbindungen fest (zu viele Verbindungen)

Während der Verwendung von MySQL wurde festgestel...

Zusammenfassung der Kompatibilitätsprobleme beim Flex-Layout

1. W3C-Versionen von Flex Version 2009 Flag: Anze...

JavaScript Canvas implementiert Grafiken und Text mit Schatten

Verwenden Sie Canvas, um Grafiken und Text mit Sc...

Vue.js implementiert Musikplayer

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

5 einfache Möglichkeiten, Speicherplatz auf Ubuntu freizugeben

Vorwort Die meisten Benutzer führen diesen Vorgan...

Alibaba Cloud Server Ubuntu Konfigurations-Tutorial

Da für den Import benutzerdefinierter Ubuntu-Imag...

CSS3-Eigenschaft line-clamp steuert die Verwendung von Textzeilen

Beschreibung: Begrenzen Sie die Anzahl der Textze...

SQL-Implementierung von LeetCode (184. Das höchste Gehalt der Abteilung)

[LeetCode] 184. Abteilung Höchstes Gehalt Die Mit...

So installieren und verwenden Sie Cockpit unter CentOS 8/RHEL 8

Cockpit ist ein webbasiertes Serververwaltungstoo...

Beispiel für eine automatische Importmethode für allgemeine Vue3.0-Komponenten

1. Voraussetzungen Wir verwenden zum Importieren ...

Ausführliches Tutorial zur Installation von MySql 5.6.35 winx64

Hinweis: Beim Projektstart ist kein Fehler aufgru...