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

Vue realisiert Bildwechseleffekt

In diesem Artikelbeispiel wird der spezifische Co...

Nodejs implementiert Intranet-Penetrationsdienst

Inhaltsverzeichnis 1. Proxy im LAN 2. Intranet-Pe...

Eine Minute, um die Laufruhe von HTML+Vue+Element-UI zu erleben

Technik-Fan html-Webseite, müssen Sie wissen Von ...

Beispiel einer Methode zur Fehlerbehebung beim Lösen von Nginx-Portkonflikten

Problembeschreibung Ein Spring + Angular-Projekt ...

Beispiel für die Wertübertragung in einem HTML-Formular über die Get-Methode

Die google.html-Schnittstelle ist wie in der Abbil...

Einfaches Beispiel für die Leistungsoptimierung von MySQL-SQL-Anweisungen

Einfaches Beispiel für die Leistungsoptimierung v...

Detaillierte Erläuterung der Laderegeln der require-Methode in node.js

Laderegeln der Require-Methode Laden aus dem Cach...

So verfolgen Sie Benutzer mit JS

Inhaltsverzeichnis 1. Synchrones AJAX 2. Asynchro...

Preistabelle mit CSS3 implementiert

Ergebnis: Implementierungscode html <div id=&q...

Webdesign-Prinzipien für Hyperlinks

<br />Verwandte Artikel: 9 praktische Tipps ...

MySQL Series 6-Benutzer und Autorisierung

Inhaltsverzeichnis Tutorial-Reihe 1. Benutzerverw...

So starten Sie ein Vue-Projekt mit dem M1 Pro-Chip

Inhaltsverzeichnis Einführung Homebrew installier...